-
-
-
-
diff --git a/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp b/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp
index 9fb1e00..5a6de0c 100644
--- a/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp
+++ b/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp
@@ -71,7 +71,7 @@
$('#grid').children().remove();
- const itemTypes = ['Field', 'Grid', 'Group', 'Attr'];
+ const itemTypes = ['Field', 'Grid', 'Group', 'Attr', 'Array'];
columns = [ // for columnData prop
{ title: '<%= localeMessage.getString("layoutMan.itmeEn") %>', name: 'loutItemName', type: 'text', width:280, resize:true, minWidth:120 },
diff --git a/WebContent/jsp/onl/admin/rule/transform2/transform2ManDetail.jsp b/WebContent/jsp/onl/admin/rule/transform2/transform2ManDetail.jsp
index 08e7907..8fb0a7a 100644
--- a/WebContent/jsp/onl/admin/rule/transform2/transform2ManDetail.jsp
+++ b/WebContent/jsp/onl/admin/rule/transform2/transform2ManDetail.jsp
@@ -54,6 +54,7 @@
const LAYOUT_ITEM_TYPE_GROUP = "Group";
const LAYOUT_ITEM_TYPE_GRID = "Grid";
const LAYOUT_ITEM_TYPE_FIELD = "Field";
+ const LAYOUT_ITEM_TYPE_ARRAY = "Array";
var isDetail = false;
@@ -550,6 +551,14 @@
return data;
}
+ // 항목 자신이 Array인 경우, 경로/변환명령 끝에 반복 표시 [*]를 추가
+ function addArrayTag(loutItemType, data) {
+ if (loutItemType == LAYOUT_ITEM_TYPE_ARRAY && !data.endsWith("[*]")) {
+ data = data + "[*]";
+ }
+ return data;
+ }
+
//변환명에 있는 서비스코드와 if서비스 코드 매칭
function validation(){
if ($('input[name=cnvsnName]').val() == '') {
@@ -889,10 +898,10 @@
let selectValue = "";
let targetValue = "";
for ( var i = 0; i < sourceData.length; i++) {
- if (sourceData[i]['loutItemType'] != "Field" && sourceData[i]['loutItemType'] != "Attr") continue;
+ if (sourceData[i]['loutItemType'] != "Field" && sourceData[i]['loutItemType'] != "Attr" && sourceData[i]['loutItemType'] != "Array") continue;
selectValue = (sourceData[i]['LOUTITEMPATH']).substr(sourceData[i]['loutName'].length+1);
for (var j = 0; j
');
@@ -936,15 +945,15 @@
var targetValue = "";
var j=tgtIndex-1-1;
for ( var i = srcIndex-1; i < sourceData.length; i++) {
- if (sourceData[i]['loutItemType'] != LAYOUT_ITEM_TYPE_FIELD) continue;
+ if (sourceData[i]['loutItemType'] != LAYOUT_ITEM_TYPE_FIELD && sourceData[i]['loutItemType'] != LAYOUT_ITEM_TYPE_ARRAY) continue;
j++;
- while (targetData.length -1 >= j &&targetData[j]["loutItemType"] != LAYOUT_ITEM_TYPE_FIELD){
+ while (targetData.length -1 >= j && targetData[j]["loutItemType"] != LAYOUT_ITEM_TYPE_FIELD && targetData[j]["loutItemType"] != LAYOUT_ITEM_TYPE_ARRAY){
j++;
}
if (targetData.length -1 < j) break;
var targetRowId = targetData[j]['id'];
- targetGrid.jqGrid('setCell',targetRowId,'CNVSNCMDNAME',addGroupTag(srcGroup,sourceData[i]['LOUTITEMPATH']));
- targetGrid.jqGrid('setCell',targetRowId,'CNVSNRSULTITEMPATHNAME',addGroupTag(tgtGroup,targetData[j]['LOUTITEMPATH']));
+ targetGrid.jqGrid('setCell',targetRowId,'CNVSNCMDNAME',addArrayTag(sourceData[i]['loutItemType'], addGroupTag(srcGroup,sourceData[i]['LOUTITEMPATH'])));
+ targetGrid.jqGrid('setCell',targetRowId,'CNVSNRSULTITEMPATHNAME',addArrayTag(targetData[j]['loutItemType'], addGroupTag(tgtGroup,targetData[j]['LOUTITEMPATH'])));
targetGrid.jqGrid('setCell',targetRowId,'CNVSNITEMSERNO',targetData[j]['loutItemSerno']);
const sourceEndpointElementId = sourceGrid.getEndpointElementId(sourceData[i]['id']);
@@ -1015,7 +1024,7 @@
var targetData = targetGrid.getRowData();
var gridData = new Array();
for (var i = 0; i ";
}else{
return "";
@@ -1170,7 +1179,7 @@
function tgtformatterFunction(cellvalue,options,rowObject){
var rowId = options["rowId"];
var loutItemType = rowObject["loutItemType"];
- if (loutItemType == 'Field' || loutItemType == 'Attr'){
+ if (loutItemType == 'Field' || loutItemType == 'Attr' || loutItemType == 'Array'){
return "";
@@ -1669,8 +1678,8 @@
return;
}
- if ((sourceRow["loutItemType"] != 'Field' && sourceRow["loutItemType"] != 'Attr')
- || (targetRow["loutItemType"] != 'Field' && targetRow["loutItemType"] != 'Attr')) {
+ if ((sourceRow["loutItemType"] != 'Field' && sourceRow["loutItemType"] != 'Attr' && sourceRow["loutItemType"] != 'Array')
+ || (targetRow["loutItemType"] != 'Field' && targetRow["loutItemType"] != 'Attr' && targetRow["loutItemType"] != 'Array')) {
alert('<%=localeMessage.getString("transformManDetail.alert3")%>');
return ;
}
@@ -1684,7 +1693,7 @@
if (targetRow['CNVSNCMDNAME'] == '') {
// 변환 명령 값이 한번 설정 되면 변경 되지 않게 함.
- var cnvsnCmdName = addGroupTag(srcGroup,sourceRow["LOUTITEMPATH"]);
+ var cnvsnCmdName = addArrayTag(sourceRow["loutItemType"], addGroupTag(srcGroup,sourceRow["LOUTITEMPATH"]));
// function까지 처리되도록 수정했으나, parameter가 하나인 경우에만 정상처리됨
if($('#functionCombo').val() != "") {
cnvsnCmdName = $('#functionCombo').val() + "(" + cnvsnCmdName + ")";
@@ -1693,7 +1702,7 @@
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNCMDNAME', cnvsnCmdName);
}
- targetGrid.jqGrid('setCell',tgtRowId,'CNVSNRSULTITEMPATHNAME',addGroupTag(tgtGroup,targetRow["LOUTITEMPATH"]));
+ targetGrid.jqGrid('setCell',tgtRowId,'CNVSNRSULTITEMPATHNAME',addArrayTag(targetRow["loutItemType"], addGroupTag(tgtGroup,targetRow["LOUTITEMPATH"])));
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNITEMSERNO',targetRow['loutItemSerno']);
targetGrid.jqGrid('setCell',tgtRowId,'CNVSNSRCITEMS', cnvsnSrcItems);
targetGrid.jqGrid('setCell',tgtRowId,'ISVALIDMAPPING', true);
@@ -1885,8 +1894,8 @@
if (loutItemType == LAYOUT_ITEM_TYPE_GRID || loutItemType == LAYOUT_ITEM_TYPE_GROUP) {
// group 인 경우
items = createGridGroupContextMenuItems(grid, rowId);
- } else if(loutItemType == LAYOUT_ITEM_TYPE_FIELD) {
- // field 인 경우
+ } else if(loutItemType == LAYOUT_ITEM_TYPE_FIELD || loutItemType == LAYOUT_ITEM_TYPE_ARRAY) {
+ // field, array 인 경우
items = createFieldContextMenuItems(grid, positionElement.attr('id'));
} else {
return false;
@@ -1989,7 +1998,7 @@
break;
}
- if (loutItemType == LAYOUT_ITEM_TYPE_FIELD) {
+ if (loutItemType == LAYOUT_ITEM_TYPE_FIELD || loutItemType == LAYOUT_ITEM_TYPE_ARRAY) {
loutItemPath = loutItemPath.replace(new RegExp("^" + prefix), "");
console.debug(grid.getId() + " : loutItemPath : " + loutItemPath);
rowData['GROUP_LOUTITEMPATH'] = loutItemPath;
diff --git a/WebContent/jsp/onl/apim/portalorg/portalOrgManDetail.jsp b/WebContent/jsp/onl/apim/portalorg/portalOrgManDetail.jsp
index a25e509..b4ccc1d 100644
--- a/WebContent/jsp/onl/apim/portalorg/portalOrgManDetail.jsp
+++ b/WebContent/jsp/onl/apim/portalorg/portalOrgManDetail.jsp
@@ -11,7 +11,7 @@
response.setHeader("Expires", "0");
MonitoringContext monitoringContext = (MonitoringContext)CommonUtil.getBean(request, "monitoringContext");
- String reverseProxyUrl = monitoringContext.getStringProperty("djb.reverse_proxy.url", "");
+ String reverseProxyUrl = monitoringContext.getStringProperty(MonitoringContext.RMS_WEBHOOK_REVERSE_PROXY_URL, "");
%>
<%!
public String getRequiredLabel(String label) {
diff --git a/WebContent/jsp/onl/apim/webhook/webhookSendLogMan.jsp b/WebContent/jsp/onl/apim/webhook/webhookSendLogMan.jsp
new file mode 100644
index 0000000..fba0ece
--- /dev/null
+++ b/WebContent/jsp/onl/apim/webhook/webhookSendLogMan.jsp
@@ -0,0 +1,242 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" %>
+<%@ page import="java.io.*" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+<%@ include file="/jsp/common/include/localemessage.jsp" %>
+<%
+ response.setHeader("Pragma", "No-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setHeader("Expires", "0");
+%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
웹훅 발송 로그외부로 발송된 웹훅 이력을 조회합니다.
+
+
+
+
+
+
+
diff --git a/WebContent/jsp/onl/apim/webhook/webhookSendLogManDetail.jsp b/WebContent/jsp/onl/apim/webhook/webhookSendLogManDetail.jsp
new file mode 100644
index 0000000..c22b9f9
--- /dev/null
+++ b/WebContent/jsp/onl/apim/webhook/webhookSendLogManDetail.jsp
@@ -0,0 +1,137 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" %>
+<%@ page import="java.io.*" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+<%@ include file="/jsp/common/include/localemessage.jsp" %>
+<%
+ response.setHeader("Pragma", "No-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setHeader("Expires", "0");
+%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
웹훅 발송 로그 상세
+
+
+
+
+
+
+ | ID |
+ |
+ 기관명 |
+ |
+
+
+ | 이벤트유형 |
+ |
+ Status Code |
+ |
+
+
+ | Target URL |
+ |
+ Proxy URL |
+ |
+
+
+ | 성공여부 |
+ |
+ 재시도횟수 |
+ |
+
+
+ | 발송서버 |
+ |
+ 발송일시 |
+ |
+
+
+ | Signature |
+ |
+
+
+ | Payload |
+ |
+
+
+ | Response Body |
+ |
+
+
+ | 에러 메세지 |
+ |
+
+
+
+
+
+
diff --git a/WebContent/jsp/onl/transaction/apim/apiInterfaceManDetail.jsp b/WebContent/jsp/onl/transaction/apim/apiInterfaceManDetail.jsp
index 5a1313c..cf62c8a 100644
--- a/WebContent/jsp/onl/transaction/apim/apiInterfaceManDetail.jsp
+++ b/WebContent/jsp/onl/transaction/apim/apiInterfaceManDetail.jsp
@@ -486,6 +486,7 @@
}
if(data.errResponseTransform != null && data.errResponseTransform != '' && data.errTransformYn == 'Y') {
+ $('#toggleTransformYn').bootstrapToggle('on');
$('#toggleErrTransformYn').bootstrapToggle('on');
$('#rowErrResponseTransform').show();
} else {
diff --git a/src/main/java/com/eactive/eai/rms/common/acl/user/UserManService.java b/src/main/java/com/eactive/eai/rms/common/acl/user/UserManService.java
index dec6171..8a54dba 100644
--- a/src/main/java/com/eactive/eai/rms/common/acl/user/UserManService.java
+++ b/src/main/java/com/eactive/eai/rms/common/acl/user/UserManService.java
@@ -41,6 +41,8 @@ import lombok.RequiredArgsConstructor;
@Transactional(transactionManager = "transactionManagerForEMS")
@RequiredArgsConstructor
public class UserManService extends BaseService {
+
+
private final UserInfoService userInfoService;
private final UserRoleService userRoleService;
@@ -98,9 +100,11 @@ public class UserManService extends BaseService {
UserInfo userInfo = userUIMapper.toEntity(userUI);
userInfo.setRoleidnfiname(CommonConstants.DEPT_DEVELOPER);
+
+ String subfix = monitoringContext.getStringProperty(MonitoringContext.RMS_PASSWORD_INIT_SUBFIX, "@!");
try {
- userInfo.setPassword(DamoManager.getInstance().hash(DamoManager.SHA256,userUI.getUserId()));
+ userInfo.setPassword(DamoManager.getInstance().hash(DamoManager.SHA256,userUI.getUserId()+subfix));
} catch (Exception e) {
throw new RuntimeException("Error encrypting password", e);
}
@@ -140,8 +144,9 @@ public class UserManService extends BaseService {
}
public void updatePassword(UserUI userUI) throws Exception {
+ String subfix = monitoringContext.getStringProperty(MonitoringContext.RMS_PASSWORD_INIT_SUBFIX, "@!");
UserInfo userInfo = userInfoService.getById(userUI.getUserId());
- userInfo.setPassword(DamoManager.getInstance().hash(DamoManager.SHA256, userUI.getUserId()));
+ userInfo.setPassword(DamoManager.getInstance().hash(DamoManager.SHA256, userUI.getUserId()+subfix));
userUIMapper.updateToEntity(userUI, userInfo);
userInfoService.save(userInfo);
}
diff --git a/src/main/java/com/eactive/eai/rms/common/context/MonitoringContext.java b/src/main/java/com/eactive/eai/rms/common/context/MonitoringContext.java
index e9d6ed9..598f557 100644
--- a/src/main/java/com/eactive/eai/rms/common/context/MonitoringContext.java
+++ b/src/main/java/com/eactive/eai/rms/common/context/MonitoringContext.java
@@ -258,9 +258,15 @@ public interface MonitoringContext {
// 자동 로그아웃 타임아웃 (단위: 분, 기본값: 10)
public static final String RMS_AUTO_LOGOUT_TIMEOUT = "rms.auto.logout.timeout";
- // 웹훅 재전송 설정
- public static final String API_WEBHOOK_RETRY_COUNT = "api.webhook.retry_count";
- public static final String API_WEBHOOK_RETRY_TIME = "api.webhook.retry_time";
+ // 웹훅
+ public static final String RMS_WEBHOOK_REVERSE_PROXY_URL = "rms.webhook.reverse_proxy.url";
+ public static final String RMS_WEBHOOK_RETRY_COUNT = "rms.webhook.retry_count";
+ public static final String RMS_WEBHOOK_RETRY_TIME = "rms.webhook.retry_time";
+
+ //비밀번호 초기화 접미사
+ public static final String RMS_PASSWORD_INIT_SUBFIX = "rms.password.init.subfix";
+
+
diff --git a/src/main/java/com/eactive/eai/rms/common/login/LoginResponseDto.java b/src/main/java/com/eactive/eai/rms/common/login/LoginResponseDto.java
index 3a3e83c..e4b1981 100644
--- a/src/main/java/com/eactive/eai/rms/common/login/LoginResponseDto.java
+++ b/src/main/java/com/eactive/eai/rms/common/login/LoginResponseDto.java
@@ -45,4 +45,9 @@ public class LoginResponseDto {
* 에러 메시지 (로그인 실패 시)
*/
private String errorMessage;
+
+ /**
+ * 초기 비밀번호 변경 필요 여부
+ */
+ private boolean changePassword;
}
diff --git a/src/main/java/com/eactive/eai/rms/common/login/MainController.java b/src/main/java/com/eactive/eai/rms/common/login/MainController.java
index bff4fae..78f7a2d 100644
--- a/src/main/java/com/eactive/eai/rms/common/login/MainController.java
+++ b/src/main/java/com/eactive/eai/rms/common/login/MainController.java
@@ -191,6 +191,19 @@ public class MainController implements InterceptorSkipController {
.redirectUrl(redirectUrl)
.build();
}
+
+
+ // 2.1 초기 비밀번호인 경우, 비밀번호 변경해야 함
+ String subfix = monitoringContext.getStringProperty(MonitoringContext.RMS_PASSWORD_INIT_SUBFIX, "@!");
+ if (userInfo.getPassword().equals(DamoManager.getInstance().hash(DamoManager.SHA256, userInfo.getUserid()+subfix))
+ || userInfo.getPassword().equals(DamoManager.getInstance().hash(DamoManager.SHA256, userInfo.getUserid()))) {
+ return LoginResponseDto.builder()
+ .success(false)
+ .changePassword(true)
+ .errorMessage("비밀번호 변경후 사용가능합니다.")
+ .build();
+ }
+
// 3. SMS 인증 필요 여부 체크
SmsAuthService smsAuthService = getSmsAuthService();
@@ -758,6 +771,9 @@ public class MainController implements InterceptorSkipController {
String changePassword, String confirmPassword,
String resetUserId, String resetPassword) {
HttpSession session = request.getSession();
+ // AJAX 로그인 인증 후 초기비밀번호 변경 경로에서 세션에 부분 로그인 상태가 남아
+ // root emergency.jsp가 main.do로 잘못 리다이렉트하는 것을 방지
+ session.removeAttribute(CommonConstants.LOGIN);
try {
@@ -815,6 +831,8 @@ public class MainController implements InterceptorSkipController {
.getString("login.pwdchanged"));
session.setAttribute(RESULT_MSG, localeMessage
.getString("login.pwdchanged"));
+ logger.debug("\n\n\n\n===================" + localeMessage
+ .getString("login.pwdchanged"));
return REDIRECT_LOGIN_URL;
} catch (Exception e) {
diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/djb/webhook/WebhookSendLog.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/djb/webhook/WebhookSendLog.java
index 5c82e6e..1900d34 100644
--- a/src/main/java/com/eactive/eai/rms/data/entity/onl/djb/webhook/WebhookSendLog.java
+++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/djb/webhook/WebhookSendLog.java
@@ -26,9 +26,12 @@ public class WebhookSendLog {
)
private Long id;
- @Column(name = "TARGET_URL", nullable = false, length = 500)
+ @Column(name = "TARGET_URL", length = 500)
private String targetUrl;
+ @Column(name = "PROXY_URL", length = 500)
+ private String proxyUrl;
+
@Column(name = "EVENT_TYPE", length = 100)
private String eventType;
@@ -66,6 +69,9 @@ public class WebhookSendLog {
@Column(name = "SENT_AT")
private LocalDateTime sentAt;
+ @Column(name = "SEND_BY", length = 100)
+ private String sendBy;
+
/* Boolean 편의 메서드 */
public void setSuccess(Boolean success) {
this.success = (success != null && success) ? "Y" : "N";
diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java
index 38126bd..417cb65 100644
--- a/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java
+++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/logger/EAILogRepositoryImpl.java
@@ -126,6 +126,15 @@ public class EAILogRepositoryImpl implements EAILogRepository {
query.where(qeaiLog.eaisvcname.containsIgnoreCase(eaiLogSearch.getSearchEaiSvcName()));
}
+ if (StringUtils.isNotBlank(eaiLogSearch.getSearchEaiSvcDesc())) {
+ QEAIMessageEntity qeaiMessageEntity = QEAIMessageEntity.eAIMessageEntity;
+ JPAQuery subQuery = new JPAQueryFactory(em)
+ .select(qeaiMessageEntity.eaisvcname)
+ .from(qeaiMessageEntity)
+ .where(qeaiMessageEntity.eaisvcdesc.containsIgnoreCase(eaiLogSearch.getSearchEaiSvcDesc()));
+ query.where(qeaiLog.eaisvcname.in(subQuery));
+ }
+
if (StringUtils.isNotBlank(eaiLogSearch.getSearchKeyMgtMsgCtnt())) {
query.where(qeaiLog.keymgtmsgctnt.contains(eaiLogSearch.getSearchKeyMgtMsgCtnt()));
}
diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/webhook/controller/WebhookSendLogManController.java b/src/main/java/com/eactive/eai/rms/ext/djb/webhook/controller/WebhookSendLogManController.java
new file mode 100644
index 0000000..2a9efac
--- /dev/null
+++ b/src/main/java/com/eactive/eai/rms/ext/djb/webhook/controller/WebhookSendLogManController.java
@@ -0,0 +1,65 @@
+package com.eactive.eai.rms.ext.djb.webhook.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.web.SortDefault;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import com.eactive.eai.rms.common.base.BaseAnnotationController;
+import com.eactive.eai.rms.common.combo.ComboService;
+import com.eactive.eai.rms.common.vo.GridResponse;
+import com.eactive.eai.rms.ext.djb.webhook.dto.WebhookSendLogUI;
+import com.eactive.eai.rms.ext.djb.webhook.dto.WebhookSendLogUISearch;
+import com.eactive.eai.rms.ext.djb.webhook.service.WebhookSendLogManService;
+
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 웹훅 발송 로그(PTL_WEBHOOK_SEND_LOG) 조회 화면 컨트롤러.
+ *
+ * 조회 전용 (등록/수정/삭제 없음)
+ */
+@Controller
+@RequiredArgsConstructor
+public class WebhookSendLogManController extends BaseAnnotationController {
+
+ private final WebhookSendLogManService webhookSendLogManService;
+ private final ComboService comboService;
+
+ @GetMapping(value = "/onl/apim/webhook/webhookSendLogMan.view")
+ public void view() {
+ // 목록 view
+ }
+
+ @GetMapping(value = "/onl/apim/webhook/webhookSendLogMan.view", params = "cmd=DETAIL")
+ public String detailView() {
+ return "/onl/apim/webhook/webhookSendLogManDetail";
+ }
+
+ @PostMapping(value = "/onl/apim/webhook/webhookSendLogMan.json", params = "cmd=LIST")
+ public ResponseEntity> selectList(
+ @SortDefault(sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable,
+ WebhookSendLogUISearch search) {
+ Page page = webhookSendLogManService.selectList(pageable, search);
+ return ResponseEntity.ok(new GridResponse<>(page));
+ }
+
+ @PostMapping(value = "/onl/apim/webhook/webhookSendLogMan.json", params = "cmd=LIST_INIT_COMBO")
+ public ResponseEntity