| νλͺ© | λ΄μ© |
|---|---|
| νλ‘μ νΈ μ ν | Spring Boot κΈ°λ° μΉ μ ν리μΌμ΄μ (μΌμ΄λΈ κ΄λ¦¬ μμ€ν ) |
| νλ μμν¬ | Spring Boot 1.4.4.RELEASE, Thymeleaf |
| λ°μ΄ν°λ² μ΄μ€ | PostgreSQL 42.2.2, MyBatis ORM, HikariCP 컀λ₯μ ν |
| 보μ | Spring Security + BCrypt μνΈν, μν κΈ°λ° μ κ·Ό μ μ΄ (RBAC) |
| μ£Όμ κΈ°λ₯ | CMS(μ¬μ΄νΈ/λΉλ©/ν¨λ κ΄λ¦¬), IPAM(IP μ£Όμ κ΄λ¦¬), λμ보λ/μμ ―, μ€μκ° λͺ¨λν°λ§ (WebSocket) |
| λΉλ λꡬ | Maven |
| Java λ²μ | 1.7 |
| νμΌ μ | Java 59κ°, Template 100κ° μ΄μ |
| νλͺ© | κ° |
|---|---|
| νλ‘μ νΈ μ΄λ¦ | LSCable CMS |
| λ²μ | 2.0 |
| ν¨ν€μ§ | com.i52soft.lscable.cms |
| νλ‘μ νΈ μ ν | Spring Boot μΉ μ ν리μΌμ΄μ |
LSCable CMS V2λ λ€νΈμν¬ μΈνλΌ κ΄λ¦¬λ₯Ό μν μΌμ΄λΈ κ΄λ¦¬ μμ€ν μ λλ€. μΉ κΈ°λ° UIλ₯Ό ν΅ν΄ μΌμ΄λΈ μ°κ²°, λ€νΈμν¬ μ₯λΉ, IP μ£Όμ, λ°μ΄ν°μΌν° μΈνλΌλ₯Ό κ΄λ¦¬ν μ μμ΅λλ€.
| κ΅¬λΆ | κΈ°μ |
|---|---|
| νλ μμν¬ | Spring Boot 1.4.4.RELEASE |
| ν νλ¦Ώ μμ§ | Thymeleaf |
| λ°μ΄ν°λ² μ΄μ€ | PostgreSQL 42.2.2.jre7 |
| ORM | MyBatis (mybatis-spring-boot-starter 1.1.1) |
| 보μ | Spring Security + BCrypt |
| μΉμμΌ | Spring WebSocket |
| λ‘κΉ | SLF4J + Logback |
| 컀λ₯μ ν | HikariCP |
| νλ‘ νΈμλ | Bootstrap 3.3.4, jQuery 1.11.3 |
| μνΈν | BouncyCastle (bcprov-jdk15on, bcpkix-jdk15on) |
| λΉλ λꡬ | Maven |
| Java λ²μ | 1.7 |
LSCable CMS V2/
βββ src/
β βββ main/
β β βββ java/com/i52soft/lscable/cms/
β β β βββ App.java # λ©μΈ μ ν리μΌμ΄μ
β β β βββ config/ # μ€μ
β β β β βββ SecurityConfig.java # 보μ μ€μ
β β β β βββ WebConfig.java # μΉ μ€μ
β β β β βββ WebSocketConfig.java # μΉμμΌ μ€μ
β β β β βββ ThymeleafConfig.java # ν
νλ¦Ώ μ€μ
β β β β βββ MyTomcatEmbeddedServletContainerFactory.java
β β β βββ controller/ # 컨νΈλ‘€λ¬
β β β β βββ AdminController.java # κ΄λ¦¬μ 컨νΈλ‘€λ¬
β β β β βββ DefaultController.java # κΈ°λ³Έ 컨νΈλ‘€λ¬
β β β β βββ HTBackendRestController.java
β β β β βββ WebSocketController.java # μΉμμΌ
β β β β βββ WidgetDataProviderRestController.java
β β β βββ service/ # μλΉμ€ μΈν°νμ΄μ€
β β β β βββ HTBackendService.java # ν΅μ¬ λΉμ¦λμ€ λ‘μ§
β β β β βββ WidgetDataProviderService.java
β β β β βββ impl/
β β β β βββ HTBackendServiceImpl.java
β β β β βββ LogInServiceImpl.java
β β β β βββ WidgetDataProviderServiceImpl.java
β β β βββ dao/ # λ°μ΄ν° μ κ·Ό
β β β β βββ HTBackendDao.java
β β β β βββ LogInDao.java
β β β β βββ WidgetDataProviderDao.java
β β β βββ domain/ # λλ©μΈ κ°μ²΄
β β β β βββ UserVO.java # μΌλ° μ¬μ©μ
β β β β βββ SystemUserVO.java # μμ€ν
κ΄λ¦¬μ
β β β β βββ EndUserVO.java # μ΅μ’
μ¬μ©μ
β β β β βββ ProductVO.java # μ ν
β β β β βββ NetworkVO.java # λ€νΈμν¬ μΈκ·Έλ¨ΌνΈ
β β β β βββ IPAddressVO.java # IP μ£Όμ
β β β β βββ CMSSiteVO.java # CMS μ¬μ΄νΈ
β β β β βββ RegionVO.java # μ§μ
β β β β βββ EntityVO.java # 물리μ μν°ν°
β β β β βββ InterfaceVO.java # λ€νΈμν¬ μΈν°νμ΄μ€
β β β β βββ SiteTreeVO.java # μ¬μ΄νΈ νΈλ¦¬
β β β β βββ SiteTreeNodeVO.java
β β β β βββ LinkageConnectionVO.java # μ°κ²° μ 보
β β β β βββ ConnectorVO.java
β β β β βββ ConnectionVO.java
β β β β βββ MainPageLayoutVO.java # λμ보λ λ μ΄μμ
β β β β βββ MainPageWidgetVO.java # λμ보λ μμ ―
β β β β βββ MapWidgetVO.java # λ§΅ μμ ―
β β β β βββ ChartWidgetVO.java # μ°¨νΈ μμ ―
β β β β βββ WidgetParam.java
β β β β βββ MapParam.java
β β β β βββ DeviceParam.java
β β β β βββ NetworkSwitchVO.java # λ€νΈμν¬ μ€μμΉ
β β β β βββ PPInvalidVO.java
β β β β βββ SampleWidgetVO.java
β β β β βββ SampleWidgetVO2.java
β β β β βββ SiteTreePlacementVO.java
β β β β βββ SiteTreeRackspacePositionVO.java
β β β β βββ device.java
β β β β βββ deviceInfo.java
β β β β βββ regions.java
β β β β βββ regionInfo.java
β β β βββ common/ # κ³΅ν΅ μ νΈλ¦¬ν°
β β β βββ CmsAuthenticationProvider.java # μΈμ¦ μ 곡μ
β β β βββ KeyUtil.java # ν€ μ νΈ
β β β βββ PemFile.java # PEM νμΌ μ²λ¦¬
β β β βββ IPAddress.java # IP μ£Όμ μ²λ¦¬
β β β βββ SimpleCORSFilter.java # CORS νν°
β β β βββ CmsACLHandler.java # ACL νΈλ€λ¬
β β βββ resources/
β β βββ application.properties # μ€νλ§ λΆνΈ μ€μ
β β βββ application.yml
β β βββ database.properties # DB μ°κ²° μ€μ
β β βββ data.sql # μ΄κΈ° λ°μ΄ν°
β β βββ db_reset_sql.txt # DB 리μ
SQL
β β βββ LicensedMac # λΌμ΄μ μ€ MAC μ£Όμ
β β βββ logback-spring.xml # λ‘κΉ
μ€μ
β β βββ templates/ # Thymeleaf ν
νλ¦Ώ
β β β βββ login.html # λ‘κ·ΈμΈ νμ΄μ§
β β β βββ layout/ # λ μ΄μμ ν
νλ¦Ώ
β β β β βββ default.html ~ default8.html
β β β β βββ public.html
β β β βββ cms/ # CMS λͺ¨λ (μλ³Έ ν
λ§)
β β β β βββ index.html, view.html, new.html
β β β β βββ modifySite.html, setting.html
β β β β βββ siteset.html, adminAuth.html
β β β β βββ catalog.html, regions.html
β β β β βββ manufacturer.html, linkage.html
β β β β βββ adminSearch.html, adminPortUsage.html
β β β βββ cms2/ # CMS λͺ¨λ (v2 ν
λ§)
β β β βββ setting/ # μ€μ λͺ¨λ (μλ³Έ)
β β β β βββ main.html, view.html
β β β β βββ new.html, modify.html
β β β β βββ system.html, adminsysuser.html
β β β β βββ map-list.html
β β β β βββ manage-widget-*.html # μμ ― κ΄λ¦¬
β β β βββ setting2/ # μ€μ λͺ¨λ (v2)
β β β βββ ipam/ # IPAM λͺ¨λ (μλ³Έ)
β β β β βββ user.html, setting.html
β β β βββ ipam2/ # IPAM λͺ¨λ (v2)
β β β β βββ index.html, user.html
β β β β βββ setting.html, terminalUser.html
β β β β βββ terminalList.html, adminNetwork.html
β β β βββ main-widgetMap.html
β β β βββ pace.html
β β βββ themes/
β β βββ bright.properties # λ°μ ν
λ§
β β βββ dark.properties # μ΄λμ΄ ν
λ§
β βββ test/
β βββ java/
β βββ com/mysample/
β βββ AppTest.java
βββ target/
β βββ LSCableCMS-2.0.jar # λΉλλ JAR
β βββ config.properties # μ€ν μ€μ
β βββ startCMS.bat / startCMS.sh # μμ μ€ν¬λ¦½νΈ
β βββ stopCMS.bat / stopCMS.sh # μ€μ§ μ€ν¬λ¦½νΈ
βββ doc/ # Javadoc λ¬Έμ
βββ pom.xml # Maven μ€μ
βββ .classpath
βββ .project
μ£Όμ κ΄λ¦¬ κΈ°λ₯ 컨νΈλ‘€λ¬:
/admin/setting/*- λμ보λ λ μ΄μμ λ° μμ ― κ΄λ¦¬/admin/cms/*- CMS μ¬μ΄νΈ κ΄λ¦¬/admin/ipam/*- IP μ£Όμ κ΄λ¦¬- ν λ§ κΈ°λ° λΌμ°ν (setting/ vs setting2/)
μ£Όμ μλν¬μΈνΈ:
| κ²½λ‘ | μ€λͺ |
|---|---|
| /admin/setting/adminsysuser | μμ€ν μ¬μ©μ κ΄λ¦¬ |
| /admin/setting/new | μ λ μ΄μμ μμ± |
| /admin/setting/modify | λ μ΄μμ μμ |
| /admin/setting/map-list | λ§΅ μμ ― λͺ©λ‘ |
| /admin/cms/siteset | μ¬μ΄νΈ μ€μ |
| /admin/cms/view | μ¬μ΄νΈ 보기 |
| /admin/cms/new | μ μ¬μ΄νΈ μμ± |
| /admin/cms/regions | μ§μ κ΄λ¦¬ |
| /admin/cms/manufacturer | μ μ‘°μ¬ κ΄λ¦¬ |
| /admin/ipam/adminNetwork | λ€νΈμν¬ κ΄λ¦¬ |
λ°±μλ μμ μ μν REST API 컨νΈλ‘€λ¬
μμ ― λ°μ΄ν° μ 곡μ μν REST API
μ€μκ° ν΅μ μ§μ (μλ¦Ό, μν μ λ°μ΄νΈ)
κΈ°λ³Έ λΌμ°ν λ° λ©μΈ νμ΄μ§ μ²λ¦¬
ν΅μ¬ λΉμ¦λμ€ λ‘μ§:
- μμ ― κ΄λ¦¬
- λ μ΄μμ κ΄λ¦¬
- μ¬μ΄νΈ νΈλ¦¬ κ΄λ¦¬
- μ ν/μ μ‘°μ¬ κ΄λ¦¬
- μ¬μ©μ κ΄λ¦¬
- λ€νΈμν¬/IPAM κ΄λ¦¬
- μ°κ²° λ€μ΄μ΄κ·Έλ¨
- μλ λͺ¨λν°λ§
μμ ― λ°μ΄ν° μ 곡 μλΉμ€
| λλ©μΈ ν΄λμ€ | μ€λͺ |
|---|---|
| UserVO | μΌλ° μ¬μ©μ |
| SystemUserVO | μμ€ν κ΄λ¦¬μ |
| EndUserVO | μ΅μ’ μ¬μ©μ/ν°λ―Έλ μ¬μ©μ |
| CMSSiteVO | CMS μ¬μ΄νΈ μ 보 |
| NetworkVO | λ€νΈμν¬ μΈκ·Έλ¨ΌνΈ |
| IPAddressVO | IP μ£Όμ |
| EntityVO | 물리μ μν°ν° (μ₯λΉ, λ λ±) |
| InterfaceVO | λ€νΈμν¬ μΈν°νμ΄μ€ |
| SiteTreeVO | μ¬μ΄νΈ νΈλ¦¬ ꡬ쑰 |
| MainPageLayoutVO | λμ보λ λ μ΄μμ |
| MainPageWidgetVO | λμ보λ μμ ― |
| MapWidgetVO | λ§΅ μμ ― |
| WidgetParam | μμ ― λ§€κ°λ³μ |
- μΈμ¦: Spring Security + BCrypt λΉλ°λ²νΈ μνΈν
- κΆν λΆμ¬: μν κΈ°λ° μ κ·Ό μ μ΄ (RBAC)
- μΈμ : Remember-me κΈ°λ₯ μ§μ
- κ³΅κ° λ¦¬μμ€: CSS, JS, μ΄λ―Έμ§, μ μ 리μμ€ (permitAll)
- λ³΄νΈ λ¦¬μμ€:
/admin/**λ Administrator μν νμ
| λ©μλ | κ²½λ‘ | μ€λͺ |
|---|---|---|
| GET | /login | λ‘κ·ΈμΈ νμ΄μ§ |
| POST | /login-process | λ‘κ·ΈμΈ μ²λ¦¬ |
| GET | /logout | λ‘κ·Έμμ |
| λ©μλ | κ²½λ‘ | μ€λͺ |
|---|---|---|
| GET | /admin/setting/adminsysuser | μμ€ν μ¬μ©μ κ΄λ¦¬ |
| GET | /admin/setting/new | μ λ μ΄μμ μμ± |
| GET | /admin/setting/modify | λ μ΄μμ μμ |
| GET | /admin/setting/map-list | λ§΅ μμ ― λͺ©λ‘ |
| GET | /admin/setting/manage-layout | λ μ΄μμ κ΄λ¦¬ |
| GET | /admin/setting/manage-widget | μμ ― κ΄λ¦¬ |
| GET | /admin/setting/preview-layout | λ μ΄μμ 미리보기 |
| λ©μλ | κ²½λ‘ | μ€λͺ |
|---|---|---|
| GET | /admin/cms/setting | CMS μ€μ |
| GET | /admin/cms/siteset | μ¬μ΄νΈ μ€μ |
| GET | /admin/cms/view | μ¬μ΄νΈ 보기 |
| GET | /admin/cms/new | μ μ¬μ΄νΈ μμ± |
| GET | /admin/cms/modifySite | μ¬μ΄νΈ μμ |
| GET | /admin/cms/catalog | μ ν μΉ΄νλ‘κ·Έ |
| GET | /admin/cms/regions | μ§μ κ΄λ¦¬ |
| GET | /admin/cms/manufacturer | μ μ‘°μ¬ κ΄λ¦¬ |
| GET | /admin/cms/adminAuth | κΆν κ΄λ¦¬ |
| GET | /admin/cms/linkage | μ°κ²° κ΄λ¦¬ |
| λ©μλ | κ²½λ‘ | μ€λͺ |
|---|---|---|
| GET | /admin/ipam/setting | IPAM μ€μ |
| GET | /admin/ipam/user | μ¬μ©μ IP κ΄λ¦¬ |
| GET | /admin/ipam/adminNetwork | λ€νΈμν¬ κ΄λ¦¬ |
- μ ν: HikariCP
- λλΌμ΄λ²: PostgreSQL 42.2.2.jre7
- μ€μ : database.properties (μΈλΆνλ¨)
- μ ν: MyBatis
- λ§€νΌ: XML κΈ°λ° SQL λ§€ν
mvn clean package# Windows
target\startCMS.bat
# Linux
sh target/startCMS.sh# Windows
target\stopCMS.bat
# Linux
sh target/stopCMS.sh-
μΌμ΄λΈ κ΄λ¦¬ μμ€ν (CMS)
- μ¬μ΄νΈ κ΄λ¦¬
- λΉλ©/μΈ΅/μ€ κ³μΈ΅ ꡬ쑰
- ν¨μΉ ν¨λ κ΄λ¦¬
- μ°κ²° μΆμ
-
λμ보λ λ° μμ ―
- μ¬μ©μ μ μ λμ보λ λ μ΄μμ
- λΌμΈ μ°¨νΈ, νμ΄ μ°¨νΈ, κ²μ΄μ§ μ°¨νΈ
- μλ 그리λ ν μ΄λΈ
- κ°μ©μ± 그리λ ν μ΄λΈ
- λ§΅ μμ ―
- 3D λ λ·° (DCIM)
-
IP μ£Όμ κ΄λ¦¬ (IPAM)
- IP μ£Όμ ν λΉ
- λ€νΈμν¬ μΈκ·Έλ¨ΌνΈ κ΄λ¦¬
- L2/L3 μ€μμΉ κ΄λ¦¬
- κ²μ΄νΈμ¨μ΄ ꡬμ±
-
μ€μκ° λͺ¨λν°λ§
- WebSocket κΈ°λ° μ λ°μ΄νΈ
- μλ μν λͺ¨λν°λ§
- ν¬νΈ μν λͺ¨λν°λ§
-
μ¬μ©μ κ΄λ¦¬
- μμ€ν μ¬μ©μ κ΄λ¦¬
- μ΅μ’ μ¬μ©μ κ΄λ¦¬
- μν κΈ°λ° μ κ·Ό μ μ΄ (RBAC)
-
ν λ§ μ§μ
- λ°μ ν λ§ (Bright)
- μ΄λμ΄ ν λ§ (Dark)
μ€νλ§ λΆνΈ λ©μΈ μ€μ
λ°μ΄ν°λ² μ΄μ€ μ°κ²° μ€μ (μΈλΆνλ¨)
μ ν리μΌμ΄μ μ€ν μκ° μ€μ (target/ ν΄λ λ΄)
νλμ¨μ΄ λ°μΈλ©μ μν λΌμ΄μ μ€ MAC μ£Όμ
| κ·Έλ£Ή | μν°ν©νΈ | λ²μ |
|---|---|---|
| org.springframework.boot | spring-boot-starter-web | 1.4.4.RELEASE |
| org.springframework.boot | spring-boot-starter-security | 1.4.4.RELEASE |
| org.springframework.boot | spring-boot-starter-websocket | 1.4.4.RELEASE |
| org.springframework.boot | spring-boot-starter-thymeleaf | 1.4.4.RELEASE |
| org.mybatis.spring.boot | mybatis-spring-boot-starter | 1.1.1 |
| org.postgresql | postgresql | 42.2.2.jre7 |
| org.projectlombok | lombok | 1.16.8 |
| com.zaxxer | HikariCP | (parentμμ μμ) |
| org.bouncycastle | bcprov-jdk15on | 1.56 |
| org.bouncycastle | bcpkix-jdk15on | 1.56 |
| org.webjars | bootstrap | 3.3.4 |
| org.webjars | jquery | 1.11.3 |
- κΈ°μ‘΄ Spring Boot 1.4.x μ ν리μΌμ΄μ (Java 7)
- Thymeleafλ₯Ό μ¬μ©ν μλ²μ¬μ΄λ λ λλ§
- λ κ°μ§ ν λ§ λ²μ μ‘΄μ¬: μλ³Έ (setting/) λ° v2 (setting2/)
- CMS λ° IPAM λͺ¨λμ΄ λ³λμ UI κ²½λ‘λ₯Ό κ°μ§
- νλμ¨μ΄ λΌμ΄μ μ€ λ°μΈλ©μ ꡬνλμ΄ μμΌλ νμ¬ λΉνμ±ν μν
- Javadoc λ¬Έμλ /doc ν΄λμ μμ
