From 5cc486067c46567d09905e6e0a7b2a4a98b8cf25 Mon Sep 17 00:00:00 2001 From: "icksishu@gmail.com" Date: Fri, 19 Dec 2025 13:55:00 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=84=A4=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=EC=84=9C=EB=A5=BC=20=ED=86=B5=ED=95=9C=20https=20=ED=86=B5?= =?UTF-8?q?=EC=8B=A0=20=EA=B8=B0=EB=8A=A5=20#4=20=20=EC=A7=84=ED=96=89?= =?UTF-8?q?=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cert/dfxagent-local.p12 | Bin 0 -> 5950 bytes .../cert/truststore-local.jks | Bin 0 -> 1471 bytes .../conf/dfxagent-bsm-lab-postgres.json | 28 ++++---- .../bsmlab/dfx/agent/DfxAgentApplication.java | 60 +++++++++++++++++- .../dfx/agent/config/AgentConfigDto.java | 6 ++ 5 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 src/docs/agent-bsm-lab-postgres/cert/dfxagent-local.p12 create mode 100644 src/docs/agent-bsm-lab-postgres/cert/truststore-local.jks diff --git a/src/docs/agent-bsm-lab-postgres/cert/dfxagent-local.p12 b/src/docs/agent-bsm-lab-postgres/cert/dfxagent-local.p12 new file mode 100644 index 0000000000000000000000000000000000000000..faa4d9edb2456ac37f1306d0807db31fa03d8275 GIT binary patch literal 5950 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 literal 0 HcmV?d00001 diff --git a/src/docs/agent-bsm-lab-postgres/conf/dfxagent-bsm-lab-postgres.json b/src/docs/agent-bsm-lab-postgres/conf/dfxagent-bsm-lab-postgres.json index 03bf412..dcd7495 100644 --- a/src/docs/agent-bsm-lab-postgres/conf/dfxagent-bsm-lab-postgres.json +++ b/src/docs/agent-bsm-lab-postgres/conf/dfxagent-bsm-lab-postgres.json @@ -2,11 +2,19 @@ "description": "bsm-lab 서버에서 실행함. postgres 연결.", "myHostId": "agent-bsm-lab-postgres", "myListenPort": 17801, + "sslEnabled": true, + "keyStorePath": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/agent-bsm-lab-postgres/cert/dfxagent-kdn.p12", + "keyStorePassword": "qortpals1!", + "keyStoreType": "PKCS12", + "trustStorePath": "D:/projects/bsm-lab/dfx/dfxagent/src/docs/agent-bsm-lab-postgres/cert/truststore-kdn.jks", + "trustStorePassword": "qortpals1!", + "trustStoreType": "JKS", "knownAgentList": [ { "hostId": "agent-tuf-a15-defree-oracle", "hostName": "bsm-lab.dev", "listenPort": 63801, + "sslEnabled": true, "dropBoxIdList": [ ], "routingHostIdList": [ @@ -45,17 +53,15 @@ "logPattern": "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n", "rootLogLevel": "DEBUG", "packages": [ - { - "com.bsmlab.dfx.agent": "DEBUG", - "jdbc.timing": "DEBUG", - "jdbc.sqltiming": "OFF", - "jdbc.sqlonly": "OFF", - "jdbc.audit": "OFF", - "jdbc.resultset": "OFF", - "jdbc.resultsettable": "OFF", - "jdbc.connection": "OFF", - "org.springframework": "INFO" - } + {"com.bsmlab.dfx.agent": "DEBUG"}, + {"jdbc.timing": "DEBUG"}, + {"jdbc.sqltiming": "OFF"}, + {"jdbc.sqlonly": "OFF"}, + {"jdbc.audit": "OFF"}, + {"jdbc.resultset": "OFF"}, + {"jdbc.resultsettable": "OFF"}, + {"jdbc.connection": "OFF"}, + {"org.springframework": "INFO"} ] }, "dropBoxConfig": { diff --git a/src/main/java/com/bsmlab/dfx/agent/DfxAgentApplication.java b/src/main/java/com/bsmlab/dfx/agent/DfxAgentApplication.java index 757f137..f8f27b6 100644 --- a/src/main/java/com/bsmlab/dfx/agent/DfxAgentApplication.java +++ b/src/main/java/com/bsmlab/dfx/agent/DfxAgentApplication.java @@ -1,13 +1,71 @@ package com.bsmlab.dfx.agent; +import com.bsmlab.dfx.agent.config.AgentConfigDto; +import com.fasterxml.jackson.databind.DatabindException; +import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.List; +import java.util.Scanner; + @SpringBootApplication public class DfxAgentApplication { public static void main(String[] args) { - SpringApplication.run(DfxAgentApplication.class, args); + //--setting.file=$AGENT_HOME/conf/settings.json --setting.check + // --parse.message.file + boolean hasSettingFile = false; + boolean hasSettingCheck = false; + boolean hasParseMessageFile = false; + String settingFilePath = null; + if(args != null) { + for(String arg : args) { + if(arg != null && arg.contains("setting.file")) { + if(arg.split("=").length == 2) { + settingFilePath = arg.split("=")[1].trim(); + if(Files.exists(Path.of(settingFilePath))) { + hasSettingFile = true; + } + } + } + if(arg != null && arg.contains("setting.check")) { + hasSettingCheck = true; + } + if(arg != null && arg.contains("parse.message.file")) { + hasParseMessageFile = true; + } + } + } + if(hasSettingFile && !hasSettingCheck && !hasParseMessageFile) { + try { + ObjectMapper objectMapper = new ObjectMapper(); + AgentConfigDto agentConfigDto = objectMapper.readValue(new File(settingFilePath), AgentConfigDto.class); + if(agentConfigDto.isSslEnabled()) { + System.setProperty("server.port", String.valueOf(agentConfigDto.getMyListenPort())); + System.setProperty("server.ssl.enabled", String.valueOf(agentConfigDto.isSslEnabled())); + System.setProperty("server.ssl.key-store", agentConfigDto.getKeyStorePath()); + System.setProperty("server.ssl.key-store-password", agentConfigDto.getKeyStorePassword()); + System.setProperty("server.ssl.key-store-type", "PKCS12"); + System.setProperty("server.ssl.trust-store", agentConfigDto.getTrustStorePath()); + System.setProperty("server.ssl.trust-store-password", agentConfigDto.getTrustStorePassword()); + System.setProperty("server.ssl.trust-store-type", "JKS"); + } + } catch (DatabindException e) { + System.out.println("cannot parse a setting file. " + settingFilePath); + e.printStackTrace(System.out); + } catch (IOException e) { + System.out.println("cannot read a setting file. " + settingFilePath); + e.printStackTrace(System.out); + } + SpringApplication.run(DfxAgentApplication.class, args); + } } } diff --git a/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java b/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java index 2a68406..91bcd60 100644 --- a/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java +++ b/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java @@ -11,6 +11,11 @@ public class AgentConfigDto { private String myHostId; private String myHostName; private int myListenPort; + private boolean sslEnabled; + private String keyStorePath; + private String keyStorePassword; + private String trustStorePath; + private String trustStorePassword; private List knownAgentList; private StatusChecker statusChecker; private List dataSourceConfig; @@ -26,6 +31,7 @@ public class AgentConfigDto { private String hostId; private String hostName; private int listenPort; + private boolean sslEnabled; private List dropBoxIdList; private List routingHostIdList; }