音视频日志增加视频协议
回调类配置批量下发修改
This commit is contained in:
@@ -2594,6 +2594,8 @@ public class BaseController {
|
||||
List subList = commonPolicyService.getIpDropList("ip_port_cfg", compileIds);
|
||||
for(int i=0;i<subList.size();i++){
|
||||
IpPortCfg cfg = (IpPortCfg) subList.get(i);
|
||||
cfg.setIsValid(entity.getIsValid());
|
||||
cfg.setAuditTime(entity.getAuditTime());
|
||||
newList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
|
||||
}
|
||||
|
||||
@@ -2603,32 +2605,42 @@ public class BaseController {
|
||||
list = avCfgService.getAvFileSampleList(page,searchFileSampleCfg).getList();
|
||||
for(int i=0;i<list.size();i++){
|
||||
BaseCfg cfg = (BaseCfg) list.get(i);
|
||||
cfg.setIsValid(entity.getIsValid());
|
||||
cfg.setAuditTime(entity.getAuditTime());
|
||||
ids.add(cfg.getCompileId());
|
||||
newList.add(cfg);
|
||||
}
|
||||
newList.addAll(list);
|
||||
}else if(className.equals("AvSignSampleCfg")){
|
||||
list = avCfgService.getSignSampleList(searchSignSampleCfg);
|
||||
for(int i=0;i<list.size();i++){
|
||||
BaseCfg cfg = (BaseCfg) list.get(i);
|
||||
cfg.setIsValid(entity.getIsValid());
|
||||
cfg.setAuditTime(entity.getAuditTime());
|
||||
ids.add(cfg.getCompileId());
|
||||
newList.add(cfg);
|
||||
}
|
||||
newList.addAll(list);
|
||||
}else if(className.equals("PxyObjKeyring")){
|
||||
list = pxyObjKeyringService.findPage(page, searchObjKeyringCfg).getList();
|
||||
for(int i=0;i<list.size();i++){
|
||||
PxyObjKeyring cfg = (PxyObjKeyring) list.get(i);
|
||||
cfg.setIsValid(entity.getIsValid());
|
||||
cfg.setAuditTime(entity.getAuditTime());
|
||||
newList.add(BaseService.convertCallBackProxyObjKeyring(cfg));
|
||||
ids.add(cfg.getCompileId());
|
||||
newList.add(cfg);
|
||||
}
|
||||
}else if(className.equals("PxyObjTrustedCaCert")){
|
||||
list = pxyObjKeyringService.findTrustedCertPage(page,searchTrustedCaCertCfg).getList();
|
||||
for(int i=0;i<list.size();i++){
|
||||
PxyObjTrustedCaCert cfg = (PxyObjTrustedCaCert) list.get(i);
|
||||
cfg.setIsValid(entity.getIsValid());
|
||||
cfg.setAuditTime(entity.getAuditTime());
|
||||
newList.addAll(BaseService.convertCallBackProxyObjTrustedCa(cfg,null));
|
||||
//TODO 要保证cert下发成功crl必须也同时下发成功,需要单个查询
|
||||
ids.add(cfg.getCompileId());
|
||||
}
|
||||
}/*else if(className.equals("PxyObjTrustedCaCrl")){ //批量下发时不需要单独下发CRL
|
||||
}/*//批量下发时不需要单独下发CRL
|
||||
else if(className.equals("PxyObjTrustedCaCrl")){
|
||||
list = pxyObjKeyringService;
|
||||
for(int i=0;i<list.size();i++){
|
||||
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
|
||||
@@ -2639,6 +2651,8 @@ public class BaseController {
|
||||
list = dnsResStrategyService.findPage(page,searchDnsResStrategy).getList();
|
||||
for(int i=0;i<list.size();i++){
|
||||
DnsResStrategy cfg = (DnsResStrategy) list.get(i);
|
||||
cfg.setIsValid(entity.getIsValid());
|
||||
cfg.setAuditTime(entity.getAuditTime());
|
||||
newList.add(BaseService.convertCallBackDnsResStrategy(cfg));
|
||||
ids.add(cfg.getCompileId());
|
||||
}
|
||||
@@ -2646,26 +2660,34 @@ public class BaseController {
|
||||
list = dnsIpCfgService.findPage(page,searchDnsIpCfg).getList();
|
||||
for(int i=0;i<list.size();i++){
|
||||
DnsIpCfg cfg = (DnsIpCfg) list.get(i);
|
||||
newList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
|
||||
cfg.setIsValid(entity.getIsValid());
|
||||
cfg.setAuditTime(entity.getAuditTime());
|
||||
newList.add(BaseService.convertCallBackIp(cfg,cfg.getDnsStrategyId()));
|
||||
ids.add(cfg.getCompileId());
|
||||
}
|
||||
}else if(className.equals("IpPortCfg")){
|
||||
list = commonPolicyService.getIpPortList(searchIpPortCfg);
|
||||
for(int i=0;i<list.size();i++){
|
||||
IpPortCfg cfg = (IpPortCfg) list.get(i);
|
||||
cfg.setIsValid(entity.getIsValid());
|
||||
cfg.setAuditTime(entity.getAuditTime());
|
||||
newList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
|
||||
ids.add(cfg.getCompileId());
|
||||
}
|
||||
}
|
||||
}
|
||||
//批量修改和下发回调配置
|
||||
commonPolicyService.auditCallBackData(newList, compileIds, ids, entity);
|
||||
|
||||
page.setList(list);
|
||||
if(page.isLastPage()){
|
||||
hasData = false;
|
||||
}
|
||||
|
||||
if(!StringUtil.isEmpty(newList)) {
|
||||
//批量修改和下发回调配置
|
||||
commonPolicyService.auditCallBackData(newList, compileIds, ids, entity);
|
||||
}else {
|
||||
hasData = false;
|
||||
}
|
||||
|
||||
return hasData;
|
||||
}
|
||||
|
||||
|
||||
@@ -1678,12 +1678,14 @@ public class ConfigSynchronizationService extends BaseService{
|
||||
newList.add(convertCallBackProxyObjKeyring(cfg));
|
||||
}
|
||||
}else if(className.equals("PxyObjTrustedCaCert")){
|
||||
//TODO 下发cert配置时,需绑定下发crl配置
|
||||
list = configSynchronizationDao.getPxyObjTrustedCertCfgList(entity);
|
||||
for(int i=0;i<list.size();i++){
|
||||
PxyObjTrustedCaCert cfg = (PxyObjTrustedCaCert) list.get(i);
|
||||
newList.addAll(convertCallBackProxyObjTrustedCa(cfg,null));
|
||||
}
|
||||
}else if(className.equals("PxyObjTrustedCaCrl")){
|
||||
//TODO 只允许单独下发certId为空或0的crl配置
|
||||
list = configSynchronizationDao.getPxyObjTrustedCrlCfgList(entity);
|
||||
for(int i=0;i<list.size();i++){
|
||||
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
|
||||
@@ -1699,7 +1701,7 @@ public class ConfigSynchronizationService extends BaseService{
|
||||
list = configSynchronizationDao.getDnsIpCfgList(entity);
|
||||
for(int i=0;i<list.size();i++){
|
||||
DnsIpCfg cfg = (DnsIpCfg) list.get(i);
|
||||
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
|
||||
newList.add(convertCallBackIp(cfg,cfg.getDnsStrategyId()));
|
||||
}
|
||||
}else if(className.equals("IpPortCfg")){
|
||||
list = configSynchronizationDao.getIpPortListByService(entity);
|
||||
|
||||
15
src/main/resources/sql/20181207/insert_sys_dict_Data.sql
Normal file
15
src/main/resources/sql/20181207/insert_sys_dict_Data.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
INSERT INTO `sys_data_dictionary_name` (`id`, `module_name`, `mark`, `remark`, `revision`, `create_time`, `modify_time`, `status`) VALUES ('148', '视频协议', 'AV_PROTOCOL', '', '', '2018-12-07 18:12:12', '2018-12-07 18:12:12', '1');
|
||||
|
||||
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3188', '1', 'HTTP', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3189', '2', 'SMTP', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3190', '3', 'POP3', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3191', '4', 'FTP', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3192', '5', 'IMAP', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3193', '129', 'HTTP_IMAGE', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3194', '130', 'RTSP_RDT', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3195', '131', 'RTSP_RTP', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3196', '132', 'MMS', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3197', '133', 'ED2K', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3198', '134', 'RTMP', '', '0', '1', '1', '148');
|
||||
INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3199', '145', 'SIP', '', '0', '1', '1', '148');
|
||||
@@ -270,7 +270,15 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td>
|
||||
<c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }
|
||||
</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -266,7 +266,15 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td>
|
||||
<c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }
|
||||
</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -310,7 +310,14 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td><c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }
|
||||
</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -266,7 +266,15 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td>
|
||||
<c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }
|
||||
</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -265,7 +265,15 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td>
|
||||
<c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }
|
||||
</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -267,7 +267,15 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td>
|
||||
<c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }
|
||||
</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -309,7 +309,14 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td><c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }
|
||||
</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -369,7 +369,13 @@
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td><c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -309,7 +309,13 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td><c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -309,7 +309,13 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td><c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -309,7 +309,13 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td><c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -309,7 +309,13 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td><c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
@@ -310,7 +310,13 @@ $(document).ready(function(){
|
||||
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
|
||||
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
|
||||
</td>
|
||||
<td>${log.protocol}</td>
|
||||
<td><c:set var="avProtocol" value="${log.protocol}"></c:set>
|
||||
<c:forEach items="${fns:getDictList('AV_PROTOCOL')}" var="dic">
|
||||
<c:if test="${log.protocol==dic.itemCode}">
|
||||
<c:set var="avProtocol" value="${dic.itemValue }"></c:set>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
${avProtocol }</td>
|
||||
<td title="${log.capIp }">${fns:abbr(log.capIp, 42)}</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
|
||||
|
||||
Reference in New Issue
Block a user