| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ํ๋ก์ ํธ ์ ํ | 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 ํด๋์ ์์
