You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

527 lines
22 KiB
Java

package externalsystem.nuri2.service.bean;
import java.io.File;
import javax.servlet.http.HttpServletRequest;
import cokr.xit.TextFileMaker;
public abstract class Nuri2ServiceBean {
public String nuri2jarName = "nuri2.jar";
public String nuri2confName = "nuri2.conf";
public String sharps = "#############################################";
public abstract String makeScriptFile(HttpServletRequest req);
public final String XMS_PORT_PROD = "10000";
public final String ALT_PORT_PROD = "15000";
public final String RCS_PORT_PROD = "10000";
public final String XMS_PORT_TEST = "20000";
public final String ALT_PORT_TEST = "40000";
public final String RCS_PORT_TEST = "40000";
public final String OUTERNAL_IP_START = "125.60.63";
public final String OUTERNAL_IP___END_TEST = ".20";
public final String OUTERNAL_IP___END_PROD_RCS_X = ".20";
public final String OUTERNAL_IP___END_PROD_RCS_O = ".25";
//국가정보자원관리원 입주시 내부망
public final String INTERNAL_IP_START = "10.182.35";
public final String INTERNAL_IP___END_TEST = ".235";
public final String INTERNAL_IP___END_PROD_RCS_X = ".235";
public final String INTERNAL_IP___END_PROD_RCS_O = ".246";
//사용자정의컬럼
public final String[] customCols = {
"INPUT_DT varchar(14)","RES_DT varchar(14)",
"REQ_SYS varchar(2)", "MSG_PRPS varchar(2)", "MSG_DTL_PRPS varchar(100)",
"SGG_CD varchar(5)", "TASK_SE_CD varchar(3)"
};
public String makeConfFile(HttpServletRequest req) {
String env = req.getParameter("env");
String ibju = req.getParameter("ibju");//국가정보자원관리원 내부망 입주 여부
String sgg = req.getParameter("sgg");
boolean isTest = false;
if("test".equals(env)) {
isTest = true;
}
String dbName = "";
String dbIp = "";
String dbPort = "";
dbName = req.getParameter("dbName");
dbIp = req.getParameter("dbIp");
dbPort = req.getParameter("dbPort");
String dbService = req.getParameter("dbService");
String userSchema = req.getParameter("userSchema");
String dbUserId = req.getParameter("dbUserId");
String dbPassword = req.getParameter("dbPassword");
String xms_ip = req.getParameter("xms_ip");
String alt_ip = req.getParameter("alt_ip");
String rcs_ip = req.getParameter("rcs_ip");
String gwanriId = "";
String X_yeondongId = "";
String A_yeondongId = "";
String R_yeondongId = "";
String yeondongPassword = "";
String xms_port = "";
String alt_port = "";
String rcs_port = "";
if(isTest) {
xms_port = XMS_PORT_TEST;
alt_port = ALT_PORT_TEST;
rcs_port = RCS_PORT_TEST;
} else {
xms_port = XMS_PORT_PROD;
alt_port = ALT_PORT_PROD;
rcs_port = RCS_PORT_PROD;
}
if("50000".equals(sgg)) {
if(isTest) {
X_yeondongId = "jejudo02";
A_yeondongId = "jejudo02";
R_yeondongId = "jejudo02";
dbName = "MARIADB";
} else {
dbName = "MARIADB";
gwanriId = "jejudo01";
//TODO: 운영에서는 연동아이디 각각
//
X_yeondongId = "jejudo03";
A_yeondongId = "???";
R_yeondongId = "???";
}
yeondongPassword = "jeju12!@";
}
if(isTest) {
if("Y".equals(ibju)) {
xms_ip = INTERNAL_IP_START+INTERNAL_IP___END_TEST;
alt_ip = INTERNAL_IP_START+INTERNAL_IP___END_TEST;
rcs_ip = INTERNAL_IP_START+INTERNAL_IP___END_TEST;
} else {
xms_ip = OUTERNAL_IP_START+OUTERNAL_IP___END_TEST;
alt_ip = OUTERNAL_IP_START+OUTERNAL_IP___END_TEST;
rcs_ip = OUTERNAL_IP_START+OUTERNAL_IP___END_TEST;
}
} else {
if("Y".equals(ibju)) {
xms_ip = INTERNAL_IP_START+INTERNAL_IP___END_PROD_RCS_X;
alt_ip = INTERNAL_IP_START+INTERNAL_IP___END_PROD_RCS_X;
rcs_ip = INTERNAL_IP_START+INTERNAL_IP___END_PROD_RCS_O;
} else {
xms_ip = OUTERNAL_IP_START+OUTERNAL_IP___END_PROD_RCS_X;
alt_ip = OUTERNAL_IP_START+OUTERNAL_IP___END_PROD_RCS_X;
rcs_ip = OUTERNAL_IP_START+OUTERNAL_IP___END_PROD_RCS_O;
}
}
if(isTest) {
dbIp = "211.119.124.9";
}
if(isTest && (dbName.equals("MARIADB")||dbName.equals("MYSQL"))) {
dbPort = "4407";
}
String dbDriver = "";
String dbUrl = "";
switch(dbName) {
case "ORACLE" :
dbDriver = "oracle.jdbc.driver.OracleDriver";
dbUrl = "jdbc:oracle:thin:@"+dbIp+":"+dbPort+":"+dbService;
break;
case "MSSQL" :
dbDriver = "net.sourceforge.jtds.jdbc.Driver";
dbUrl = "jdbc:jtds:sqlserver://"+dbIp+":"+dbPort+"/"+dbService
+";encrypt=true;trustServerCertificate=true;useUnicode=true;characterEncoding=UTF-8";
break;
case "MYSQL" :
dbDriver = "com.mysql.cj.jdbc.Driver";
dbUrl = "jdbc:mysql://"+dbIp+":"+dbPort+"/"+dbService
+"?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=convertToNull&useSSL=false&characterEncoding=utf8";
break;
case "MARIADB" :
dbDriver = "org.mariadb.jdbc.Driver";
dbUrl = "jdbc:mariadb://"+dbIp+":"+dbPort+"/"+dbService
+"?autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&characterEncoding=utf8";
break;
case "PostgreSQL" :
dbDriver = "org.postgresql.Driver";
dbUrl = "jdbc:postgresql://"+dbIp+":"+dbPort+"/"+dbService+"?"+"currentSchema="+userSchema;
break;
case "CUBRID" :
dbDriver = "cubrid.jdbc.driver.CUBRIDDriver";
dbUrl = "jdbc:cubrid:"+dbIp+":"+dbPort+":"+dbService+":::";
break;
case "TIBERO" :
dbDriver = "com.tmax.tibero.jdbc.TbDriver";
dbUrl = "jdbc:tibero:thin:@"+dbIp+":"+dbPort+":"+dbService;
break;
case "ALTIBASE" :
dbDriver = "Altibase.jdbc.driver.AltibaseDriver";
dbUrl = "jdbc:Altibase://"+dbIp+":"+dbPort+"/"+dbService;
break;
}
TextFileMaker conf = new TextFileMaker();
//#
//# XMS/ALT/RCS 테스트배드로 먼저 기능 확인 후 진행 하셔아 합니다.
//#
//# Host Info(접속정보)
//##################################################
//# * 중요 유의사항
//##################################################
//# * [개발서버:테스트]에서는 [XMS/ALT/RCS] 연동계정은 모두 같은 계정으로 설정 가능
//##################################################
//# * [개발서버:테스트]는 [XMS/ALT/RCS] 모두 [동일IP:*.235, *.20]를 사용합니다.
//# * [실서버:운영]은 [XMS/ALT]는 [동일IP:*.235, *.20], [RCS]는 [별도IP:*.246, *.25]를 사용 합니다.
//# * 연동포트 임의변경 금지! 모바일메시지 서비스에 문의 후 변경 하세요!!!
//# * 연동포트 임의변경 금지! 모바일메시지 서비스에 문의 후 변경 하세요!!!
//# * 연동포트 임의변경 금지! 모바일메시지 서비스에 문의 후 변경 하세요!!!
//# xms_port = 20000 (실운영서버: 10000 , 개발서버 : 20000)
//# alt_port = 40000 (실운영서버: 15000 , 개발서버 : 40000)
//# rcs_port = 40000 (실운영서버: 10000 , 개발서버 : 40000)
//# * 연동포트 임의변경 금지! 모바일메시지 서비스에 문의 후 변경 하세요!!!
//# * 연동포트 임의변경 금지! 모바일메시지 서비스에 문의 후 변경 하세요!!!
//# * 연동포트 임의변경 금지! 모바일메시지 서비스에 문의 후 변경 하세요!!!
//##################################################
//# * 중요 유의사항
//##################################################
conf.addLine(sharps);
conf.addLine("## [XMS]문자(SMS/MMS) 서버 설정");
conf.addLine(sharps);
conf.addLine("xms_ip = "+xms_ip);
conf.addLine("xms_port = "+xms_port);
conf.addLine("xms_id = "+X_yeondongId);
conf.addLine("xms_pwd = "+yeondongPassword);
conf.addLine("## 주의 : 대량발송이 아니면 무조건 OFF, 옵션을 ON으로 하더라도 국가정보관리원 확인 필요");
conf.addLine("xms_link = OFF");
conf.addLine(sharps);
conf.addLine("## [ALT]앱메시지(KAKAO) 서버 설정");
conf.addLine(sharps);
conf.addLine("alt_ip = "+alt_ip);
conf.addLine("alt_port = "+alt_port);
conf.addLine("alt_id = "+A_yeondongId);
conf.addLine("alt_pwd = "+yeondongPassword);
conf.addLine("## 주의 : 대량발송이 아니면 무조건 OFF, 옵션을 ON으로 하더라도 국가정보관리원 확인 필요");
conf.addLine("alt_link = OFF");
conf.addLine(sharps);
conf.addLine("## [RCS]인증(안심)문자 서버 설정");
conf.addLine(sharps);
conf.addLine("rcs_ip = "+rcs_ip);
conf.addLine("rcs_port = "+rcs_port);
conf.addLine("rcs_id = "+R_yeondongId);
conf.addLine("rcs_pwd = "+yeondongPassword);
conf.addLine("## 주의 : 대량발송이 아니면 무조건 OFF, 옵션을 ON으로 하더라도 국가정보관리원 확인 필요");
conf.addLine("rcs_link = OFF");
conf.addLine(sharps);
//모바일메시지서비스 Agent 각 Line 별(xms, alt, rcs) 작동 여부 (ON, OFF | 기본 : ON)
//송신서비스,수신서비스 사용 여부와 관계없이 통신 정보를 주고 받아야하므로 모두 ON
conf.addLine("xms_sender = ON");
conf.addLine("xms_receiver = ON");
conf.addLine("alt_sender = ON");
conf.addLine("alt_receiver = ON");
conf.addLine("rcs_sender = ON");
conf.addLine("rcs_receiver = ON");
//DB정보
//##########################################################
//# 데이터베이스 정보
//##########################################################
String db_name_line = "db_name = "+dbName;
conf.addLine(db_name_line);
String db_driver_line = "db_driver = "+dbDriver;
conf.addLine(db_driver_line);
String db_url_line = "db_url = "+dbUrl;
conf.addLine(db_url_line);
String db_userid_line = "db_userid = "+dbUserId;
conf.addLine(db_userid_line);
String db_password_line = "db_password = "+dbPassword;
conf.addLine(db_password_line);
conf.addLine(sharps);
//# 로그 패스: 로그파일의 위치를 변경 할 수 있지만 기본 폴더를 권장합니다.
conf.addLine("log_path =");
conf.addLine(sharps);
//# 큐 패스: Que 패스 : Que파일 생성은 기본 폴더를 권장합니다.
conf.addLine("que_path =");
conf.addLine(sharps);
//# 로그 파일 삭제 옵션 (단위 : 일 | 기본 : 90)
//# log_path 에 설정한 폴더에 있는 log 파일을 삭제한다.
//# 생략 시 90일
//# 해당 파일을 삭제하지 않을 시 0 로 입력
conf.addLine("log_file_life_time = 90");
conf.addLine(sharps);
//# 모바일메시지서비스 Agent 네트워크 통신 암호화 옵션 (AES, OFF | 기본 : AES)
conf.addLine("# 모바일메시지서비스 Agent 네트워크 통신 암호화 옵션 (AES, OFF | 기본 : AES)");
conf.addLine("nuri_sign = OFF");
conf.addLine(sharps);
//# 모바일메시지서비스 Agent 각 Line 별(xms, alt, rcs) 네트워크 통신 암호화 옵션 (ON, OFF | 기본 : ON)
//# nuri_sign = AES 설정인 상태에서 전송구간 송수신 암호화 최종 사용 여부
conf.addLine("xms_sign = ON");
conf.addLine("alt_sign = ON");
conf.addLine("rcs_sign = ON");
conf.addLine(sharps);
//# 전송 속도를 향상하기 위한 모드 변경
//# 이 모드를 설정하면 전송 라인이 병렬로 동작을 하게 된다.
//# 방화벽에서 동일한 서버로 여러 개의 Session 이 동작하는 것에 대해서 허용하도록 해야 한다.
conf.addLine("## 주의 : 대량발송이 아니면 무조건 1, 옵션을 다른값으로 하더라도 국가정보관리원 확인 필요");
conf.addLine("xms_active_socket = 1");
conf.addLine("alt_active_socket = 1");
conf.addLine("rcs_active_socket = 1");
conf.addLine(sharps);
//# 전송 결과값을 빠르게 받기 위한 Receiver Multi (ON, OFF | 기본 : OFF)
//# Receiver 가 Sender 와 Session 수량이 연결되게 동작을 하게 된다.
//# 방화벽에서 동일한 서버로 여러 개의 Session 이 동작하는 것에 대해서 허용하도록 해야 한다.
conf.addLine("## 주의 : 대량발송이 아니면 무조건 OFF, 옵션을 ON으로 하더라도 국가정보관리원 확인 필요");
conf.addLine("receiver_multi = OFF");
conf.addLine(sharps);
//# Nuri2 재시작 시간 설정
//# 설정한 시간에 모든 프로세스를 종료 후 재기동 함.
//# 설정하지 않으면 재시작 하지 않음.
//# (0100 ~ 2400) 분 단위까지 적용 가능.
conf.addLine("nuri_restart_time = 0730");
conf.addLine(sharps);
//# Nuri2 REPORT 결과 갱신 (ON, OFF | 기본 : ON)
//# NRMSG_DATA 에 결과 갱신할 값이 없으면
//# 현재 달과 이전 달을 LOG 테이블을 각각 조회하여 결과 갱신하는 옵션
conf.addLine("report_follow_update = ON");
conf.addLine(sharps);
//# log 테이블 이동 모드 (BATCH, REAL | 기본 : BATCH)
//# BATCH : 전송 완료된 메시지를 일정 수량만큼 묶어서 처리
//# REAL : 전송 완료된 메시지를 실시간으로 log 테이블로 이동
conf.addLine("nuri_log_mode = REAL");
conf.addLine(sharps);
//# log 테이블을 생성 형태 옵션 (LOG, LOG_YYYY, LOG_YYYYMM | 기본 : LOG_YYYYMM)
//# NRMSG_LOG_YYYYMM 형태로 여러 개를 할 것인지
//# NRMSG_LOG 하나로 할 것인지
//# LOG : log 테이블 하나만 생성함
//# LOG_YYYY : log 테이블을 년 별로 나누어 생성함
//# LOG_YYYYMM : log 테이블을 년 매월로 나누어 생성함
conf.addLine("nuri_log_make_mode = LOG_YYYYMM");
conf.addLine(sharps);
//# 결과 완료 값 log 테이블 이동 유무 설정 (ON, OFF | 기본 : ON)
//# 결과 수신 완료 후 NRMSG_DATA 의 값을 NRMSG_LOG_YYYYMM 테이블로 이동 유무 설정
conf.addLine("db_log_move = OFF");
conf.addLine(sharps);
//# 레포트를 기다리는 시간 (단위 : 시간 | 기본 : 82)
//# 이 시간이 지날 경우 더 이상 레포트를 기다리지 않고 해당레코드를 log 테이블로 이동시킨다.
conf.addLine("record_life_time = 82");
conf.addLine(sharps);
//# Agent 의 장애 시 동작 지속 시간 추가 (단위 : 시간 | 기본 : 48)
//# Socket 및 DB 연결이 안 되고 장애가 발생하고 있을 때 동작 지속 시간이
//# 초과하면 Agent 의 기동을 모두 중지함
//# 생략 시 48시간
//# 해당 장애시간에 상관없이 계속 연결을 원할 시 0시로 입력
//# 예) nuri_life_time = 1 (1시간 동안만 동작을 지속하고도 장애 시 Agent 로 종료함)
//# nuri_life_time = 0 (장애가 있어 연결이 안 되고 있어서 Agent 의 동작을 계속 유지함)
conf.addLine("nuri_life_time = 48");
conf.addLine(sharps);
//# 사용하는 테이블의 사용자를 지정하는 옵션
conf.addLine("db_select_user =");
conf.addLine(sharps);
//# 사용하는 테이블명을 변경하는 옵션
//# 기존에 테이블명을 사용자가 임의의 테이블명으로 변경할 수 있다.
conf.addLine("db_table_name.NRMSG_DATA = nuri2_nrmsg_data");
conf.addLine("db_table_name.NRMSG_LOG = nuri2_nrmsg_log");
conf.addLine("db_table_name.NRMSG_RSLT = nuri2_nrmsg_rslt");
conf.addLine("db_table_name.NRMSG_DUPLEX = nuri2_nrmsg_duplex");
conf.addLine(sharps);
//# 사용하는 시퀀스 명을 변경하는 옵션
//# 기존에 시퀀스 명을 사용자가 임의의 시퀀스 명으로 변경할 수 있다.
conf.addLine("db_sequence_name.NRMSG_DATA = sq_nuri2_nrmsg_data");
conf.addLine("db_sequence_name.NRMSG_RSLT = sq_nuri2_nrmsg_rslt");
conf.addLine("db_sequence_name.NRMSG_DUPLEX = sq_nuri2_nrmsg_duplex");
conf.addLine(sharps);
//# 데이터베이스의 사용자 필드, 사용자 인덱스 추가 가능한 총량
//# 필드 및 인덱스는 최대 10개만 가능하다.
//# 예) db_max_count = 5 <-- db_field, db_index 를 5개 이상 설정해 놓아도 5개까지만 추가가 된다.(최대 10개)
conf.addLine("db_max_count = 10");
conf.addLine(sharps);
//# 데이터베이스의 사용자 필드 추가 옵션
//# 생성할 필드명과 데이터 타입 및 옵션 사이엔 스페이스로 구분해 줘야 한다.
//# 아래 예와 같이 설정을 하면 2개의 필드가가 생성되며
//# 테이블 맨 마지막에 MSG_ETC1, MSG_ETC2 필드가 추가된다.
//# 예) db_field = MSG_ETC1 varchar(10)
//# db_field = MSG_ETC2 varchar(10)
for(String customCol : customCols) {
conf.addLine("db_field = "+customCol);
}
conf.addLine(sharps);
//# 데이터베이스의 사용자 인덱스 추가 옵션
//# 생성할 인덱스의 필드와 필드 사이는 콤마로 구분해 줘야 하며
//# 정렬( 오름차순:ASC, 내림차순:DESC) 도 설정할 수 있다.
//# 아래 예와 같이 설정을 하면 3개의 인덱스가 생성되며
//# 인덱스 명은 "IDX_로그테이블명_순서"로 생성이 된다.
//# 예) db_index = MSG_KEY
//# db_index = CUR_STATE DESC, REQ_DATE ASC
//# db_index = CALL_TO
conf.addLine("db_index = ");
conf.addLine(sharps);
//# 전송 데이터 조회 시간 (단위 : 초 | 기본 : 1)
conf.addLine("db_tran_term = 1");
conf.addLine(sharps);
//# DBMS 의 연결 유지를 의한 조회 시간 (단위 : 초 | 기본 : 60)
//# 커넥션 유효 쿼리는 각 DBMS 의 테이블명 조회 방식을 사용함
conf.addLine("db_ping_term = 60");
conf.addLine(sharps);
//# 모바일메시지서비스 G/W 와 연결 상태 확인 시간 (단위 : 초 | 기본 : 50)
conf.addLine("ping_term = 50");
conf.addLine(sharps);
//# The time when sender query to DBMS
//# "ORDER BY NRMSG_DATA.MSG_KEY" 사용 여부 (ON, OFF | 기본 : ON)
//# SELECT 시 ORDER BY NRMSG_DATA.MSG_KEY 를 사용하면
//# DB 서버에 부하가 약간 생기는 문제로 업체가 요청한 옵션.
//# OFF 하면 SELECT 시 CUR_STATE = 1의 값을 무작위로 가져오므로
//# 메시지 사이사이 늦게 전송되는 것이 있음.
//#
//# db_orderby : "ORDER BY NRMSG_DATA.MSG_KEY" 사용여부 (ON, OFF)
conf.addLine("db_orderby = ON");
conf.addLine(sharps);
//# 테이블, 인덱스 생성
conf.addLine("db_create_table = ON");
conf.addLine(sharps);
//# 시퀀스생성
conf.addLine("db_create_sequence = ON");
conf.addLine(sharps);
//# MySQL, MariaDB 전용 옵션 (MyISAM, InnoDB)
//# MySQL TABLE 생성 시 Engine 타입 설정
//# 설정 안 하면 MySQL 기본 설정에 따라 Engine Type 생성
//# "SELECT engine, support FROM information_schema.engines" 질의 시 support 가 default 로 되어 있는 engine
String storageEngine = "InnoDB";
if(dbName.equals("MARIADB")||dbName.equals("MYSQL")) {
storageEngine = "";
}
conf.addLine("db_storage_engine = "+storageEngine);
conf.addLine(sharps);
//##########################################################################################################
//# 메시지 타입별 CharSet
//# 각각의 메시지 타입별로 G/W 에 전송할 Charset 을 설정할 수 있다.
//# 고도화 서버는 모두 UTF-8 기본 값
//# 이전 SMS, MMS 서버는 EUC-KR
//#----------------------------------------------
//# EUC-KR UTF-8, UTF8, euckr, ISO-8859-1(ISO 8859)
//# DB마다 다름 : euckr, euc_kr, eucksc 으로 명칭이 틀릴경우 EUC-KR로 사용.
//# 한글이 깨지는 경우 아래와 같이 설정도 가능
//# CUBRID : charset_xxx = ko_KR.utf8
//# TIBERO : charset_xxx = EUC-KR
//#----------------------------------------------
conf.addLine("charset_sms = EUC-KR");
conf.addLine("charset_mms = EUC-KR");
conf.addLine("charset_alt = UTF-8");
conf.addLine("charset_rcs = UTF-8");
conf.addLine(sharps);
//# 메시지 MSG_TYPE 별 CONTENTS_TYPE_1 ~ 3
//# CONTENTS_TYPE_1 ~ 3 에 들어가는 전송 타입으로 KAKAO 알림톡, RCS 는 계속 추가 예정
conf.addLine("msg_type.SMS = SMS");
conf.addLine("msg_type.MMS = LMS,MMS");
conf.addLine("msg_type.ALT = ALT,ALI,FRT,FRI,FRW");
conf.addLine("msg_type.RCS = RCS,RCL,RCM,RCT,RCD,RCF,RIT");
conf.addLine(sharps);
//# 모바일메시지서비스 G/W 와 연결 장애 시 실패 사용 여부 (ON, OFF | 기본 : OFF)
//# xxx_sender = ON 인 상태에서 각 메시지 타입별 sender 에 문제가 발생했을 때 적용되는 옵션으로
//# 메시지 전송 시 재전송으로 입력한 경우 실패 값으로 처리하여 2번째 또는 3번째 메시지로 전송하게 한다.
//# 전송할 메시지의 상태 값(MSG_STATE) 6, 결과 코드(RSLT_CODE) 990 으로 모두 실패 처리
conf.addLine("sender_failure_switch = ON");
conf.addLine(sharps);
//# 하루에 한 수신번호에 보낼 수 있는 메시지 수량 (기본 : 10개)
//# 생략 시 10개
//# 0개로 세팅 시 사용 안 함
//# # 메시지 내용과 상관 없이 동일 폰번호에 나가는 건수.
conf.addLine("duplicate_phone_count = 200");
conf.addLine(sharps);
//# Limit Time Zone (전송 제한 시간대 설정)
//# 전송 제한 시작 시간 (0100 ~ 2400) 분 단위까지 적용 가능, 생략 시 24시간 전송 가능.
//# 예) limit_begin = 2100
//# 예) limit_end = 0600
conf.addLine("limit_begin =");
conf.addLine("limit_end =");
conf.addLine(sharps);
//# 현재 시간으로부터 설정 시간(RES_DATE 입력 시간) 이전 시간까지만 전송 (단위 : 시간 | 기본 : 3)
//# 생략 시 3시간
conf.addLine("before_time = 3");
conf.addLine(sharps);
//# Active / Stand By 이중화 사용 여부 (ON, OFF | 기본 : OFF)
//# OFF 일 경우에 동작하지 않는다.
//# 이중화를 사용하고 MMS 전송 시엔 NRMSG_DATA 테이블이 참조하는
//# XMS_FILE_NAME_1 ~ XMS_FILE_NAME_3 경로 값을 꼭 MASTER, SLAVE 서버 각각에
//# 동일한 경로에 저장하여 사용해야 한다.
//# 모듈 이중화 설정.
//# 부팅이 느려짐
conf.addLine("duplex_switch = OFF");
conf.addLine("duplex_id = MASTER");
//로그레벨
conf.addLine(sharps);
conf.addLine("log 기록 범위 설정");
conf.addLine("DEBUG : NURI2 의 상세 로그");
conf.addLine("FATAL : NURI2 의 치명적 에러");
conf.addLine("ERROR : NURI2 가 수행 가능 정도의 에러");
conf.addLine("WARN : NURI2 가 시스템에 문제를 일으킬 가능성이 있을 때 사용");
conf.addLine("INFO : NURI2 의 정보용으로 사용");
conf.addLine("console.log_level = INFO");
conf.addLine("system.log_level = INFO");
//파일 생성
conf.makeTxtFile("C:\\Temp",nuri2confName,conf.getFileCn());
return "C:\\Temp" + File.separator + nuri2confName;
}
}