shjung hai 1 ano
pai
achega
40c4b6ec9a

+ 14 - 0
DB 수정사항.txt

@@ -0,0 +1,14 @@
+VmsIfscMapper.xml
+    findAllList, TB_VMS_IFSC, A.CNGS_SPD ==> A.CNGS_SPED
+
+ExternalLinkMapper.xml
+    LINK_MAPPING 테이블 삭제
+
+LinkRawDataGITS01.xml
+    selectLinkRawDataGITS01 사용안함.   ==> 수집시스템에서 경기도 연계 삭제
+
+TrafPrcs05MController.java
+    // 외부연계 처리
+    // this.externalLinkService.processing();   ==> 사용안함, 환경설정으로 사용할 수 있도록 수정 가능
+
+

BIN=BIN
app-install/application.png


+ 51 - 0
app-install/conf/application.yml

@@ -0,0 +1,51 @@
+application:
+  name: 안동시 교통정보 가공서버
+
+running:
+  center-id: L08
+  region-code: 354
+  region-name: 안동시
+
+server:
+  port: 7998
+
+spring:
+  profiles:
+    active: dev
+
+---
+spring:
+  config:
+    activate:
+      on-profile: dev
+  datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: ENC(D/mtjX68HkE=)
+      password: ENC(D/mtjX68HkE=)
+
+  utis-datasource:
+    hikari:
+      driver-class-name: oracle.jdbc.OracleDriver
+      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1522:HANTE19C
+      username: ENC(D/tgqlrWU9Sbk=)
+      password: ENC(D/tgqlrWU9Sbk=)
+
+---
+spring:
+  config:
+    activate:
+      on-profile: prod
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: ENC(D/mtjX68HkE=)
+      password: ENC(D/mtjX68HkE=)
+
+  utis-datasource:
+    hikari:
+      driver-class-name: oracle.jdbc.OracleDriver
+      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1522:HANTE19C
+      username: ENC(D/tgqlrWU9Sbk=)
+      password: ENC(D/tgqlrWU9Sbk=)
+

+ 4 - 0
app-install/conf/debug.properties

@@ -0,0 +1,4 @@
+links =
+ifscs =
+roads =
+vms-ifscs =

+ 2 - 0
app-install/traf-prcs-server-start.bat

@@ -0,0 +1,2 @@
+chcp 65001
+java -jar -Dspring.profiles.active=dev traf-prcs-server-0.0.1.jar

+ 45 - 0
app-install/traf-prcs-server.txt.jsmooth

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<jsmoothproject>
+<JVMSearchPath>javahome</JVMSearchPath>
+<JVMSearchPath>jrepath</JVMSearchPath>
+<JVMSearchPath>jdkpath</JVMSearchPath>
+<JVMSearchPath>registry</JVMSearchPath>
+<JVMSearchPath>exepath</JVMSearchPath>
+<JVMSearchPath>jview</JVMSearchPath>
+<arguments></arguments>
+<currentDirectory>${EXECUTABLEPATH}</currentDirectory>
+<embeddedJar>true</embeddedJar>
+<executableName>traf-prcs-server.exe</executableName>
+<iconLocation>application.png</iconLocation>
+<initialMemoryHeap>-1</initialMemoryHeap>
+<jarLocation>traf-prcs-server-0.0.1.jar</jarLocation>
+<mainClassName>org.springframework.boot.loader.JarLauncher</mainClassName>
+<maximumMemoryHeap>-1</maximumMemoryHeap>
+<maximumVersion></maximumVersion>
+<minimumVersion>1.8</minimumVersion>
+<skeletonName>Windowed Wrapper</skeletonName>
+<skeletonProperties>
+<key>Message</key>
+<value>Java has not been found on your computer. Do you want to download it?</value>
+</skeletonProperties>
+<skeletonProperties>
+<key>URL</key>
+<value></value>
+</skeletonProperties>
+<skeletonProperties>
+<key>SingleProcess</key>
+<value>0</value>
+</skeletonProperties>
+<skeletonProperties>
+<key>SingleInstance</key>
+<value>0</value>
+</skeletonProperties>
+<skeletonProperties>
+<key>JniSmooth</key>
+<value>0</value>
+</skeletonProperties>
+<skeletonProperties>
+<key>Debug</key>
+<value>0</value>
+</skeletonProperties>
+</jsmoothproject>

+ 51 - 0
conf/application.yml

@@ -0,0 +1,51 @@
+application:
+  name: 안동시 교통정보 가공서버
+
+running:
+  center-id: L08
+  region-code: 354
+  region-name: 안동시
+
+server:
+  port: 7998
+
+spring:
+  profiles:
+    active: dev
+
+---
+spring:
+  config:
+    activate:
+      on-profile: dev
+  datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: ENC(D/mtjX68HkE=)
+      password: ENC(D/mtjX68HkE=)
+
+  utis-datasource:
+    hikari:
+      driver-class-name: oracle.jdbc.OracleDriver
+      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1522:HANTE19C
+      username: ENC(D/tgqlrWU9Sbk=)
+      password: ENC(D/tgqlrWU9Sbk=)
+
+---
+spring:
+  config:
+    activate:
+      on-profile: prod
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: ENC(D/mtjX68HkE=)
+      password: ENC(D/mtjX68HkE=)
+
+  utis-datasource:
+    hikari:
+      driver-class-name: oracle.jdbc.OracleDriver
+      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1522:HANTE19C
+      username: ENC(D/tgqlrWU9Sbk=)
+      password: ENC(D/tgqlrWU9Sbk=)
+

+ 1 - 0
conf/traf-prcs-server.pid

@@ -0,0 +1 @@
+43208

+ 6 - 0
pom.xml

@@ -295,6 +295,12 @@
             <version>1.18.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.github.ulisesbocchio</groupId>
+            <artifactId>jasypt-spring-boot-starter</artifactId>
+            <version>3.0.4</version>
+        </dependency>
+
         <!-- FOR WEB UI: START -->
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 5 - 4
src/main/java/com/its/traf/TrafPrcsServerApplication.java

@@ -81,10 +81,13 @@ public class TrafPrcsServerApplication implements CommandLineRunner, Application
 
     @Override
     public void run(String... args) throws Exception {
+
+        ApplicationConfig applicationConfig = (ApplicationConfig) AppUtils.getBean(ApplicationConfig.class);
+
         if (OS.isWindows()) {
             String sysTime = SysUtils.getSysTimeStr();
             //JFrame.setDefaultLookAndFeelDecorated(true);
-            JFrame frame = new JFrame("통합교통정보가공 서버 - [" + sysTime + "]");
+            JFrame frame = new JFrame(applicationConfig.getName() + " - [" + sysTime + "]");
             MainUI UI = new MainUI(frame);
             SwingUtilities.invokeLater(() -> {
                 try {
@@ -100,7 +103,7 @@ public class TrafPrcsServerApplication implements CommandLineRunner, Application
                 frame.addWindowListener(new WindowAdapter() {
                     @Override
                     public void windowClosing(WindowEvent e) {
-                        if (JOptionPane.showConfirmDialog(UI.getRootPanel(), "시스템을 종료 하시겠습니까?", "시스템 종료", 0) == 0) {
+                        if (JOptionPane.showConfirmDialog(UI.getRootPanel(), applicationConfig.getName() + " 프로그램을 종료 하시겠습니까?", "프로그램 종료", 0) == 0) {
                             System.exit(0);
                         } else {
                             frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
@@ -119,8 +122,6 @@ public class TrafPrcsServerApplication implements CommandLineRunner, Application
             });
         }
 
-        ApplicationConfig applicationConfig = (ApplicationConfig) AppUtils.getBean(ApplicationConfig.class);
-
         log.info("");
         log.info("");
         log.info("************************************************************************************");

+ 63 - 0
src/main/java/com/its/traf/config/JasyptConfig.java

@@ -0,0 +1,63 @@
+package com.its.traf.config;
+
+import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
+import org.jasypt.encryption.StringEncryptor;
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+import org.jasypt.salt.StringFixedSaltGenerator;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@EnableEncryptableProperties
+public class JasyptConfig {
+
+    @Value("${jasypt.encryptor.password:asdkjfaslkjflkajslfjkajlkf}")
+    private final String encKey = "asdkjfaslkjflkajslfjkajlkf";
+
+    @Bean("jasyptStringEncryptor")
+    public StringEncryptor stringEncryptor() {
+
+        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+
+        // ==> SimpleStringPBEConfig 사용시 아래 3개 반드시 설정해야함
+        config.setPassword(encKey);                                         // 암호화에 사용할 키
+        config.setPoolSize(1);                                              // Pool Size
+        config.setSaltGenerator(new StringFixedSaltGenerator("fixedSalt")); // 고정으로 암호화(Default: Random)
+        //config.setAlgorithm("PBEWithMD5AndTripleDES");
+        //config.setAlgorithm("PBEWithMD5AndDES"); // Jasypt 를 이용한 암호화 알고리즘
+        //config.setProviderName("SunJCE");
+        config.setKeyObtentionIterations("10000");
+        config.setStringOutputType("base64");
+        /*private Boolean proxyPropertySources = false;
+        private String bean = "jasyptStringEncryptor";
+        private String password;
+        private String algorithm = "PBEWithMD5AndDES";
+        private String keyObtentionIterations = "1000";
+        private String poolSize = "1";
+        private String providerName = null;
+        //config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+        private String saltGeneratorClassname = "org.jasypt.salt.RandomSaltGenerator";
+        private String stringOutputType = "base64";*/
+        encryptor.setConfig(config);
+
+        return encryptor;
+    }
+
+    public String getKey() {
+        return this.encKey;
+    }
+
+    public String encrypt(String string) {
+        StringEncryptor encrypt = stringEncryptor();
+        return encrypt.encrypt(string);
+    }
+
+    public String decrypt(String string) {
+        StringEncryptor decrypt = stringEncryptor();
+        return decrypt.decrypt(string);
+    }
+
+}

+ 1 - 1
src/main/java/com/its/traf/controller/its/TrafPrcs05MController.java

@@ -101,7 +101,7 @@ public class TrafPrcs05MController implements AbstractTrafPrcsController {
         this.roadService.processPtrn();
 
         // 외부연계 처리
-        this.externalLinkService.processing();
+        // this.externalLinkService.processing();
 
         // 가공 완료
         this.prcsTime.setProcessing(false);

+ 35 - 82
src/main/resources/application.yml

@@ -1,3 +1,38 @@
+spring:
+  application:
+    name: traf-prcs-server
+  main:
+    web-application-type: none
+    log-startup-info: true
+    banner-mode: off
+  jackson:
+    property-naming-strategy: LOWER_CASE
+  config:
+    import: file:${user.dir}/conf/application.yml
+  profiles:
+    include: application
+  datasource:
+    hikari:
+      auto-commit: true
+      connection-test-query: SELECT 1 FROM DUAL
+      minimumIdle: 5
+      maximumIdle: 10
+      #maximum-pool-size: 50
+      idleTimeout: 30000
+      connectTimeout: 10000
+      pool-name: pool-traf-prcs-server
+
+server:
+  port: 7998
+  shutdown: graceful
+  error:
+    whitelabel:
+      enabled: true
+    include-exception: false
+    include-stacktrace: never
+  resources:
+    static-locations: file:src/main/resources/static/
+
 application:
   id: UTP01
   name: ITS Traffic Processing Server
@@ -26,36 +61,6 @@ running:
   repeat-congest-counts: 3
   repeat-congest-continuous-minutes: 10
 
-server:
-  port: 7998
-  shutdown: graceful
-  error:
-    whitelabel:
-      enabled: true
-    include-exception: false
-    include-stacktrace: never
-  resources:
-    static-locations: file:src/main/resources/static/
-
-spring:
-  application:
-    name: traf-prcs-server
-  profiles:
-    active: prod
-  main:
-    web-application-type: none
-    log-startup-info: true
-    banner-mode: off
-  jackson:
-    property-naming-strategy: LOWER_CASE
-  datasource:
-    hikari:
-      auto-commit: true
-      connection-test-query: SELECT 1 FROM DUAL
-      minimum-idle: 10
-      #maximum-pool-size: 50
-      pool-name: pool-its-op-server
-
 logging:
   level:
     org.hibernate.SQL: ERROR
@@ -71,55 +76,3 @@ logging:
           descriptor:
             sql:
               BasicBinder: ERROR
-
----
-spring:
-  config:
-    activate:
-      on-profile: dev
-  datasource:
-    hikari:
-      driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: adits
-      password: adits
-
-  utis-datasource:
-    hikari:
-      driver-class-name: oracle.jdbc.OracleDriver
-      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1522:HANTE19C
-      username: rota
-      password: rota
-      connection-test-query: SELECT 1 FROM DUAL
-      minimumIdle: 3
-      maximumIdle: 10
-      maximumPoolSize: 20
-      idleTimeout: 30000
-      connectTimeout: 10000
-
----
-spring:
-  config:
-    activate:
-      on-profile: prod
-  datasource:
-    hikari:
-      driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: adits
-      password: adits
-
-  utis-datasource:
-    hikari:
-      driver-class-name: oracle.jdbc.OracleDriver
-      #jdbc-url: jdbc:oracle:thin:@172.19.10.25:1521:ptatms
-      jdbc-url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.10.25)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.10.26)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ptatms)))
-      username: rota
-      password: rota
-      connection-test-query: SELECT 1 FROM DUAL
-      minimumIdle: 3
-      maximumIdle: 10
-      maximumPoolSize: 20
-      idleTimeout: 30000
-      connectTimeout: 10000
-

+ 1 - 1
src/main/resources/mybatis/mapper/its/VmsIfscMapper.xml

@@ -14,7 +14,7 @@
                A.ROAD_NM           AS ROAD_NM,
                A.SPOT_NM           AS SPOT_NM,
                A.USE_YN            AS USE_YN,
-               A.CNGS_SPD          AS CNGS_SPD
+               A.CNGS_SPED         AS CNGS_SPD
         FROM TB_VMS_IFSC A
         ]]>
     </select>

+ 38 - 2
src/test/java/com/its/traf/TrafPrcsServerApplicationTests.java

@@ -3,8 +3,10 @@ package com.its.traf;
 import com.its.traf.dto.its.IfscCngsDto;
 import com.its.traf.global.eTrafPrcsJob;
 import lombok.extern.slf4j.Slf4j;
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+import org.jasypt.salt.StringFixedSaltGenerator;
 import org.junit.jupiter.api.Test;
-import org.springframework.test.context.ActiveProfiles;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -12,7 +14,7 @@ import java.util.*;
 
 @Slf4j
 //@SpringBootTest
-@ActiveProfiles(profiles = "dev")
+//@ActiveProfiles(profiles = "dev")
 public class TrafPrcsServerApplicationTests {
 
     enum LogLevel {
@@ -23,6 +25,40 @@ public class TrafPrcsServerApplicationTests {
         ERROR,
     }
 
+    @Test
+    void jasypt() {
+        String encKey = "asdkjfaslkjflkajslfjkajlkf";
+        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+
+        // ==> SimpleStringPBEConfig 사용시 아래 3개 반드시 설정해야함
+        config.setPassword(encKey);                                         // 암호화에 사용할 키
+        config.setPoolSize(1);                                              // Pool Size
+        config.setSaltGenerator(new StringFixedSaltGenerator("fixedSalt")); // 고정으로 암호화(Default: Random)
+        //config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+        //config.setAlgorithm("PBEWithMD5AndTripleDES");
+        config.setAlgorithm("PBEWithMD5AndDES"); // Jasypt 를 이용한 암호화 알고리즘
+        config.setProviderName("SunJCE");
+        config.setKeyObtentionIterations("10000");
+        config.setStringOutputType("base64");
+        /*private Boolean proxyPropertySources = false;
+        private String bean = "jasyptStringEncryptor";
+        private String password;
+        private String algorithm = "PBEWithMD5AndDES";
+        private String keyObtentionIterations = "1000";
+        private String poolSize = "1";
+        private String providerName = null;
+        //config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+        private String saltGeneratorClassname = "org.jasypt.salt.RandomSaltGenerator";
+        private String stringOutputType = "base64";*/
+        encryptor.setConfig(config);
+
+        String yiits = encryptor.encrypt("adits");
+        String rota = encryptor.encrypt("rota");
+        log.info("{}", yiits);
+        log.info("{}", rota);
+    }
+
     public String getCurr05MinString(Date paramDt) {
         Calendar cal = Calendar.getInstance();
         cal.setTime(paramDt);