4 Commits

3 changed files with 170 additions and 31 deletions
@@ -935,7 +935,7 @@ public class Logger implements LogKeys {
// SIFT appender를 추가할 대상 로거 목록
// → ESBFW, ADAPTER, DEFAULT 등 거래 처리에 관여하는 로거 추가
String[] siftTargetLoggers = { LOGGER_ESBFW, LOGGER_ADAPTER, LOGGER_DEFAULT
String[] siftTargetLoggers = { LOGGER_ESBFW, LOGGER_ADAPTER, LOGGER_DEFAULT, "org.apache.hc.client5.http"
// 필요 시 LOGGER_TRAN, LOGGER_NET 등 추가
};
@@ -437,4 +437,102 @@ public final class MaskingUtils {
}
return sb.toString();
}
public static final int ResidentNumber = 11;
public static final int DriverLicense = 12;
public static final int Passport = 13;
public static final int ForeignerNumber = 14;
public static final int AccountNumber = 21;
public static final int CardNumber = 22;
public static final int CardExpiry = 23;
public static final int Cvv = 24;
public static final int Password = 31;
public static final int PhoneNumber = 41;
public static final int MobileNumber = 41;
public static final int FaxNumber = 41;
public static final int Email = 42;
public static final int KoreanName = 43;
public static final int EnglishName = 44;
public static final int JibunAddress = 45;
public static final int RoadAddress = 46;
public static final int Ip = 51;
public static final int All = 99;
/**
* 마스킹 타입코드에 맞추어 마스킹 처리
*
* @param str
* @param maskOffset
* @return
*/
public static String mask(String str, int maskOffset) {
switch (maskOffset) {
case ResidentNumber:
return maskResidentNumber(str);
case DriverLicense:
return maskDriverLicense(str);
case Passport:
return maskPassport(str);
case ForeignerNumber:
return maskForeignerNumber(str);
case AccountNumber:
return maskAccountNumber(str);
case CardNumber:
return maskCardNumber(str);
case CardExpiry:
return maskCardExpiry(str);
case Cvv:
return maskCvv(str);
case Password:
return maskPassword(str);
// PhoneNumber(41) = MobileNumber(41) = FaxNumber(41): 값이 같아
// case 레이블을 각각 선언하면 컴파일 에러(중복 case)이므로 하나로 통합.
// maskPhoneNumber가 전화/휴대폰/팩스 형식을 모두 처리함.
case PhoneNumber:
return maskPhoneNumber(str);
case Email:
return maskEmail(str);
case KoreanName:
return maskKoreanName(str);
case EnglishName:
return maskEnglishName(str);
case JibunAddress:
return maskJibunAddress(str);
case RoadAddress:
return maskRoadAddress(str);
case Ip:
return maskIpAddress(str);
case All:
return stars(str.length());
default:
return str;
}
}
}
@@ -10,12 +10,16 @@ public class STDMessageErrorKeys {
private static final String STDMESSAGE_ERROR_CODE ="STDMESSAGE_ERROR_CODE";
private static final String SUCCESS_CODE ="SUCCESS_CODE";
private static final String SUCCESS_MSG ="SUCCESS_MSG";
private static final String SUCCESS_DESC ="SUCCESS_DESC";
private static final String SYSTEM_ERROR_CODE ="SYSTEM_ERROR_CODE";
private static final String SYSTEM_ERROR_MSG ="SYSTEM_ERROR_MSG";
private static final String SYSTEM_ERROR_DESC ="SYSTEM_ERROR_DESC";
private static final String TIMEOUT_ERROR_CODE ="TIMEOUT_ERROR_CODE";
private static final String TIMEOUT_ERROR_MSG ="TIMEOUT_ERROR_MSG";
private static final String TIMEOUT_ERROR_DESC ="TIMEOUT_ERROR_DESC";
private static final String BIZ_ERROR_CODE ="BIZ_ERROR_CODE";
private static final String BIZ_ERROR_MSG ="BIZ_ERROR_MSG";
private static final String BIZ_ERROR_DESC ="BIZ_ERROR_DESC";
private static final String DUP_LOGIN_ERROR_CODE ="DUP_LOGIN_ERROR_CODE";
private static final String DUP_LOGIN_ERROR_MSG ="DUP_LOGIN_ERROR_MSG";
private static final String NOT_LOGIN_ERROR_CODE ="NOT_LOGIN_ERROR_CODE";
@@ -28,44 +32,72 @@ public class STDMessageErrorKeys {
private static final String UUID_MISMATCH_ERROR_MSG ="UUID_MISMATCH_ERROR_MSG";
private static final String VALID_VALUE_ERROR_CODE ="VALID_VALUE_ERROR_CODE";
private static final String VALID_VALUE_ERROR_MSG ="VALID_VALUE_ERROR_MSG";
private static final String VALID_VALUE_ERROR_DESC ="VALID_VALUE_ERROR_DESC";
private static final String RATELIMIT_ERROR_CODE ="RATELIMIT_ERROR_CODE";
private static final String RATELIMIT_ERROR_MSG ="RATELIMIT_ERROR_MSG";
private static final String RATELIMIT_ERROR_DESC ="RATELIMIT_ERROR_DESC";
private static final String RESTRICT_ERROR_CODE ="RESTRICT_ERROR_CODE";
private static final String RESTRICT_ERROR_MSG ="RESTRICT_ERROR_MSG";
private static final String RESTRICT_ERROR_DESC ="RESTRICT_ERROR_DESC";
//사이트별 에러코드
public static String SUCCESS_CODE_VALUE ;//성공코드
public static String SUCCESS_MSG_VALUE ;//성공메시지
public static String SYSTEM_ERROR_CODE_VALUE ;//시스템 에러코드
public static String SYSTEM_ERROR_MSG_VALUE ;//시스템 에러메시지
public static String BIZ_ERROR_CODE_VALUE ;//업무 에러코드
public static String BIZ_ERROR_MSG_VALUE ;//업무 에러메시지
public static String TIMEOUT_ERROR_CODE_VALUE ;//타임아웃 에러코드
public static String TIMEOUT_ERROR_MSG_VALUE ;//타임아웃 에러메시지
public static String DUP_LOGIN_ERROR_CODE_VALUE ;//중복로그인 에러코드
public static String DUP_LOGIN_ERROR_MSG_VALUE ;//중복로그인 에러메시지
public static String NOT_LOGIN_ERROR_CODE_VALUE ;//미로그인 에러코드
public static String NOT_LOGIN_ERROR_MSG_VALUE ;//미로그인 에러메시지
public static String APPROVE_ERROR_CODE_VALUE ;//책임자승인 에러코드
public static String APPROVE_ERROR_MSG_VALUE ;//책임자승인 에러메시지
public static String APPROVE_NOT_FOUND_ERROR_CODE_VALUE ;//책임자 승인자가 존재하지 않는 에러코드
public static String APPROVE_NOT_FOUND_ERROR_MSG_VALUE ;//책임자 승인자가 존재하지 않는 에러메시지
public static String UUID_MISMATCH_ERROR_CODE_VALUE ;//UUID가 같지 않은 에러코드
public static String UUID_MISMATCH_ERROR_MSG_VALUE ;//UUID가 같지 않은 에러메시지
public static String VALID_VALUE_ERROR_CODE_VALUE ;//유효값 에러코드
public static String VALID_VALUE_ERROR_MSG_VALUE ;//유효값 에러메시지
public static String RATELIMIT_ERROR_CODE_VALUE ;//유량제어 에러코드
public static String RATELIMIT_ERROR_MSG_VALUE ;//유량제어 에러메시지
public static volatile String SUCCESS_CODE_VALUE ;//성공코드
public static volatile String SUCCESS_MSG_VALUE ;//성공메시지
public static volatile String SUCCESS_DESC_VALUE ;//성공메시지
public static volatile String SYSTEM_ERROR_CODE_VALUE ;//시스템 에러코드
public static volatile String SYSTEM_ERROR_MSG_VALUE ;//시스템 에러메시지
public static volatile String SYSTEM_ERROR_DESC_VALUE ;//시스템 에러메시지
public static volatile String BIZ_ERROR_CODE_VALUE ;//업무 에러코드
public static volatile String BIZ_ERROR_MSG_VALUE ;//업무 에러메시지
public static volatile String BIZ_ERROR_DESC_VALUE ;//업무 에러메시지
public static volatile String TIMEOUT_ERROR_CODE_VALUE ;//타임아웃 에러코드
public static volatile String TIMEOUT_ERROR_MSG_VALUE ;//타임아웃 에러메시지
public static volatile String TIMEOUT_ERROR_DESC_VALUE ;//타임아웃 에러메시지
public static volatile String DUP_LOGIN_ERROR_CODE_VALUE ;//중복로그인 에러코드
public static volatile String DUP_LOGIN_ERROR_MSG_VALUE ;//중복로그인 에러메시지
public static volatile String NOT_LOGIN_ERROR_CODE_VALUE ;//미로그인 에러코드
public static volatile String NOT_LOGIN_ERROR_MSG_VALUE ;//미로그인 에러메시지
public static volatile String APPROVE_ERROR_CODE_VALUE ;//책임자승인 에러코드
public static volatile String APPROVE_ERROR_MSG_VALUE ;//책임자승인 에러메시지
public static volatile String APPROVE_NOT_FOUND_ERROR_CODE_VALUE ;//책임자 승인자가 존재하지 않는 에러코드
public static volatile String APPROVE_NOT_FOUND_ERROR_MSG_VALUE ;//책임자 승인자가 존재하지 않는 에러메시지
public static volatile String UUID_MISMATCH_ERROR_CODE_VALUE ;//UUID가 같지 않은 에러코드
public static volatile String UUID_MISMATCH_ERROR_MSG_VALUE ;//UUID가 같지 않은 에러메시지
public static volatile String VALID_VALUE_ERROR_CODE_VALUE ;//유효값 에러코드
public static volatile String VALID_VALUE_ERROR_MSG_VALUE ;//유효값 에러메시지
public static volatile String VALID_VALUE_ERROR_DESC_VALUE ;//유효값 에러메시지
public static volatile String RATELIMIT_ERROR_CODE_VALUE ;//유량제어 에러코드
public static volatile String RATELIMIT_ERROR_MSG_VALUE ;//유량제어 에러메시지
public static volatile String RATELIMIT_ERROR_DESC_VALUE ;//유량제어 에러메시지
public static volatile String RESTRICT_ERROR_CODE_VALUE ;//거래제한 에러코드
public static volatile String RESTRICT_ERROR_MSG_VALUE ;//거래제한 에러메시지
public static volatile String RESTRICT_ERROR_DESC_VALUE ;//거래제한 에러메시지
//기존 오류코드는 900400 과 900401만 사용했음
static {
PropManager manager = PropManager.getInstance();
PropManager manager = PropManager.getInstance();
loadValues(manager);
// STDMESSAGE_ERROR_CODE 그룹 리로드 시 자동 갱신
manager.addPropertyChangeListener(evt -> {
if (STDMESSAGE_ERROR_CODE.equals(evt.getPropertyName())) {
loadValues(PropManager.getInstance());
}
});
}
private static synchronized void loadValues(PropManager manager) {
SUCCESS_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,SUCCESS_CODE,"900000");
SUCCESS_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,SUCCESS_MSG,"정상 처리되었습니다.");
SUCCESS_DESC_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,SUCCESS_DESC,SUCCESS_MSG_VALUE);
SYSTEM_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,SYSTEM_ERROR_CODE,"900400");
SYSTEM_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,SYSTEM_ERROR_MSG,"시스템오류가 발생하였습니다.");
SYSTEM_ERROR_DESC_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,SYSTEM_ERROR_DESC,SYSTEM_ERROR_MSG_VALUE);
TIMEOUT_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,TIMEOUT_ERROR_CODE,"900401");
TIMEOUT_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,TIMEOUT_ERROR_MSG,"타임아웃오류가 발생하였습니다.");
TIMEOUT_ERROR_DESC_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,TIMEOUT_ERROR_DESC,TIMEOUT_ERROR_MSG_VALUE);
BIZ_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,BIZ_ERROR_CODE,"900402");
BIZ_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,BIZ_ERROR_MSG,"업무오류가 발생하였습니다.");
BIZ_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,BIZ_ERROR_MSG,"API오류가 발생하였습니다.");
BIZ_ERROR_DESC_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,BIZ_ERROR_DESC,BIZ_ERROR_MSG_VALUE);
DUP_LOGIN_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,DUP_LOGIN_ERROR_CODE,"900403");
DUP_LOGIN_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,DUP_LOGIN_ERROR_MSG,"중복로그인오류가 발생하였습니다.");
NOT_LOGIN_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,NOT_LOGIN_ERROR_CODE,"900404");
@@ -78,8 +110,17 @@ public class STDMessageErrorKeys {
UUID_MISMATCH_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,UUID_MISMATCH_ERROR_MSG,"MCI 세션ID가 같지않은 오류가 발생하였습니다.");
VALID_VALUE_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,VALID_VALUE_ERROR_CODE,"900408");
VALID_VALUE_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,VALID_VALUE_ERROR_MSG,"유효값 오류가 발생하였습니다.");
RATELIMIT_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,RATELIMIT_ERROR_CODE,"900409");
RATELIMIT_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,RATELIMIT_ERROR_MSG,"RateLimiter Overflow");
VALID_VALUE_ERROR_DESC_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,VALID_VALUE_ERROR_DESC,VALID_VALUE_ERROR_MSG_VALUE);
RATELIMIT_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,RATELIMIT_ERROR_CODE,"900409");
RATELIMIT_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,RATELIMIT_ERROR_MSG,"RateLimiter Overflow");
RATELIMIT_ERROR_DESC_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,RATELIMIT_ERROR_DESC,RATELIMIT_ERROR_MSG_VALUE);
RESTRICT_ERROR_CODE_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,RESTRICT_ERROR_CODE,"900410");
RESTRICT_ERROR_MSG_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,RESTRICT_ERROR_MSG,"거래제한");
RESTRICT_ERROR_DESC_VALUE = manager.getProperty(STDMESSAGE_ERROR_CODE,RESTRICT_ERROR_DESC,RESTRICT_ERROR_MSG_VALUE);
}
public static void reload() {
loadValues(PropManager.getInstance());
}
private STDMessageErrorKeys() {