diff --git a/src/main/java/com/nis/domain/configuration/AppDomainCfg.java b/src/main/java/com/nis/domain/configuration/AppDomainCfg.java index 074880f1c..e7d0a76e9 100644 --- a/src/main/java/com/nis/domain/configuration/AppDomainCfg.java +++ b/src/main/java/com/nis/domain/configuration/AppDomainCfg.java @@ -33,8 +33,8 @@ public class AppDomainCfg extends BaseCfg { private Integer appCode;//specific_service_cfg表一级节点的spec_service_code private Integer behavCode;//specific_service_cfg表二级节点的spec_service_code private Integer specServiceId; + @ExcelField(title="domain",sort=3) - private String domain; private String cfgKeywords; @ExcelField(title="social_app",sort=2) private String appName; @@ -148,12 +148,6 @@ public class AppDomainCfg extends BaseCfg { public void setSpecServiceId(Integer specServiceId) { this.specServiceId = specServiceId; } - public String getDomain() { - return domain; - } - public void setDomain(String domain) { - this.domain = domain; - } public String getCfgKeywords() { return cfgKeywords; } diff --git a/src/main/java/com/nis/domain/configuration/AppTopicDomainCfg.java b/src/main/java/com/nis/domain/configuration/AppTopicDomainCfg.java index 742f7ca17..6b8fb6523 100644 --- a/src/main/java/com/nis/domain/configuration/AppTopicDomainCfg.java +++ b/src/main/java/com/nis/domain/configuration/AppTopicDomainCfg.java @@ -32,8 +32,8 @@ public class AppTopicDomainCfg extends BaseCfg { @ExcelField(title="website_server",dictType="WEBSITE_SERVER",sort=3) private Long websiteServiceId;//specific_service_cfg表二级节点的spec_service_code private Integer specServiceId; + @ExcelField(title="domain",sort=4) - private String domain; private String cfgKeywords; private String appName; @ExcelField(title="topic",dictType="TOPIC",sort=2) @@ -156,12 +156,6 @@ public class AppTopicDomainCfg extends BaseCfg { public void setSpecServiceId(Integer specServiceId) { this.specServiceId = specServiceId; } - public String getDomain() { - return domain; - } - public void setDomain(String domain) { - this.domain = domain; - } public String getCfgKeywords() { return cfgKeywords; } diff --git a/src/main/java/com/nis/util/ServiceConfigTemplateUtil.java b/src/main/java/com/nis/util/ServiceConfigTemplateUtil.java index ff971ff80..2f071a581 100644 --- a/src/main/java/com/nis/util/ServiceConfigTemplateUtil.java +++ b/src/main/java/com/nis/util/ServiceConfigTemplateUtil.java @@ -13,6 +13,8 @@ import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; +import com.nis.domain.FunctionServiceDict; + public class ServiceConfigTemplateUtil { private Logger logger = Logger.getLogger(getClass()); @@ -67,30 +69,22 @@ public class ServiceConfigTemplateUtil { * @param serviceId * @return */ - public List> getServiceList(String functionId,String serviceId){ + public List> getServiceList(Integer functionId){ List> list =new ArrayList(); - List elements = root.selectNodes("service"); - boolean flag=false; - for(Element element:elements){ - if(!StringUtil.isEmpty(functionId) || !StringUtil.isEmpty(serviceId) ) { - flag=false; - String serviceIdC=element.attributeValue("id"); - String functionIdC=element.attributeValue("functionId"); - - if(!StringUtil.isEmpty(functionId) && !StringUtil.isEmpty(serviceId)) { - if(serviceIdC.equals(serviceId) && functionIdC.equals(functionId)) { - flag=true; - } - }else { - if(!StringUtil.isEmpty(serviceId) && serviceIdC.equals(serviceId) ) { - flag=true; - } - if(!StringUtil.isEmpty(functionId) && functionIdC.equals(functionId) ) { - flag=true; - } + if(!StringUtil.isEmpty(functionId)) { + List serviceList = DictUtils.getFunctionServiceDictList(functionId); + List serviceIdList = new ArrayList(); + for (FunctionServiceDict service : serviceList) { + if(!StringUtil.isEmpty(service.getServiceId())) { + serviceIdList.add(service.getServiceId().toString()); } - - if(flag) { + } + List elements = root.selectNodes("service"); + for(Element element:elements){ + String serviceIdC=element.attributeValue("id"); + if(!StringUtil.isEmpty(serviceIdC) + && !StringUtil.isEmpty(serviceIdList) + && serviceIdList.contains(serviceIdC)) { Map map = new HashMap(); for(int i=0;i map = new HashMap(); - for(int i=0;i> list = serviceTemplate.getServiceList("","128"); + List> list = serviceTemplate.getServiceList(5); for(Map map :list){ System.out.println("业务配置:"+map.get("id")+","+map.get("functionId")+","+map.get("serviceType")+","+map.get("tableName")); List> cfgList = (List>) map.get("cfgList"); diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index 08bf5f86c..35ef7fff4 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -27,6 +27,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; +import org.apache.poi.ss.formula.functions.T; +import org.eclipse.jetty.util.ajax.JSON; import org.jets3t.service.ServiceException; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -41,20 +43,37 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.beust.jcommander.internal.Lists; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; +import com.nis.domain.Page; import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.basics.AsnIpCfg; import com.nis.domain.basics.ServiceDictInfo; import com.nis.domain.basics.SysDictInfo; +import com.nis.domain.callback.ProxyObjKeyring; +import com.nis.domain.configuration.AppDomainCfg; +import com.nis.domain.configuration.AppFeatureIndex; +import com.nis.domain.configuration.AppHttpCfg; +import com.nis.domain.configuration.AppIpCfg; import com.nis.domain.configuration.AppPolicyCfg; +import com.nis.domain.configuration.AppSslCertCfg; +import com.nis.domain.configuration.AppTopicDomainCfg; import com.nis.domain.configuration.AreaBean; import com.nis.domain.configuration.AreaIpCfg; +import com.nis.domain.configuration.AvFileSampleCfg; +import com.nis.domain.configuration.AvSignSampleCfg; import com.nis.domain.configuration.BaseCfg; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.ComplexStringCfgTemplate; import com.nis.domain.configuration.ComplexkeywordCfg; +import com.nis.domain.configuration.DdosIpCfg; +import com.nis.domain.configuration.DnsIpCfg; import com.nis.domain.configuration.DnsResStrategy; +import com.nis.domain.configuration.FileDigestCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.PxyObjKeyring; +import com.nis.domain.configuration.PxyObjTrustedCaCert; +import com.nis.domain.configuration.PxyObjTrustedCaCrl; import com.nis.domain.configuration.RequestInfo; import com.nis.domain.configuration.StringCfgTemplate; import com.nis.domain.configuration.template.AppDomainTemplate; @@ -73,6 +92,14 @@ import com.nis.domain.configuration.template.P2pIpTemplate; import com.nis.domain.configuration.template.StringAllTemplate; import com.nis.domain.log.BaseLogEntity; import com.nis.domain.log.SearchReport; +import com.nis.domain.maat.MaatCfg; +import com.nis.domain.maat.ToMaatBean; +import com.nis.domain.maat.ToMaatResult; +import com.nis.domain.maat.MaatCfg.DigestCfg; +import com.nis.domain.maat.MaatCfg.GroupCfg; +import com.nis.domain.maat.MaatCfg.IpCfg; +import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; +import com.nis.domain.maat.MaatCfg.StringCfg; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.domain.specific.SpecificServiceCfg; import com.nis.exceptions.MaatConvertException; @@ -83,7 +110,9 @@ import com.nis.util.Configurations; import com.nis.util.Constants; import com.nis.util.DateUtils; import com.nis.util.DictUtils; +import com.nis.util.FileUtils; import com.nis.util.JsonMapper; +import com.nis.util.ServiceConfigTemplateUtil; import com.nis.util.StringUtil; import com.nis.util.excel.ExportExcel; import com.nis.util.excel.ImportBigExcel; @@ -95,6 +124,7 @@ import com.nis.web.security.UserUtils; import com.nis.web.service.ArchiveServcie; import com.nis.web.service.AreaService; import com.nis.web.service.BaseService; +import com.nis.web.service.CrudService; import com.nis.web.service.DictService; import com.nis.web.service.LogService; import com.nis.web.service.MenuService; @@ -115,6 +145,7 @@ import com.nis.web.service.configuration.AvCfgService; import com.nis.web.service.configuration.AvContentCfgService; import com.nis.web.service.configuration.BgpCfgService; import com.nis.web.service.configuration.CachePolicyService; +import com.nis.web.service.configuration.CommonPolicyService; import com.nis.web.service.configuration.ComplexStringCfgService; import com.nis.web.service.configuration.ConfigSynchronizationService; import com.nis.web.service.configuration.ControlPolicyService; @@ -143,6 +174,7 @@ import com.nis.web.service.specific.SpecificServiceHostCfgService; import com.nis.web.service.systemService.ServiceConfigInfoService; import jersey.repackaged.com.google.common.collect.Maps; +import net.sf.json.JSONObject; public class BaseController { @@ -254,9 +286,11 @@ public class BaseController { //@Autowired //protected ConfigGroupInfoService configGroupInfoService; @Autowired + protected ConfigSynchronizationService configSynchronizationService; + @Autowired protected CachePolicyService cachePolicyService; @Autowired - protected ConfigSynchronizationService configSynchronizationService; + protected CommonPolicyService commonPolicyService; @Autowired protected UserManageService userManageService; @@ -1800,8 +1834,10 @@ public class BaseController { ei.getUploadFile().delete(); } } - if(e instanceof MaatConvertException||e instanceof ServiceException) { + if(e instanceof MaatConvertException) { addMessage(redirectAttributes,"error", "request_service_failed"); + }else if(e instanceof ServiceException) { + addMessage(redirectAttributes,"error", e.getMessage()); }else { addMessage(redirectAttributes,"error", "import_failed"); } @@ -1902,4 +1938,655 @@ public class BaseController { new ExportExcel(msgProp, titleList, noExportMap, classMap, 1).setDataList(msgProp, dataMap, map) .write(response, fileName).dispose(); } + + /** + * 批量审核 + * @param isAudit + * @param isValid + * @param ids + * @param functionId + * @param redirectAttributes + * @return + */ + public void auditAll(Page page,Integer auditType,Object entity)throws Exception { + page.setPageSize(Constants.MAAT_JSON_SEND_SIZE); + page.setOrderBy(""); + //携带审核状态信息的BaseCfg + BaseCfg auditBatchCfg=new BaseCfg(); + //携带审核条件的BaseCfg + CfgIndexInfo searchCfg=new CfgIndexInfo(); + AppPolicyCfg searchAppCfg=new AppPolicyCfg(); + FileDigestCfg searchDigestCfg=new FileDigestCfg(); + AvFileSampleCfg searchFileSampleCfg=new AvFileSampleCfg(); + PxyObjKeyring searchObjKeyringCfg=new PxyObjKeyring(); + PxyObjTrustedCaCert searchTrustedCaCertCfg=new PxyObjTrustedCaCert(); + PxyObjTrustedCaCrl searchTrustedCaCrlCfg=new PxyObjTrustedCaCrl(); + DnsResStrategy searchDnsResStrategy=new DnsResStrategy(); + DnsIpCfg searchDnsIpCfg=new DnsIpCfg(); + IpPortCfg searchIpPortCfg=new IpPortCfg(); + AvSignSampleCfg searchSignSampleCfg=new AvSignSampleCfg(); + DdosIpCfg searchDdosIpCfg=new DdosIpCfg(); + AppIpCfg searchAppIpCfg=new AppIpCfg(); + AppHttpCfg searchAppHttpCfg=new AppHttpCfg(); + AppDomainCfg searchAppDomainCfg=new AppDomainCfg(); + AppTopicDomainCfg searchAppTopicCfg=new AppTopicDomainCfg(); + AppFeatureIndex searchAppFeatureIndex=new AppFeatureIndex(); + AppSslCertCfg searchAppSslCertCfg=new AppSslCertCfg(); + if(entity != null && (entity instanceof CfgIndexInfo)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchCfg); + } + if(entity != null && (entity instanceof AppPolicyCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchAppCfg); + } + if(entity != null && (entity instanceof FileDigestCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchDigestCfg); + } + if(entity != null && (entity instanceof AvFileSampleCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchFileSampleCfg); + } + if(entity != null && (entity instanceof PxyObjKeyring)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchObjKeyringCfg); + } + if(entity != null && (entity instanceof PxyObjTrustedCaCert)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchTrustedCaCertCfg); + } + if(entity != null && (entity instanceof PxyObjTrustedCaCrl)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchTrustedCaCrlCfg); + } + if(entity != null && (entity instanceof CfgIndexInfo)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchDnsResStrategy); + } + if(entity != null && (entity instanceof DnsIpCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchDnsIpCfg); + } + if(entity != null && (entity instanceof CfgIndexInfo)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchIpPortCfg); + } + + if(entity != null && (entity instanceof AvSignSampleCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchSignSampleCfg); + } + if(entity != null && (entity instanceof DdosIpCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchDdosIpCfg); + } + if(entity != null && (entity instanceof CfgIndexInfo)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchAppIpCfg); + } + if(entity != null && (entity instanceof AppHttpCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchAppHttpCfg); + } + if(entity != null && (entity instanceof AppDomainCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchAppDomainCfg); + } + if(entity != null && (entity instanceof AppTopicDomainCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchAppTopicCfg); + } + if(entity != null && (entity instanceof AppFeatureIndex)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchAppFeatureIndex); + } + if(entity != null && (entity instanceof AppSslCertCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchAppSslCertCfg); + } + + + + //全部审核通过,只查询当前条件下的所有未审核的配置 + if(auditType.equals(1)) { + searchCfg.setIsValid(0); + searchCfg.setIsAudit(0); + searchAppCfg.setIsValid(0); + searchAppCfg.setIsAudit(0); + searchDigestCfg.setIsValid(0); + searchDigestCfg.setIsAudit(0); + searchFileSampleCfg.setIsValid(0); + searchFileSampleCfg.setIsAudit(0); + searchObjKeyringCfg.setIsValid(0); + searchObjKeyringCfg.setIsAudit(0); + searchTrustedCaCertCfg.setIsValid(0); + searchTrustedCaCertCfg.setIsAudit(0); + searchTrustedCaCrlCfg.setIsValid(0); + searchTrustedCaCrlCfg.setIsAudit(0); + searchDnsResStrategy.setIsValid(0); + searchDnsResStrategy.setIsAudit(0); + searchDnsIpCfg.setIsValid(0); + searchDnsIpCfg.setIsAudit(0); + searchIpPortCfg.setIsValid(0); + searchIpPortCfg.setIsAudit(0); + searchSignSampleCfg.setIsValid(0); + searchSignSampleCfg.setIsAudit(0); + searchDdosIpCfg.setIsValid(0); + searchDdosIpCfg.setIsAudit(0); + searchAppIpCfg.setIsValid(0); + searchAppIpCfg.setIsAudit(0); + searchAppHttpCfg.setIsValid(0); + searchAppHttpCfg.setIsAudit(0); + searchAppDomainCfg.setIsValid(0); + searchAppDomainCfg.setIsAudit(0); + searchAppTopicCfg.setIsValid(0); + searchAppTopicCfg.setIsAudit(0); + searchAppFeatureIndex.setIsValid(0); + searchAppFeatureIndex.setIsAudit(0); + searchAppSslCertCfg.setIsValid(0); + searchAppSslCertCfg.setIsAudit(0); + + auditBatchCfg.setIsAudit(1); + auditBatchCfg.setIsValid(1); + auditBatchCfg.setAuditTime(new Date()); + auditBatchCfg.setAuditorId(UserUtils.getUser().getId()); + }else { + //全部取消通过,只查询当前条件下的所有审核通过的配置 + searchCfg.setIsValid(1); + searchCfg.setIsAudit(1); + searchAppCfg.setIsValid(1); + searchAppCfg.setIsAudit(1); + searchDigestCfg.setIsValid(1); + searchDigestCfg.setIsAudit(1); + searchFileSampleCfg.setIsValid(1); + searchFileSampleCfg.setIsAudit(1); + searchObjKeyringCfg.setIsValid(1); + searchObjKeyringCfg.setIsAudit(1); + searchTrustedCaCertCfg.setIsValid(1); + searchTrustedCaCertCfg.setIsAudit(1); + searchTrustedCaCrlCfg.setIsValid(1); + searchTrustedCaCrlCfg.setIsAudit(1); + searchDnsResStrategy.setIsValid(1); + searchDnsResStrategy.setIsAudit(1); + searchDnsIpCfg.setIsValid(1); + searchDnsIpCfg.setIsAudit(1); + searchIpPortCfg.setIsValid(1); + searchIpPortCfg.setIsAudit(1); + searchSignSampleCfg.setIsValid(1); + searchSignSampleCfg.setIsAudit(1); + searchDdosIpCfg.setIsValid(1); + searchDdosIpCfg.setIsAudit(1); + searchAppIpCfg.setIsValid(1); + searchAppIpCfg.setIsAudit(1); + searchAppHttpCfg.setIsValid(1); + searchAppHttpCfg.setIsAudit(1); + searchAppDomainCfg.setIsValid(1); + searchAppDomainCfg.setIsAudit(1); + searchAppTopicCfg.setIsValid(1); + searchAppTopicCfg.setIsAudit(1); + searchAppFeatureIndex.setIsValid(1); + searchAppFeatureIndex.setIsAudit(1); + searchAppSslCertCfg.setIsValid(1); + searchAppSslCertCfg.setIsAudit(1); + + auditBatchCfg.setIsAudit(3); + auditBatchCfg.setIsValid(0); + auditBatchCfg.setAuditTime(new Date()); + auditBatchCfg.setAuditorId(UserUtils.getUser().getId()); + } + + ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil(); + Integer functionId=0; + if(auditBatchCfg != null && !StringUtil.isEmpty(auditBatchCfg.getFunctionId())) { + functionId=auditBatchCfg.getFunctionId(); + } + List> serviceList = serviceTemplate.getServiceList(functionId); + + for(Map service:serviceList){ + String tableNameXml = service.get("tableName").toString(); + String serviceTypeXml = service.get("serviceType").toString(); + String classNameXml = service.get("className").toString(); + String serviceIdXml = service.get("id").toString(); + auditBatchCfg.setServiceId(Integer.valueOf(serviceIdXml)); + auditBatchCfg.setTableName(tableNameXml); + searchCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchCfg.setTableName(tableNameXml); + searchAppCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchAppCfg.setTableName(tableNameXml); + searchDigestCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchDigestCfg.setTableName(tableNameXml); + searchFileSampleCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchFileSampleCfg.setTableName(tableNameXml); + searchObjKeyringCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchObjKeyringCfg.setTableName(tableNameXml); + searchTrustedCaCertCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchTrustedCaCertCfg.setTableName(tableNameXml); + searchTrustedCaCrlCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchTrustedCaCrlCfg.setTableName(tableNameXml); + searchDnsResStrategy.setServiceId(Integer.valueOf(serviceIdXml)); + searchDnsResStrategy.setTableName(tableNameXml); + searchDnsIpCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchDnsIpCfg.setTableName(tableNameXml); + searchIpPortCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchIpPortCfg.setTableName(tableNameXml); + searchSignSampleCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchSignSampleCfg.setTableName(tableNameXml); + searchDdosIpCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchDdosIpCfg.setTableName(tableNameXml); + searchAppIpCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchAppIpCfg.setTableName(tableNameXml); + searchAppHttpCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchAppHttpCfg.setTableName(tableNameXml); + searchAppDomainCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchAppDomainCfg.setTableName(tableNameXml); + searchAppTopicCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchAppTopicCfg.setTableName(tableNameXml); + searchAppFeatureIndex.setServiceId(Integer.valueOf(serviceIdXml)); + searchAppFeatureIndex.setTableName(tableNameXml); + searchAppSslCertCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchAppSslCertCfg.setTableName(tableNameXml); + + if("1".equals(serviceTypeXml)){//maat类配置 + List> cfgList = (List>) service.get("cfgList"); + List> userRegionList = (List>) service.get("userRegionList"); + if(!StringUtil.isEmpty(cfgList)) { + if("cfg_index_info".equals(tableNameXml)){ + /************************多域maat cfg_index_info 处理****************************************/ + boolean hasData = true; + while(hasData){ + List list=getDataList(page,searchCfg,null,null,null); + if(!StringUtil.isEmpty(list)){ + //配置生效处理 复用全量下发 + if(auditBatchCfg.getIsValid().equals(1)) { + hasData=configSynchronizationService.auditNtcMaatData(cfgList,userRegionList,page,auditBatchCfg,list,hasData,true); + }else {//配置失效处理 批量处理 + List cfgIndexList=new ArrayList<>(); + if(!StringUtil.isEmpty(list)) { + for (CfgIndexInfo cfg : list) { + BaseCfg baseCfg=new BaseCfg(); + BeanUtils.copyProperties(cfg, baseCfg); + cfgIndexList.add(baseCfg); + } + } + hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg, cfgIndexList, hasData); + } + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; + } + } + }else if("file_digest_cfg".equals(tableNameXml)){ + /************************多域 maat 摘要处理****************************************/ + boolean hasData = true; + while(hasData){ + List list=getDataList(page,null,null,searchDigestCfg,null); + if(!StringUtil.isEmpty(list)){ + //配置生效处理 复用全量下发 + if(auditBatchCfg.getIsValid().equals(1)) { + hasData=configSynchronizationService.auditFileDigestData(cfgList, userRegionList, page, auditBatchCfg, list, hasData, true); + }else {//配置失效处理 批量处理 + List baseCfgList=new ArrayList<>(); + if(!StringUtil.isEmpty(list)) { + for (FileDigestCfg cfg : list) { + BaseCfg baseCfg=new BaseCfg(); + BeanUtils.copyProperties(cfg, baseCfg); + baseCfgList.add(baseCfg); + } + } + hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,baseCfgList, hasData); + } + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; + } + } + }else if("app_policy_cfg".equals(tableNameXml)){ + /************************多域 maat app策略处理****************************************/ + boolean hasData = true; + while(hasData){ + List list=getDataList(page,null,searchAppCfg,null,null); + if(!StringUtil.isEmpty(list)){ + //配置生效处理 复用全量下发 + if(auditBatchCfg.getIsValid().equals(1)) { + hasData=configSynchronizationService.auditAppPolicyData(cfgList,userRegionList,page,auditBatchCfg,list,hasData,true); + }else {//配置失效处理 批量处理 + List cfgAppList=new ArrayList<>(); + if(!StringUtil.isEmpty(list)) { + for (AppPolicyCfg cfg : list) { + BaseCfg baseCfg=new BaseCfg(); + BeanUtils.copyProperties(cfg, baseCfg); + cfgAppList.add(baseCfg); + } + } + hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,cfgAppList, hasData); + } + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; + } + } + }else if("app_feature_index".equals(tableNameXml)){ + /************************多域 maat app特征处理****************************************/ + boolean hasData = true; + while(hasData){ + List list=getDataList(page,null,null,null,searchAppFeatureIndex); + if(!StringUtil.isEmpty(list)){ + //配置生效处理 复用全量下发 + if(auditBatchCfg.getIsValid().equals(1)) { + hasData=configSynchronizationService.auditAppFeatureData(cfgList,userRegionList,page,auditBatchCfg,list,hasData,true); + }else {//配置失效处理 批量处理 + List cfgFeatrureList=new ArrayList<>(); + if(!StringUtil.isEmpty(list)) { + for (AppFeatureIndex cfg : list) { + BaseCfg baseCfg=new BaseCfg(); + BeanUtils.copyProperties(cfg, baseCfg); + cfgFeatrureList.add(baseCfg); + } + } + hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,cfgFeatrureList, hasData); + } + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; + } + } + }else{ + logger.info("未知业务"); + } + }else { + /************************单域maat处理****************************************/ + int cfgType = Integer.parseInt(service.get("cfgType").toString()); + if("ddos_ip_cfg".equals(tableNameXml)){ + boolean hasData = true; + while(hasData){ + List list=ddosCfgService.findPage(page, searchDdosIpCfg).getList(); + if(!StringUtil.isEmpty(list)){ + if(auditBatchCfg.getIsValid().equals(1)) { + hasData=configSynchronizationService.auditDdosMaatData(cfgList,userRegionList, + page,auditBatchCfg,list,hasData,true); + }else { + List newList=new ArrayList<>(); + if(!StringUtil.isEmpty(list)) { + for (Object obj : list) { + BaseCfg cfg=(BaseCfg)obj; + newList.add(cfg); + } + } + hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,newList, hasData); + } + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; + } + } + }else{ + boolean hasData = true; + while(hasData){ + List list = Lists.newArrayList(); + /* + 1026 app_domain_cfg + 1028 app_ip_cfg + 1029 app_ssl_cert_cfg + 1152 app_topic_domain_cfg + 1024 app_http_cfg + 1026 app_domain_cfg + */ + if(auditBatchCfg.getServiceId().equals(1026)) { + list=appCfgService.findAppDomainList(page, searchAppDomainCfg).getList(); + } + if(auditBatchCfg.getServiceId().equals(1028)) { + list=appCfgService.findAppIpList(page, searchAppIpCfg).getList(); + } + if(auditBatchCfg.getServiceId().equals(1029)) { + list=appCfgService.findAppSslList(page, searchAppSslCertCfg).getList(); + } + if(auditBatchCfg.getServiceId().equals(1152)) { + list=appCfgService.findAppTopicDomainList(page, searchAppTopicCfg).getList(); + } + if(auditBatchCfg.getServiceId().equals(1024)) { + list=appCfgService.findAppHttpList(page, searchAppHttpCfg).getList(); + } + if(!StringUtil.isEmpty(list)){ + if(auditBatchCfg.getIsValid().equals(1)) { + if(auditBatchCfg.getServiceId().equals(1028)){ + hasData=configSynchronizationService.auditAppIpData(userRegionList, + page,auditBatchCfg,list,hasData,true); + }else{ + hasData=configSynchronizationService.auditSingleMaatData(cfgType,userRegionList, + page,auditBatchCfg,list,hasData,true); + } + }else { + List newList=new ArrayList<>(); + if(!StringUtil.isEmpty(list)) { + for (Object obj : list) { + BaseCfg cfg=(BaseCfg)obj; + newList.add(cfg); + } + } + hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,newList, hasData); + } + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; + } + } + } + } + }else if("2".equals(serviceTypeXml)){ + /********************回调类处理生效和失效一个方法【由于每个表检索条件不一样,需要自己处理,无法复用全量下发】*********/ + boolean hasData = true; + while(hasData){ + hasData=handelCallbackData(classNameXml, page, hasData, auditBatchCfg + , searchCfg + , searchAppCfg + , searchDigestCfg + , searchFileSampleCfg + , searchObjKeyringCfg + , searchTrustedCaCertCfg + , searchTrustedCaCrlCfg + , searchDnsResStrategy + , searchDnsIpCfg + , searchIpPortCfg + , searchSignSampleCfg); + if(hasData){ + page.setPageNo(page.getNext()); + } + } + } + } + } + + + + public List getDataList(Page searchPage + ,CfgIndexInfo searchCfg + ,AppPolicyCfg searchAppCfg + ,FileDigestCfg searchDigestCfg + ,AppFeatureIndex searchAppFeatureIndex){ + BaseCfg baseCfg=new BaseCfg<>(); + if(!StringUtil.isEmpty(searchCfg)) { + BeanUtils.copyProperties(searchCfg, baseCfg); + } + if(!StringUtil.isEmpty(searchAppCfg)) { + BeanUtils.copyProperties(searchAppCfg, baseCfg); + } + if(!StringUtil.isEmpty(searchDigestCfg)) { + BeanUtils.copyProperties(searchDigestCfg, baseCfg); + } + if(!StringUtil.isEmpty(searchAppFeatureIndex)) { + BeanUtils.copyProperties(searchAppFeatureIndex, baseCfg); + } + Page pageResult=new Page(); + if(baseCfg.getFunctionId().equals(5)//IP + || baseCfg.getFunctionId().equals(3)) { //IP WHITELIST + pageResult=ipCfgService.getIpCfgList(searchPage,searchCfg); + }else if(baseCfg.getFunctionId().equals(212) //IP Payload + || baseCfg.getFunctionId().equals(7) //DNS + || baseCfg.getFunctionId().equals(8)//HTTP ADVANCED + || baseCfg.getFunctionId().equals(635) //HTTP 关键字 + || baseCfg.getFunctionId().equals(37) //MAIL ADDRESS + || baseCfg.getFunctionId().equals(35) //MAIL ADVANCED + || baseCfg.getFunctionId().equals(34)) {//SSL + pageResult=websiteCfgService.getWebsiteList(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(6)) {//HTTP URL + pageResult=domainService.getDomainList(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(63)//Stream basic + || baseCfg.getFunctionId().equals(407)//Stream app + || baseCfg.getFunctionId().equals(408)) {//Stream behavior + pageResult=appCfgService.findAppPolicyList(searchPage, searchAppCfg); + }else if(baseCfg.getFunctionId().equals(61)) {//BGP + pageResult=bgpCfgService.getBgpList(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(51)) {//FTP + pageResult=fileTransferCfgService.getFtpList(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(510)) {//P2P + pageResult=fileTransferCfgService.getFtpList(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(22)) {//Stream Media + pageResult=avContentCfgService.findPage(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(24)) {//VOIP + pageResult=avContentCfgService.findPage(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(52)) {//Digest + pageResult=fileTransferCfgService.getFileDigestList(searchPage, searchDigestCfg); + }else if(baseCfg.getFunctionId().equals(200)//intercept ip + ||baseCfg.getFunctionId().equals(201)) {//intercept domain + pageResult=interceptCfgService.getWebsiteList(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(207) //control + ||baseCfg.getFunctionId().equals(208) + ||baseCfg.getFunctionId().equals(209) + ||baseCfg.getFunctionId().equals(210) + ||baseCfg.getFunctionId().equals(211)) { + pageResult=httpRedirectCfgService.getHttpRedirectList(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(213)) {// cache + pageResult=cachePolicyService.getCachePolicyList(searchPage, searchCfg); + }else if(baseCfg.getFunctionId().equals(52)) {//appFeatre + pageResult=appMultiFeatureCfgService.findAppFeatureIndexList(searchPage,searchAppFeatureIndex); + } + return pageResult.getList(); + } + + private boolean handelCallbackData(String className,Page page,boolean hasData,BaseCfg entity + ,CfgIndexInfo searchCfg + ,AppPolicyCfg searchAppCfg + ,FileDigestCfg searchDigestCfg + ,AvFileSampleCfg searchFileSampleCfg + ,PxyObjKeyring searchObjKeyringCfg + ,PxyObjTrustedCaCert searchTrustedCaCertCfg + ,PxyObjTrustedCaCrl searchTrustedCaCrlCfg + ,DnsResStrategy searchDnsResStrategy + ,DnsIpCfg searchDnsIpCfg + ,IpPortCfg searchIpPortCfg + ,AvSignSampleCfg searchSignSampleCfg) { + ToMaatBean maatBean; + MaatCfg maatCfg; + List configCompileList; + List groupRelationList; + List ipRegionList; + List strRegionList; + List numRegionList; + List digestRegionList; + List areaIpRegionList; + + maatBean = new ToMaatBean(); + configCompileList = new ArrayList(); + List list = new ArrayList(); + List newList = new ArrayList(); + List ids = new ArrayList(); + List compileIds = Lists.newArrayList(); + if(entity.getServiceId().equals(3)){//ip drop回调类配置用了主表和子表关系 + list = getDataList(page, searchCfg, null, null,null); + if(!StringUtil.isEmpty(list)){ + for(int i=0;i searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return policyCfgList(model, cfg, request, response); } + return "redirect:" + adminPath +"/app/policyCfgList?functionId="+functionId; } /** @@ -477,27 +506,54 @@ public class AppCfgController extends BaseController { */ @RequestMapping(value = {"auditAppHttpCfg"}) // @RequiresPermissions(value={"app:http:confirm"}) - public String auditAppHttpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - AppHttpCfg entity = new AppHttpCfg(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = appCfgService.getAppHttpCfg(Long.parseLong(id)); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - appCfgService.auditAppHttpCfg(entity,isAudit); - } catch (Exception e) { - e.printStackTrace(); - logger.error("app http配置下发失败",e); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - addMessage(redirectAttributes,"error","audit_failed"); + public String auditAppHttpCfg(Model model,@ModelAttribute("cfg")AppHttpCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)){ + AppHttpCfg entity = new AppHttpCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appCfgService.getAppHttpCfg(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + appCfgService.auditAppHttpCfg(entity,isAudit); + } catch (Exception e) { + e.printStackTrace(); + logger.error("app http配置下发失败",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + addMessage(redirectAttributes,"error","audit_failed"); + } } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return httpCfgList(model, cfg, request, response); } return "redirect:" + adminPath +"/app/httpCfgList?functionId="+functionId; } @@ -595,27 +651,54 @@ public class AppCfgController extends BaseController { */ @RequestMapping(value = {"auditAppDomainCfg"}) // @RequiresPermissions(value={"app:domain:confirm"}) - public String auditAppDomainCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - AppDomainCfg entity = new AppDomainCfg(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = appCfgService.getAppDomainCfg(Long.parseLong(id)); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - appCfgService.auditAppDomainCfg(entity,isAudit); - } catch (Exception e) { - e.printStackTrace(); - logger.error("app协议domain配置下发失败",e); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - addMessage(redirectAttributes,"error","audit_failed"); + public String auditAppDomainCfg(Model model,@ModelAttribute("cfg")AppDomainCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)){ + AppDomainCfg entity = new AppDomainCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appCfgService.getAppDomainCfg(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + appCfgService.auditAppDomainCfg(entity,isAudit); + } catch (Exception e) { + e.printStackTrace(); + logger.error("app协议domain配置下发失败",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + addMessage(redirectAttributes,"error","audit_failed"); + } } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return domainCfgList(model, cfg, request, response); } return "redirect:" + adminPath +"/app/domainCfgList?functionId="+functionId; } @@ -834,27 +917,55 @@ public class AppCfgController extends BaseController { */ @RequestMapping(value = {"auditAppSslCfg"}) @RequiresPermissions(value={"app:ssl:confirm"}) - public String auditAppSslCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - AppSslCertCfg entity = new AppSslCertCfg(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = appCfgService.getAppSslCfg(Long.parseLong(id)); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - appCfgService.auditAppSslCfg(entity,isAudit); - } catch (Exception e) { - logger.error("app SSL配置下发失败",e); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - addMessage(redirectAttributes,"error","audit_failed"); + public String auditAppSslCfg(Model model,@ModelAttribute("cfg")AppSslCertCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)){ + AppSslCertCfg entity = new AppSslCertCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appCfgService.getAppSslCfg(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + appCfgService.auditAppSslCfg(entity,isAudit); + } catch (Exception e) { + logger.error("app SSL配置下发失败",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + addMessage(redirectAttributes,"error","audit_failed"); + } } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return sslCfgList(model, cfg, request, response); } + return "redirect:" + adminPath +"/app/sslCfgList?functionId="+functionId; } /** @@ -1194,9 +1305,9 @@ public class AppCfgController extends BaseController { AppTopicDomainCfg entity,RedirectAttributes redirectAttributes) { try { //验证域名的重复行 - if(!StringUtil.isBlank(entity.getDomain())){ + if(!StringUtil.isBlank(entity.getCfgKeywords())){ WebsiteDomainTopic websiteDomainTopic = new WebsiteDomainTopic(); - websiteDomainTopic.setDomain(entity.getDomain()); + websiteDomainTopic.setDomain(entity.getCfgKeywords()); List domainDict = appCfgService.getDomainDict(websiteDomainTopic); if((domainDict==null || domainDict.size()==0)){ //保存到域名关联表中 @@ -1213,8 +1324,8 @@ public class AppCfgController extends BaseController { } } } - if(entity!=null&&StringUtil.isBlank(entity.getDomain())&&!StringUtil.isBlank(entity.getDomain())){ - entity.setDomain(entity.getDomain()); + if(entity!=null&&StringUtil.isBlank(entity.getCfgKeywords())&&!StringUtil.isBlank(entity.getCfgKeywords())){ + entity.setCfgKeywords(entity.getCfgKeywords()); } appCfgService.saveOrUpdateAppTopicDomainCfg(entity); addMessage(redirectAttributes,"success","save_success"); @@ -1243,27 +1354,54 @@ public class AppCfgController extends BaseController { */ @RequestMapping(value = {"auditAppTopicDomainCfg"}) // @RequiresPermissions(value={"app:domain:confirm"}) - public String auditAppTopicDomainCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - AppTopicDomainCfg entity = new AppTopicDomainCfg(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = appCfgService.getAppTopicDomainCfg(Long.parseLong(id)); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - appCfgService.auditAppTopicDomainCfg(entity,isAudit); - addMessage(redirectAttributes,"success","audit_success"); - } catch (Exception e) { - logger.error("app主题网站配置下发失败",e); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - addMessage(redirectAttributes,"error","audit_failed"); + public String auditAppTopicDomainCfg(Model model,@ModelAttribute("cfg")AppTopicDomainCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)){ + AppTopicDomainCfg entity = new AppTopicDomainCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appCfgService.getAppTopicDomainCfg(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + appCfgService.auditAppTopicDomainCfg(entity,isAudit); + addMessage(redirectAttributes,"success","audit_success"); + } catch (Exception e) { + logger.error("app主题网站配置下发失败",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + addMessage(redirectAttributes,"error","audit_failed"); + } } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return TopicDomainCfgList(model, cfg, request, response); } return "redirect:" + adminPath +"/app/topicDomainCfgList?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/AppFeatureCfgController.java b/src/main/java/com/nis/web/controller/configuration/AppFeatureCfgController.java index dffcc740a..386e6b9c7 100644 --- a/src/main/java/com/nis/web/controller/configuration/AppFeatureCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/AppFeatureCfgController.java @@ -10,6 +10,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.taglibs.standard.functions.Functions; @@ -148,28 +149,56 @@ public class AppFeatureCfgController extends BaseController { * @return */ @RequestMapping(value = {"auditAppFeatureCfg"}) - public String auditAppFeatureCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - AppFeatureIndex entity = new AppFeatureIndex(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = appMultiFeatureCfgService.getAppFeatureIndex(Long.parseLong(id)); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - appMultiFeatureCfgService.auditAppFeatureCfg(entity,isAudit); - } catch (MaatConvertException e) { - e.printStackTrace(); - logger.error("app 特征配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error", "request_service_failed"); - } catch (Exception e) { - e.printStackTrace(); - logger.error("app 特征配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error", "audit_failed"); + public String auditAppFeatureCfg(Model model,@ModelAttribute("cfg")AppFeatureIndex cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)){ + AppFeatureIndex entity = new AppFeatureIndex(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appMultiFeatureCfgService.getAppFeatureIndex(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + appMultiFeatureCfgService.auditAppFeatureCfg(entity,isAudit); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.error("app 特征配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error", "request_service_failed"); + } catch (Exception e) { + e.printStackTrace(); + logger.error("app 特征配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error", "audit_failed"); + } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return multiFeatureCfgList(model, cfg, request, response); } + return "redirect:" + adminPath +"/app/feature/multiFeatureCfgList?functionId="+functionId; } /** diff --git a/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java b/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java index e6a760d3f..f0218d0f4 100644 --- a/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java +++ b/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -162,32 +163,59 @@ public class BasicProtocolController extends BaseController { */ @RequestMapping(value = {"audit"}) @RequiresPermissions(value={"basicprotocol:confirm"}) - public String auditAppPolicyCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - AppPolicyCfg entity = new AppPolicyCfg(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_BASIC_PROTOCOL); + public String auditAppPolicyCfg(Model model,@ModelAttribute("cfg")AppPolicyCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)){ + AppPolicyCfg entity = new AppPolicyCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_BASIC_PROTOCOL); + try { + appCfgService.auditAppPolicyCfg(entity,isAudit); + addMessage(redirectAttributes,"success","audit_success"); + } catch (Exception e) { + if(e instanceof MaatConvertException) { + e.printStackTrace(); + logger.info("app策略配置下发失败:"+e.getMessage());; + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + e.printStackTrace(); + logger.error("app策略配置下发失败",e); + addMessage(redirectAttributes,"error","audit_failed"); + } + + } + } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + BeanUtils.copyProperties(searchPage, auditPage); + try { - appCfgService.auditAppPolicyCfg(entity,isAudit); - addMessage(redirectAttributes,"success","audit_success"); + auditAll(auditPage,isValid , cfg); } catch (Exception e) { + logger.error("配置下发失败:",e); if(e instanceof MaatConvertException) { - e.printStackTrace(); - logger.info("app策略配置下发失败:"+e.getMessage());; - addMessage(redirectAttributes,"error","request_service_failed"); + addMessage(redirectAttributes,"error", "request_service_failed"); }else { - e.printStackTrace(); - logger.error("app策略配置下发失败",e); - addMessage(redirectAttributes,"error","audit_failed"); + addMessage(redirectAttributes,"error", "audit_failed"); } } + + return policyCfgList(model, cfg, request, response); } return "redirect:" + adminPath +"/basicprotocol/list?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java b/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java index 53a82614b..084ceda17 100644 --- a/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java +++ b/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -30,6 +31,7 @@ import com.nis.exceptions.CallExternalProceduresException; import com.nis.exceptions.MaatConvertException; import com.nis.util.Constants; import com.nis.util.DictUtils; +import com.nis.util.StringUtil; import com.nis.web.controller.BaseController; import com.nis.web.security.UserUtils; @@ -183,32 +185,61 @@ public class EncryptedTunnelBehaviorController extends BaseController { */ @RequestMapping(value = {"audit"}) @RequiresPermissions(value={"encryptedtunnelbehav:confirm"}) - public String auditAppPolicyCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - AppPolicyCfg entity = new AppPolicyCfg(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_ENCRYPTED_TUNNEL_BEHAVIOR); - try { - appCfgService.auditAppPolicyCfg(entity,isAudit); - addMessage(redirectAttributes,"success","audit_success"); - } catch (Exception e) { - if(e instanceof MaatConvertException) { - e.printStackTrace(); - logger.info("加密隧道配置下发失败:"+e.getMessage());; - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - e.printStackTrace(); - logger.error("加密隧道配置下发失败",e); - addMessage(redirectAttributes,"error","audit_failed"); + public String auditAppPolicyCfg(Model model,@ModelAttribute("cfg")AppPolicyCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)){ + AppPolicyCfg entity = new AppPolicyCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_ENCRYPTED_TUNNEL_BEHAVIOR); + try { + appCfgService.auditAppPolicyCfg(entity,isAudit); + addMessage(redirectAttributes,"success","audit_success"); + } catch (Exception e) { + if(e instanceof MaatConvertException) { + e.printStackTrace(); + logger.info("加密隧道配置下发失败:"+e.getMessage());; + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + e.printStackTrace(); + logger.error("加密隧道配置下发失败",e); + addMessage(redirectAttributes,"error","audit_failed"); + } } } + + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return policyCfgList(model, cfg, request, response); } + return "redirect:" + adminPath +"/encryptedtunnelbehav/list?functionId="+functionId; } /** diff --git a/src/main/java/com/nis/web/controller/configuration/maintenance/DnsIpCfgController.java b/src/main/java/com/nis/web/controller/configuration/maintenance/DnsIpCfgController.java index 01d8f9502..fa8b9c54c 100644 --- a/src/main/java/com/nis/web/controller/configuration/maintenance/DnsIpCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/maintenance/DnsIpCfgController.java @@ -10,6 +10,7 @@ import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; import org.apache.cxf.common.util.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; @@ -100,8 +101,14 @@ public class DnsIpCfgController extends BaseController { } @RequestMapping(value = {"/audit"}) @RequiresPermissions(value={"dns:fake:ip:confirm"}) - public String audit(Integer isAudit,Integer isValid,String ids - ,Integer functionId, RedirectAttributes redirectAttributes) { + public String audit(Model model,@ModelAttribute("cfg")DnsIpCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); @@ -120,6 +127,24 @@ public class DnsIpCfgController extends BaseController { } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return list(model, request, response,cfg, redirectAttributes); } return "redirect:" + adminPath +"/cfg/dnsIp/list?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/maintenance/DnsResStrategyController.java b/src/main/java/com/nis/web/controller/configuration/maintenance/DnsResStrategyController.java index a2a22e7b6..3c362205f 100644 --- a/src/main/java/com/nis/web/controller/configuration/maintenance/DnsResStrategyController.java +++ b/src/main/java/com/nis/web/controller/configuration/maintenance/DnsResStrategyController.java @@ -9,6 +9,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.taglibs.standard.functions.Functions; import org.springframework.stereotype.Controller; @@ -118,8 +119,14 @@ public class DnsResStrategyController extends BaseController { @RequestMapping(value = {"/audit"}) @RequiresPermissions(value={"dns:res:strategy:confirm"}) - public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, - RedirectAttributes redirectAttributes) { + public String audit(Model model,@ModelAttribute("cfg")DnsResStrategy cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); @@ -133,6 +140,24 @@ public class DnsResStrategyController extends BaseController { } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return list(model, request, response, cfg,redirectAttributes); } return "redirect:" + adminPath +"/maintenance/dnsResStrategy/list?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/manipulation/DdosCfgController.java b/src/main/java/com/nis/web/controller/configuration/manipulation/DdosCfgController.java index d16db478d..704bca72c 100644 --- a/src/main/java/com/nis/web/controller/configuration/manipulation/DdosCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/manipulation/DdosCfgController.java @@ -9,6 +9,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; import org.apache.cxf.common.util.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; @@ -87,7 +88,14 @@ public class DdosCfgController extends BaseController { } @RequestMapping(value = {"/audit"}) //@RequiresPermissions(value={"ddos:ip:confirm"}) - public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { + public String audit(Model model,@ModelAttribute("cfg")DdosIpCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); @@ -105,7 +113,24 @@ public class DdosCfgController extends BaseController { } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return list(model, request, response, cfg); } return "redirect:" + adminPath +"/manipulation/ddos/list?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/AvContentController.java b/src/main/java/com/nis/web/controller/configuration/ntc/AvContentController.java index a9ce878af..d95f6046f 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/AvContentController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/AvContentController.java @@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -202,7 +203,14 @@ public class AvContentController extends BaseController { //修改VOIP IP配置审核状态 @RequestMapping(value = {"/auditAvVoip"}) @RequiresPermissions(value={"avVoip:confirm"}) - public String auditVoip(Integer isAudit,Integer isValid,String ids ,String compileIds,Integer functionId ,RedirectAttributes redirectAttributes) { + public String auditVoip(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); @@ -223,6 +231,23 @@ public class AvContentController extends BaseController { } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + return voipCfgList(model, request, response, cfg, redirectAttributes); } return "redirect:" + adminPath +"/ntc/av/voipList?functionId="+functionId; } @@ -639,9 +664,14 @@ public class AvContentController extends BaseController { //修改CONTUrl配置审核 @RequestMapping(value = {"/auditAvContUrl"}) @RequiresPermissions(value={"avContUrl:confirm"}) - public String auditContUrl(Integer isAudit,Integer isValid,String ids - ,String compileIds,Integer functionId - , RedirectAttributes redirectAttributes) { + public String auditContUrl(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); @@ -659,6 +689,23 @@ public class AvContentController extends BaseController { } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + return contUrlList(model, request, response, cfg, redirectAttributes); } return "redirect:" + adminPath +"/ntc/av/contUrlList?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/AvController.java b/src/main/java/com/nis/web/controller/configuration/ntc/AvController.java index 14870ea33..0d7381efa 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/AvController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/AvController.java @@ -20,6 +20,7 @@ import net.sf.json.JSONObject; import org.apache.commons.io.filefilter.IOFileFilter; import org.apache.tools.zip.ZipOutputStream; +import org.springframework.beans.BeanUtils; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -35,6 +36,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; +import com.nis.domain.configuration.AppPolicyCfg; import com.nis.domain.configuration.AvFileSampleCfg; import com.nis.domain.configuration.AvSignSampleCfg; import com.nis.domain.configuration.AvSignSampleCfgModel; @@ -330,80 +332,107 @@ public class AvController extends BaseController { * @return */ @RequestMapping(value = {"/sample/auditAvFileSample"}) - public String auditAvFileSample(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes){ -// avCfgService.auditAvFileSample(isAudit,isValid,ids); - AvFileSampleCfg entity = new AvFileSampleCfg(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = avCfgService.getAvFileSampleById(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); -// String oldSrcUrl = entity.getSrcPath(); -// String oldSampleUrl = entity.getSamplePath(); - try { - /*if(isAudit==1){ - Date creatTime = entity.getCreateTime(); - //音视频文件上传接口调用 - File srcFile = new File(oldSrcUrl); - Map srcMap = new HashMap(); - srcMap.put("filetype", FileUtils.getSuffix(srcFile.getName(), false)); - srcMap.put("datatype", "dbSystem");//源文件存入数据中心 - - srcMap.put("createTime",creatTime); - srcMap.put("key",FileUtils.getPrefix(srcFile.getName(), false)); - srcMap.put("fileName", srcFile.getName()); - srcMap.put("checksum", entity.getSrcMd5()); - ToMaatResult result1 = ConfigServiceUtil.postFileCfg(null, srcFile, JsonMapper.toJsonString(srcMap)); - logger.info("音视频源文件上传响应信息:"+result1); - //获取文件上传响应信息(新的文件访问路径) - String srcAccessUrl = null; - if(!StringUtil.isEmpty(result1)){ - ResponseData data = result1.getData(); - srcAccessUrl=data.getAccessUrl(); - entity.setSrcUrl(srcAccessUrl); -// entity.setSrcPath(""); - } - File sampleFile = new File(oldSampleUrl); - Map sampleMap = new HashMap(); - sampleMap.put("filetype", FileUtils.getSuffix(sampleFile.getName(), false)); - sampleMap.put("datatype", "fileSystem");//样例文件存入fastdfs - sampleMap.put("createTime", creatTime); - sampleMap.put("key",FileUtils.getPrefix(sampleFile.getName(), false)); - sampleMap.put("fileName", sampleFile.getName()); - sampleMap.put("checksum", entity.getSampleMd5()); - ToMaatResult result2 = ConfigServiceUtil.postFileCfg(null, sampleFile, JsonMapper.toJsonString(sampleMap)); - logger.info("音视频样例文件上传响应信息:"+result2); - - //获取文件上传响应信息(新的文件访问路径) - String sampleAccessUrl = null; - if(!StringUtil.isEmpty(result2)){ - ResponseData data = result2.getData(); - sampleAccessUrl = data.getAccessUrl(); - entity.setSampleUrl(sampleAccessUrl); -// entity.setSamplePath(""); + public String auditAvFileSample(Model model,@ModelAttribute("cfg")AvFileSampleCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request){ + if(!StringUtil.isEmpty(ids)){ + //avCfgService.auditAvFileSample(isAudit,isValid,ids); + AvFileSampleCfg entity = new AvFileSampleCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = avCfgService.getAvFileSampleById(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); +// String oldSrcUrl = entity.getSrcPath(); +// String oldSampleUrl = entity.getSamplePath(); + try { + /*if(isAudit==1){ + Date creatTime = entity.getCreateTime(); + //音视频文件上传接口调用 + File srcFile = new File(oldSrcUrl); + Map srcMap = new HashMap(); + srcMap.put("filetype", FileUtils.getSuffix(srcFile.getName(), false)); + srcMap.put("datatype", "dbSystem");//源文件存入数据中心 + srcMap.put("createTime",creatTime); + srcMap.put("key",FileUtils.getPrefix(srcFile.getName(), false)); + srcMap.put("fileName", srcFile.getName()); + srcMap.put("checksum", entity.getSrcMd5()); + ToMaatResult result1 = ConfigServiceUtil.postFileCfg(null, srcFile, JsonMapper.toJsonString(srcMap)); + logger.info("音视频源文件上传响应信息:"+result1); + //获取文件上传响应信息(新的文件访问路径) + String srcAccessUrl = null; + if(!StringUtil.isEmpty(result1)){ + ResponseData data = result1.getData(); + srcAccessUrl=data.getAccessUrl(); + entity.setSrcUrl(srcAccessUrl); +// entity.setSrcPath(""); + } + File sampleFile = new File(oldSampleUrl); + Map sampleMap = new HashMap(); + sampleMap.put("filetype", FileUtils.getSuffix(sampleFile.getName(), false)); + sampleMap.put("datatype", "fileSystem");//样例文件存入fastdfs + sampleMap.put("createTime", creatTime); + sampleMap.put("key",FileUtils.getPrefix(sampleFile.getName(), false)); + sampleMap.put("fileName", sampleFile.getName()); + sampleMap.put("checksum", entity.getSampleMd5()); + ToMaatResult result2 = ConfigServiceUtil.postFileCfg(null, sampleFile, JsonMapper.toJsonString(sampleMap)); + logger.info("音视频样例文件上传响应信息:"+result2); + + //获取文件上传响应信息(新的文件访问路径) + String sampleAccessUrl = null; + if(!StringUtil.isEmpty(result2)){ + ResponseData data = result2.getData(); + sampleAccessUrl = data.getAccessUrl(); + entity.setSampleUrl(sampleAccessUrl); +// entity.setSamplePath(""); + + } + }*/ + avCfgService.auditAvFileSample(entity,isAudit); + //删除本地源文件和样例文件 + /*if(!oldSrcUrl.equals(entity.getSrcUrl())){ + FileUtils.deleteFile(oldSrcUrl); + } + if(!oldSampleUrl.equals(entity.getSampleUrl())){ + FileUtils.deleteFile(oldSampleUrl); + }*/ + }catch(Exception e){ + e.printStackTrace(); + if(e instanceof MaatConvertException) { + logger.info("音视频文件样例配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + logger.error("auditAvFileSample failed",e); + addMessage(redirectAttributes,"error","audit_failed"); } - }*/ - avCfgService.auditAvFileSample(entity,isAudit); - //删除本地源文件和样例文件 - /*if(!oldSrcUrl.equals(entity.getSrcUrl())){ - FileUtils.deleteFile(oldSrcUrl); - } - if(!oldSampleUrl.equals(entity.getSampleUrl())){ - FileUtils.deleteFile(oldSampleUrl); - }*/ - }catch(Exception e){ - e.printStackTrace(); - if(e instanceof MaatConvertException) { - logger.info("音视频文件样例配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - logger.error("auditAvFileSample failed",e); - addMessage(redirectAttributes,"error","audit_failed"); } } + }else { + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return fileSampleList(model, request, response, cfg); } return "redirect:" + adminPath +"/ntc/av/sample/fileSampleList?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/BgpCfgController.java b/src/main/java/com/nis/web/controller/configuration/ntc/BgpCfgController.java index 30b184879..4ec0de17c 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/BgpCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/BgpCfgController.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -26,6 +27,7 @@ import com.nis.domain.configuration.NtcBgpAsCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.exceptions.MaatConvertException; import com.nis.util.Constants; +import com.nis.util.StringUtil; import com.nis.util.StringUtils; import com.nis.web.controller.BaseController; import com.nis.web.security.UserUtils; @@ -41,9 +43,8 @@ public class BgpCfgController extends BaseController{ @RequestMapping(value = {"bgpList"}) // @RequiresPermissions(value={"other:bgp:config"}) - public String httpList(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg - ,HttpServletRequest request,HttpServletResponse response - ,RedirectAttributes redirectAttributes) { + public String bgpList(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg + ,HttpServletRequest request,HttpServletResponse response) { Page searchPage=new Page(request,response,"a"); Page page = bgpCfgService.getBgpList(searchPage, cfg); model.addAttribute("page", page); @@ -129,28 +130,54 @@ public class BgpCfgController extends BaseController{ @RequestMapping(value = {"auditBgpCfg"}) @RequiresPermissions(value={"other:bgp:confirm"}) - public String auditBgpCfg(Integer isAudit,Integer isValid,String ids - ,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = bgpCfgService.getBgpCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - bgpCfgService.auditBgpCfg(entity,isAudit); - } catch (MaatConvertException e) { - e.printStackTrace(); - logger.error("bgp配置下发失败",e); - addMessage(redirectAttributes,"error","request_service_failed"); - }catch (Exception e) { - e.printStackTrace(); - logger.error("bgp配置下发失败",e); - addMessage(redirectAttributes,"error","audit_failed"); + public String auditBgpCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = bgpCfgService.getBgpCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + bgpCfgService.auditBgpCfg(entity,isAudit); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.error("bgp配置下发失败",e); + addMessage(redirectAttributes,"error","request_service_failed"); + }catch (Exception e) { + e.printStackTrace(); + logger.error("bgp配置下发失败",e); + addMessage(redirectAttributes,"error","audit_failed"); + } } + }else { + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return bgpList(model, cfg, request, response); } return "redirect:" + adminPath +"/ntc/other/bgpList?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/FileTransferCfgController.java b/src/main/java/com/nis/web/controller/configuration/ntc/FileTransferCfgController.java index 3653a7222..c39c33bf6 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/FileTransferCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/FileTransferCfgController.java @@ -17,6 +17,7 @@ import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.taglibs.standard.functions.Functions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.FileCopyUtils; @@ -159,30 +160,56 @@ public class FileTransferCfgController extends BaseController{ } @RequestMapping(value = {"auditFtpCfg"}) @RequiresPermissions(value={"fileTransfer:ftp:confirm"}) - public String auditFtpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = fileTransferCfgService.getFtpCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - fileTransferCfgService.auditFtpCfg(entity,isAudit); - addMessage(redirectAttributes,"success","audit_success"); - } catch ( Exception e) { - if(e instanceof MaatConvertException) { - e.printStackTrace(); - logger.error("ftp配置下发失败:"+e.getMessage());; - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - e.printStackTrace(); - logger.error("ftp配置下发失败",e); - addMessage(redirectAttributes,"error","audit_failed"); + public String auditFtpCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)){ + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = fileTransferCfgService.getFtpCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + fileTransferCfgService.auditFtpCfg(entity,isAudit); + addMessage(redirectAttributes,"success","audit_success"); + } catch ( Exception e) { + if(e instanceof MaatConvertException) { + e.printStackTrace(); + logger.error("ftp配置下发失败:"+e.getMessage());; + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + e.printStackTrace(); + logger.error("ftp配置下发失败",e); + addMessage(redirectAttributes,"error","audit_failed"); + } } } + }else { + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + return ftpList(model, cfg, request, response); } return "redirect:" + adminPath +"/ntc/fileTransfer/ftpList?functionId="+functionId; } @@ -276,8 +303,14 @@ public class FileTransferCfgController extends BaseController{ @RequestMapping(value = {"auditFileDigestCfg"}) @RequiresPermissions(value={"fileTransfer:fileDigest:confirm"}) - public String auditFileDigestCfg(Integer isAudit,Integer isValid - ,String ids,Integer functionId, RedirectAttributes redirectAttributes) { + public String auditFileDigestCfg(Model model,@ModelAttribute("cfg")FileDigestCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); @@ -298,6 +331,23 @@ public class FileTransferCfgController extends BaseController{ } } + }else { + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + return fileDigestList(model, cfg, request, response, redirectAttributes); } return "redirect:" + adminPath +"/ntc/fileTransfer/fileDigestList?functionId="+functionId; } @@ -450,30 +500,56 @@ public class FileTransferCfgController extends BaseController{ @RequestMapping(value = {"auditP2pCfg"}) @RequiresPermissions(value={"fileTransfer:p2p:confirm"}) - public String auditP2pCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = fileTransferCfgService.getP2pCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - fileTransferCfgService.auditP2pCfg(entity,isAudit); - } catch ( Exception e) { - e.printStackTrace(); - logger.info("p2p配置下发失败:"+e.getMessage()); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - - }else if(e instanceof CallExternalProceduresException) { - addMessage(redirectAttributes,"error","call_external_procedures_failed"); - }else { - addMessage(redirectAttributes,"error","audit_failed"); + public String auditP2pCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = fileTransferCfgService.getP2pCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + fileTransferCfgService.auditP2pCfg(entity,isAudit); + } catch ( Exception e) { + e.printStackTrace(); + logger.info("p2p配置下发失败:"+e.getMessage()); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + + }else if(e instanceof CallExternalProceduresException) { + addMessage(redirectAttributes,"error","call_external_procedures_failed"); + }else { + addMessage(redirectAttributes,"error","audit_failed"); + } } } + }else { + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + return p2pList(model, cfg, request, response); } return "redirect:" + adminPath +"/ntc/fileTransfer/p2pList?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java b/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java index c7389a6d7..4fcdcb178 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java @@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -45,6 +46,7 @@ import com.nis.domain.configuration.template.SnatTemplate; import com.nis.domain.configuration.template.StringAllTemplate; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.exceptions.MaatConvertException; +import com.nis.index.Configurations; import com.nis.util.Constants; import com.nis.util.DictUtils; import com.nis.util.StringUtil; @@ -126,28 +128,67 @@ public class IpController extends BaseController{ ipCfgService.updateIpCfgValid(isValid, ids, functionId); return "redirect:" + adminPath +"/ntc/iplist/list?functionId="+functionId; } - + /** + * + * @param model + * @param cfg + * @param auditType 审核类型 :批量审核时使用,1批量生效,0批量失效 + * @param isAudit + * @param isValid + * @param ids + * @param functionId + * @param request + * @param response + * @param redirectAttributes + * @return + */ @RequestMapping(value = {"audit"}) @RequiresPermissions("iplist:confirm") - public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = ipCfgService.getIpPortCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - if(StringUtils.isNoneBlank(entity.getUserRegion4())) { - ipCfgService.auditAsnCfg(entity, isAudit); - }else { - ipCfgService.auditIpCfg(entity,isAudit); + public String audit(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg + ,Integer isAudit + ,Integer isValid + ,String ids + ,Integer functionId + , HttpServletRequest request + ,HttpServletResponse response + ,RedirectAttributes redirectAttributes) { + //选中配置审核 + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = ipCfgService.getIpPortCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + if(StringUtils.isNoneBlank(entity.getUserRegion4())) { + ipCfgService.auditAsnCfg(entity, isAudit); + }else { + ipCfgService.auditIpCfg(entity,isAudit); + } + + } catch (Exception e) { + logger.info("ip配置下发失败:"+e.getMessage()); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + } - + } + }else{//条件下所有配置审核 + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); } catch (Exception e) { - logger.info("ip配置下发失败:"+e.getMessage()); + logger.error("配置下发失败:",e); if(e instanceof MaatConvertException) { addMessage(redirectAttributes,"error", "request_service_failed"); }else { @@ -155,7 +196,10 @@ public class IpController extends BaseController{ } } + + return list(model, cfg, request, response); } + return "redirect:" + adminPath +"/ntc/iplist/list?functionId="+functionId; } /*//ip配置导入 diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/MailCfgController.java b/src/main/java/com/nis/web/controller/configuration/ntc/MailCfgController.java index 9b464f1cf..2582b5a18 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/MailCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/MailCfgController.java @@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.FileCopyUtils; @@ -37,6 +38,7 @@ import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.FileUtils; import com.nis.util.JsonMapper; +import com.nis.util.StringUtil; import com.nis.web.controller.BaseController; import com.nis.web.security.UserUtils; @@ -164,30 +166,56 @@ public class MailCfgController extends BaseController{ } @RequestMapping(value = {"auditMailCfg"}) @RequiresPermissions(value={"mail:confirm"}) - public String auditMailCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = mailCfgService.getMailCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - mailCfgService.auditMailCfg(entity,isAudit); - } catch ( Exception e) { - e.printStackTrace(); - logger.error("mail配置下发失败:"+e.getMessage()); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - - }else if(e instanceof CallExternalProceduresException) { - addMessage(redirectAttributes,"error","call_external_procedures_failed"); - }else { - addMessage(redirectAttributes,"error","save_failed"); + public String auditMailCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = mailCfgService.getMailCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + mailCfgService.auditMailCfg(entity,isAudit); + } catch ( Exception e) { + e.printStackTrace(); + logger.error("mail配置下发失败:"+e.getMessage()); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + + }else if(e instanceof CallExternalProceduresException) { + addMessage(redirectAttributes,"error","call_external_procedures_failed"); + }else { + addMessage(redirectAttributes,"error","save_failed"); + } } } + }else { + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + return mailList(model, cfg, request, response); } return "redirect:" + adminPath +"/ntc/mail/mailList?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java b/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java index baa102ba4..3bf5d1c49 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java @@ -208,25 +208,52 @@ public class WebsiteController extends BaseController{ } @RequestMapping(value = {"auditHttpCfg"}) @RequiresPermissions(value={"website:http:confirm"}) - public String auditHttpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = websiteCfgService.getHttpCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - websiteCfgService.auditHttpCfg(entity,isAudit); - } catch (MaatConvertException e) { - logger.error("http配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error", "request_service_failed"); - }catch (Exception e) { - logger.error("http配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error", "audit_failed"); + public String auditHttpCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = websiteCfgService.getHttpCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + websiteCfgService.auditHttpCfg(entity,isAudit); + } catch (MaatConvertException e) { + logger.error("http配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error", "request_service_failed"); + }catch (Exception e) { + logger.error("http配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error", "audit_failed"); + } } + }else{//条件下所有配置审核 + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return httpList(model, cfg, request, response); } return "redirect:" + adminPath +"/ntc/website/httpList?functionId="+functionId; } @@ -303,30 +330,57 @@ public class WebsiteController extends BaseController{ } @RequestMapping(value = {"auditSslCfg"}) @RequiresPermissions(value={"website:ssl:confirm"}) - public String auditSslCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = websiteCfgService.getSslCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - websiteCfgService.auditSslCfg(entity,isAudit); - } catch ( Exception e) { - e.printStackTrace(); - logger.error("ssl配置下发失败:"+e.getMessage()); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - - }else if(e instanceof CallExternalProceduresException) { - addMessage(redirectAttributes,"error","call_external_procedures_failed"); - }else { - addMessage(redirectAttributes,"error","save_failed"); + public String auditSslCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isAudit, + Integer isValid, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletRequest request, + HttpServletResponse response) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = websiteCfgService.getSslCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + websiteCfgService.auditSslCfg(entity,isAudit); + } catch ( Exception e) { + e.printStackTrace(); + logger.error("ssl配置下发失败:"+e.getMessage()); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + + }else if(e instanceof CallExternalProceduresException) { + addMessage(redirectAttributes,"error","call_external_procedures_failed"); + }else { + addMessage(redirectAttributes,"error","save_failed"); + } } } + }else{//条件下所有配置审核 + try { + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return sslList(model, cfg, request, response); } return "redirect:" + adminPath +"/ntc/website/sslList?functionId="+functionId; } @@ -396,27 +450,54 @@ public class WebsiteController extends BaseController{ } @RequestMapping(value = {"auditDnsCfg"}) @RequiresPermissions(value={"website:dns:confirm"}) - public String auditDnsCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = websiteCfgService.getDnsCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - websiteCfgService.auditDnsCfg(entity,isAudit); - } catch (MaatConvertException e) { - e.printStackTrace(); - logger.info("dns配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error", "request_service_failed"); - }catch (Exception e) { - e.printStackTrace(); - logger.info("dns配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error", "audit_failed"); + public String auditDnsCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isAudit, + Integer isValid, + String ids, + Integer functionId, + HttpServletRequest request, + HttpServletResponse response, + RedirectAttributes redirectAttributes) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = websiteCfgService.getDnsCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + websiteCfgService.auditDnsCfg(entity,isAudit); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.info("dns配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error", "request_service_failed"); + }catch (Exception e) { + e.printStackTrace(); + logger.info("dns配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error", "audit_failed"); + } } + }else{//条件下所有配置审核 + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return dnsList(model, cfg, request, response); } return "redirect:" + adminPath +"/ntc/website/dnsList?functionId="+functionId; } @@ -842,5 +923,4 @@ public class WebsiteController extends BaseController{ } //return "redirect:" + adminPath +"/ntc/website/httpList?functionId="+entity.getFunctionId(); } - } diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java b/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java index 896745dcf..aeeb5d147 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java @@ -96,28 +96,56 @@ public class WhiteListController extends CommonController{ } @RequestMapping(value = {"ip/audit"}) @RequiresPermissions("whitelist:ip:confirm") - public String auditIp(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = ipCfgService.getIpPortCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - ipCfgService.auditIpCfg(entity,isAudit); - addMessage(redirectAttributes,"success", "audit_success"); - } catch (MaatConvertException e) { - logger.info("ip配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error", "request_service_failed"); - }catch (Exception e) { - logger.info("ip配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error", "audit_failed"); + public String auditIp(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request + ) { + if(!StringUtil.isEmpty(ids)){ + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = ipCfgService.getIpPortCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + ipCfgService.auditIpCfg(entity,isAudit); + addMessage(redirectAttributes,"success", "audit_success"); + } catch (MaatConvertException e) { + logger.info("ip配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error", "request_service_failed"); + }catch (Exception e) { + logger.info("ip配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error", "audit_failed"); + } } + }else{ + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return ipList(model, cfg, request, response); } - return "redirect:" + adminPath +"/ntc/whitelist/ip/list?functionId="+entity.getFunctionId(); + return "redirect:" + adminPath +"/ntc/whitelist/ip/list?functionId="+functionId; } @RequestMapping(value = {"updateIpValid"}) @RequiresPermissions(value={"whitelist:ip:config"}) @@ -230,27 +258,54 @@ public class WhiteListController extends CommonController{ @RequestMapping(value = {"domain/audit"}) @RequiresPermissions("whitelist:domain:confirm") - public String auditDomain(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = domainService.getDomainCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - domainService.auditDomainCfg(entity,isAudit); - } catch (MaatConvertException e) { - e.printStackTrace(); - logger.error("domain配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error","request_service_failed"); - }catch (Exception e) { - e.printStackTrace(); - logger.error("domain配置下发失败:"+e.getMessage()); - addMessage(redirectAttributes,"error","audit_failed"); + public String auditDomain(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = domainService.getDomainCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + domainService.auditDomainCfg(entity,isAudit); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.error("domain配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error","request_service_failed"); + }catch (Exception e) { + e.printStackTrace(); + logger.error("domain配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes,"error","audit_failed"); + } } + }else{//条件下所有配置审核 + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return domainList(model, cfg, request, response); } return "redirect:" + adminPath +"/ntc/whitelist/domain/list?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/CachePolicyController.java b/src/main/java/com/nis/web/controller/configuration/proxy/CachePolicyController.java index 413795fcb..62e7dd637 100644 --- a/src/main/java/com/nis/web/controller/configuration/proxy/CachePolicyController.java +++ b/src/main/java/com/nis/web/controller/configuration/proxy/CachePolicyController.java @@ -11,6 +11,7 @@ import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -175,27 +176,55 @@ public class CachePolicyController extends BaseController{ } @RequestMapping(value = {"audit"}) @RequiresPermissions(value={"cache:policy:confirm"}) - public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = cachePolicyService.getCachePolicy(Long.parseLong(id)); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - cachePolicyService.auditCachePolicy(entity,isAudit); - } catch ( Exception e) { - e.printStackTrace(); - logger.info("代理缓存策略下发失败:"+e.getMessage()); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - addMessage(redirectAttributes,"error","audit_failed"); + public String audit(Model model,@ModelAttribute("cfg") CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + + if(!StringUtil.isEmpty(ids)){ + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = cachePolicyService.getCachePolicy(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + cachePolicyService.auditCachePolicy(entity,isAudit); + } catch ( Exception e) { + e.printStackTrace(); + logger.info("代理缓存策略下发失败:"+e.getMessage()); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + addMessage(redirectAttributes,"error","audit_failed"); + } } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return list(model, request, response, cfg); } return "redirect:" + adminPath +"/proxy/cache/list?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java index 74ded72b6..499a51f2e 100644 --- a/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java +++ b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java @@ -13,6 +13,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -223,28 +224,55 @@ public class HttpRedirectPolicyController extends BaseController{ ,"control:httpMinit:confirm" ,"control:httpWhitelist:confirm"} ,logical=Logical.OR) - public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = httpRedirectCfgService.getHttpCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - try { - httpRedirectCfgService.auditHttpCfg(entity,isAudit); - } catch ( Exception e) { - e.printStackTrace(); - logger.info("http重定向配置下发失败:"+e.getMessage()); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); - }else { - addMessage(redirectAttributes,"error","audit_failed"); + public String audit(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = httpRedirectCfgService.getHttpCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + httpRedirectCfgService.auditHttpCfg(entity,isAudit); + } catch ( Exception e) { + e.printStackTrace(); + logger.info("http重定向配置下发失败:"+e.getMessage()); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + addMessage(redirectAttributes,"error","audit_failed"); + } + } } + }else{//条件下所有配置审核 + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return list(model, request, response, cfg); } - } return "redirect:" + adminPath +"/proxy/control/httpRedirect/httpRedirectList?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/InterceptController.java b/src/main/java/com/nis/web/controller/configuration/proxy/InterceptController.java index 8618d7501..6d4f8dd9e 100644 --- a/src/main/java/com/nis/web/controller/configuration/proxy/InterceptController.java +++ b/src/main/java/com/nis/web/controller/configuration/proxy/InterceptController.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -135,27 +136,54 @@ public class InterceptController extends CommonController{ } @RequestMapping(value = {"auditInterceptIpCfg","auditInterceptDomainCfg","auditInterceptIpPayloadCfg"}) - public String auditInterceptIpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - CfgIndexInfo entity = new CfgIndexInfo(); - String[] idArray = ids.split(","); - for(String id :idArray){ - entity = interceptCfgService.getInterceptCfg(Long.parseLong(id),null); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); + public String auditInterceptIpCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = interceptCfgService.getInterceptCfg(Long.parseLong(id),null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + interceptCfgService.auditInterceptIpCfg(entity,isAudit); + addMessage(redirectAttributes,"success","audit_success"); + } catch ( Exception e) { + logger.error("intercept ip audit failed",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + } + } + }else{//条件下所有配置审核 + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + try { - interceptCfgService.auditInterceptIpCfg(entity,isAudit); - addMessage(redirectAttributes,"success","audit_success"); - } catch ( Exception e) { - logger.error("intercept ip audit failed",e); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); if(e instanceof MaatConvertException) { addMessage(redirectAttributes,"error", "request_service_failed"); }else { addMessage(redirectAttributes,"error", "audit_failed"); } + } + + return ipList(model, cfg, request, response); } return "redirect:" + adminPath +"/proxy/intercept/ip/list?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/PxyObjKeyringController.java b/src/main/java/com/nis/web/controller/configuration/proxy/PxyObjKeyringController.java index 6b8506318..3ed5ee6a2 100644 --- a/src/main/java/com/nis/web/controller/configuration/proxy/PxyObjKeyringController.java +++ b/src/main/java/com/nis/web/controller/configuration/proxy/PxyObjKeyringController.java @@ -25,6 +25,7 @@ import javax.net.ssl.TrustManagerFactory; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.beanutils.BeanUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -340,8 +341,14 @@ public class PxyObjKeyringController extends BaseController { @RequestMapping(value = {"/audit"}) @RequiresPermissions(value={"proxy:intercept:confirm"}) - public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, - RedirectAttributes redirectAttributes) { + public String audit(Model model,@ModelAttribute("cfg")PxyObjKeyring cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); @@ -357,6 +364,24 @@ public class PxyObjKeyringController extends BaseController { } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return list(model, request, response, cfg,redirectAttributes); } return "redirect:" + adminPath +"/proxy/intercept/strateagy/list?functionId="+functionId; } @@ -814,8 +839,14 @@ public class PxyObjKeyringController extends BaseController { @RequestMapping(value = {"/trustedCertAudit"}) @RequiresPermissions(value={"proxy:trustedCert:confirm"}) - public String trustedCertAudit(Integer isAudit,Integer isValid,String ids,Integer functionId, - RedirectAttributes redirectAttributes) { + public String trustedCertAudit(Model model,@ModelAttribute("cfg")PxyObjTrustedCaCert cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); @@ -833,6 +864,24 @@ public class PxyObjKeyringController extends BaseController { } } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + + try { + BeanUtils.copyProperties(searchPage, auditPage); + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return trustedCertList(model, request, response, cfg, redirectAttributes); } return "redirect:" + adminPath +"/proxy/intercept/strateagy/trustedCertList?functionId="+functionId; } diff --git a/src/main/java/com/nis/web/dao/configuration/AppCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/AppCfgDao.xml index 1f08d8e63..c20eff50c 100644 --- a/src/main/java/com/nis/web/dao/configuration/AppCfgDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/AppCfgDao.xml @@ -111,7 +111,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -1091,8 +1091,8 @@ AND r.CFG_TYPE like concat(concat('%',#{cfgType,jdbcType=VARCHAR}),'%') - - AND r.DOMAIN like concat(concat('%',#{domain,jdbcType=VARCHAR}),'%') + + AND r.DOMAIN like concat(concat('%',#{cfgKeywords,jdbcType=VARCHAR}),'%') AND r.ACTION=#{action,jdbcType=INTEGER} @@ -1192,8 +1192,8 @@ AND r.CFG_TYPE like concat(concat('%',#{cfgType,jdbcType=VARCHAR}),'%') - - AND r.DOMAIN like concat(concat('%',#{domain,jdbcType=VARCHAR}),'%') + + AND r.DOMAIN like concat(concat('%',#{cfgKeywords,jdbcType=VARCHAR}),'%') AND r.ACTION=#{action,jdbcType=INTEGER} @@ -1815,7 +1815,7 @@ DOMAIN,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG )values ( , - #{domain,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER}, + #{cfgKeywords,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER}, #{isHexbin,jdbcType=INTEGER},#{doLog,jdbcType=INTEGER} ) @@ -1828,7 +1828,7 @@ DOMAIN,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG )values ( , - #{domain,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER}, + #{cfgKeywords,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER}, #{isHexbin,jdbcType=INTEGER},#{doLog,jdbcType=INTEGER} ) @@ -1845,7 +1845,7 @@ DOMAIN,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG )values ( , - #{domain,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER}, + #{cfgKeywords,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER}, #{isHexbin,jdbcType=INTEGER},#{doLog,jdbcType=INTEGER} ) @@ -2389,8 +2389,8 @@ CFG_TYPE =#{cfgType,jdbcType=VARCHAR}, - - domain=#{domain,jdbcType=VARCHAR}, + + domain=#{cfgKeywords,jdbcType=VARCHAR}, expr_type=#{exprType,jdbcType=INTEGER}, @@ -2488,8 +2488,8 @@ CFG_TYPE =#{cfgType,jdbcType=VARCHAR}, - - domain=#{domain,jdbcType=VARCHAR}, + + domain=#{cfgKeywords,jdbcType=VARCHAR}, expr_type=#{exprType,jdbcType=INTEGER}, diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index 968bd4d90..50351b4f3 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -1313,7 +1313,7 @@ public abstract class BaseService { } // 拦截策略 - public ProxyObjKeyring convertCallBackProxyObjKeyring(PxyObjKeyring cfg) { + public static ProxyObjKeyring convertCallBackProxyObjKeyring(PxyObjKeyring cfg) { ProxyObjKeyring proxyObjKeyring = new ProxyObjKeyring(); proxyObjKeyring.setId(Long.valueOf(cfg.getCompileId())); proxyObjKeyring.setCfgId(cfg.getCompileId()); @@ -1332,7 +1332,7 @@ public abstract class BaseService { } // 可信证书 - public List convertCallBackProxyObjTrustedCa(PxyObjTrustedCaCert cfgCert, + public static List convertCallBackProxyObjTrustedCa(PxyObjTrustedCaCert cfgCert, PxyObjTrustedCaCrl cfgCrl) { List proxyObjTrustedCas = new ArrayList<>(); if (cfgCert != null && !StringUtil.isEmpty(cfgCert.getCompileId())) { @@ -1364,13 +1364,13 @@ public abstract class BaseService { } // ip转换为callback用ip - public NtcDnsResStrategy convertCallBackDnsResStrategy(DnsResStrategy cfg) { + public static NtcDnsResStrategy convertCallBackDnsResStrategy(DnsResStrategy cfg) { NtcDnsResStrategy resStrategy = new NtcDnsResStrategy(); resStrategy.init(); resStrategy.setId(Long.valueOf(cfg.getCompileId())); resStrategy.setCfgId(cfg.getCompileId()); resStrategy.setReqStrateId(cfg.getCfgId()); - resStrategy.setStrateName(this.keywordsEscape(cfg.getCfgDesc())); + resStrategy.setStrateName(keywordsEscape(cfg.getCfgDesc())); resStrategy.setAction(cfg.getAction()); resStrategy.setService(cfg.getServiceId()); resStrategy.setResGroup1Id(cfg.getResGroup1Id()); diff --git a/src/main/java/com/nis/web/service/configuration/AppCfgService.java b/src/main/java/com/nis/web/service/configuration/AppCfgService.java index c6c9ff342..a6ca98acc 100644 --- a/src/main/java/com/nis/web/service/configuration/AppCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/AppCfgService.java @@ -1354,7 +1354,7 @@ public class AppCfgService extends BaseService { entity.setTableName(AppDomainCfg.getTablename()); appCfgDao.auditCfg(entity); if (isAudit == 1) { - entity.setCfgKeywords(entity.getDomain()); + entity.setCfgKeywords(entity.getCfgKeywords()); List list = new ArrayList(); list.add(entity); Map map = cfgConvert(strRegionList, list, 2, entity, groupRelationList); @@ -1391,7 +1391,7 @@ public class AppCfgService extends BaseService { // 设置APP自定义域 String userRegion = "APP_ID=" + entity.getAppCode() + Constants.USER_REGION_SPLIT + "DOMAIN_ID=" + entity.getCompileId() + Constants.USER_REGION_SPLIT + "DOMAIN_STR=" - + keywordsEscape(entity.getDomain()); + + keywordsEscape(entity.getCfgKeywords()); maatCfg.setUserRegion(userRegion); configCompileList.add(maatCfg); maatBean.setConfigCompileList(configCompileList); @@ -1440,7 +1440,7 @@ public class AppCfgService extends BaseService { appCfgDao.auditCfg(entity); // 域名为关键字 if (isAudit == 1) { - entity.setCfgKeywords(entity.getDomain()); + entity.setCfgKeywords(entity.getCfgKeywords()); List list = new ArrayList(); list.add(entity); Map map = cfgConvert(strRegionList, list, 2, entity, groupRelationList); @@ -1476,7 +1476,7 @@ public class AppCfgService extends BaseService { maatCfg.setIsValid(entity.getIsValid()); // 设置APP自定义域 - String domain = entity.getDomain(); + String domain = entity.getCfgKeywords(); WebsiteDomainTopic websiteDomainTopic = new WebsiteDomainTopic(); websiteDomainTopic.setDomain(domain); //查询domainId diff --git a/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java b/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java new file mode 100644 index 000000000..7dce64e56 --- /dev/null +++ b/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java @@ -0,0 +1,179 @@ +package com.nis.web.service.configuration; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +import net.sf.json.JSONObject; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.google.common.collect.Lists; +import com.nis.domain.Page; +import com.nis.domain.basics.AsnIpCfg; +import com.nis.domain.configuration.AppPolicyCfg; +import com.nis.domain.configuration.AreaIpCfg; +import com.nis.domain.configuration.AvFileSampleCfg; +import com.nis.domain.configuration.BaseCfg; +import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.BaseStringCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.CommonStringCfg; +import com.nis.domain.configuration.ComplexkeywordCfg; +import com.nis.domain.configuration.DnsIpCfg; +import com.nis.domain.configuration.DnsResStrategy; +import com.nis.domain.configuration.FileDigestCfg; +import com.nis.domain.configuration.HttpBodyCfg; +import com.nis.domain.configuration.HttpReqHeadCfg; +import com.nis.domain.configuration.HttpResHeadCfg; +import com.nis.domain.configuration.HttpUrlCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.NtcSubscribeIdCfg; +import com.nis.domain.configuration.PxyObjKeyring; +import com.nis.domain.configuration.PxyObjTrustedCaCert; +import com.nis.domain.configuration.PxyObjTrustedCaCrl; +import com.nis.domain.maat.MaatCfg; +import com.nis.domain.maat.MaatCfg.DigestCfg; +import com.nis.domain.maat.MaatCfg.GroupCfg; +import com.nis.domain.maat.MaatCfg.IpCfg; +import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; +import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.domain.maat.ToMaatBean; +import com.nis.domain.maat.ToMaatResult; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.util.DateUtils; +import com.nis.util.FileUtils; +import com.nis.util.StringUtil; +import com.nis.web.dao.configuration.AreaIpCfgDao; +import com.nis.web.dao.configuration.CommonPolicyDao; +import com.nis.web.dao.configuration.ConfigSynchronizationDao; +import com.nis.web.dao.configuration.StringCfgDao; +import com.nis.web.dao.configuration.WebsiteCfgDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.BaseService; +import com.nis.web.service.CrudService; + +@Service +public class CommonPolicyService extends CrudService { + @Autowired + protected CommonPolicyDao commonPolicyDao; + @Autowired + protected ConfigSynchronizationDao synchronizationDao; + + /** + * maat配置批量失效 + * @param cfgList + * @param page + * @param entity + * @param list + * @param hasData + * @return + * @throws NoSuchFieldException + * @throws SecurityException + * @throws IllegalArgumentException + * @throws IllegalAccessException + */ + public boolean auditNtcMaatData(List> cfgList, + Page page, + BaseCfg entity, + List list, + boolean hasData)throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{ + ToMaatBean maatBean; + MaatCfg maatCfg; + List configCompileList; + + maatBean = new ToMaatBean(); + configCompileList = new ArrayList(); + List compileIds = new ArrayList(); + for(BaseCfg cfg:list){ + compileIds.add(cfg.getCompileId()); + } + + if(!StringUtil.isEmpty(compileIds) && !StringUtil.isEmpty(entity.getTableName())) { + commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,compileIds,null); + } + + if(cfgList!=null){ + for(Map m:cfgList){ + String tableName = m.get("tableName").toString(); + commonPolicyDao.auditCfgBatch( tableName, entity,compileIds,null); + } + } + for(BaseCfg cfg:list){ + maatCfg = new MaatCfg(); + maatCfg.setCompileId(cfg.getCompileId()); + maatCfg.setServiceId(cfg.getServiceId()); + maatCfg.setIsValid(0);//无效 + configCompileList.add(maatCfg); + } + page.setList(list); + if(page.isLastPage()){ + hasData = false; + } + if(!StringUtil.isEmpty(configCompileList.size())){ + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entity.getAuditTime()); + maatBean.setCreatorName(entity.getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.UPDATE_ACTION); + //调用服务接口取消配置 + String json=gsonToJson(maatBean); + logger.info("配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.put(json,1); + logger.info("配置取消配置响应信息:"+result.getMsg()); + } + return hasData; + } + public List getIpDropList(String tabName,List compileIds){ + return synchronizationDao.getIpDropList(tabName, compileIds); + } + public List getIpPortList(IpPortCfg entity){ + return synchronizationDao.getIpPortListByService(entity); + } + + /** + * 回调类配置下发 + * @param className + * @param page + * @param entity + * @param hasData + * @param isUpdateCfg + * @throws ClassNotFoundException + */ + public void auditCallBackData(List auditList,List compileIds,List ids,BaseCfg entity){ + if(!StringUtil.isEmpty(compileIds) && !StringUtil.isEmpty(entity.getTableName())) { + commonPolicyDao.auditCfgBatch( "cfg_index_info", entity,compileIds,null); + } + if(!StringUtil.isEmpty(ids) && !StringUtil.isEmpty(entity.getTableName())) { + commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,ids,null); + } + + if(entity.getIsAudit()==1){ + //调用服务接口下发配置数据 + String json=gsonToJson(auditList); + logger.info("批量下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json); + logger.info("批量下发响应信息:"+result.getMsg()); + + }else if(entity.getIsAudit()==3){ + //调用服务接口取消配置 + String json=gsonToJson(auditList); + logger.info("批量下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.put(json,2); + logger.info("批量响应信息:"+result.getMsg()); + } + } +} diff --git a/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java b/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java index 237fbf4cf..e0694a4f3 100644 --- a/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java +++ b/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java @@ -1303,18 +1303,24 @@ public class ConfigSynchronizationService extends BaseService{ ipCfg.setRegionId(regionIds.get(0)); regionIds.remove(0); ipCfg.setGroupId(groupIds.get(0)); + ipCfg.setIsValid(entity.getIsValid()); + ipCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime()); groupIds.remove(0); list1.add(ipCfg); }else if(cfgType==2){ strCfg.setRegionId(regionIds.get(0)); regionIds.remove(0); strCfg.setGroupId(groupIds.get(0)); + strCfg.setIsValid(entity.getIsValid()); + strCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime()); groupIds.remove(0); list1.add(strCfg); }else if(cfgType==3){ complexStrCfg.setRegionId(regionIds.get(0)); regionIds.remove(0); complexStrCfg.setGroupId(groupIds.get(0)); + complexStrCfg.setIsValid(entity.getIsValid()); + complexStrCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime()); groupIds.remove(0); list1.add(complexStrCfg); } diff --git a/src/main/java/com/nis/web/service/configuration/FileTransferCfgService.java b/src/main/java/com/nis/web/service/configuration/FileTransferCfgService.java index be3deb4b1..b571e16ea 100644 --- a/src/main/java/com/nis/web/service/configuration/FileTransferCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/FileTransferCfgService.java @@ -432,7 +432,11 @@ public class FileTransferCfgService extends CrudService 0) { + int cfdsLevel=entity.getCfdsLevel(); + cfdsLevel= cfdsLevel > 10 ? (cfdsLevel/10):cfdsLevel; + entity.setCfdsLevel(cfdsLevel); + } mailCfgDao.saveMailFileDigestCfg(entity); // 保存SubscribeId域配置信息 @@ -454,7 +458,11 @@ public class FileTransferCfgService extends CrudService 0) { + int cfdsLevel=entity.getCfdsLevel(); + cfdsLevel= cfdsLevel > 10 ? (cfdsLevel/10):cfdsLevel; + entity.setCfdsLevel(cfdsLevel); + } entity.setEditorId(entity.getCurrentUser().getId()); entity.setEditTime(new Date()); if(result.getData() !=null ) { @@ -584,13 +592,6 @@ public class FileTransferCfgService extends CrudService map = cfgConvert(digestRegionList,list,5,entity,groupRelationList); groupRelationList=map.get("groupList"); digestRegionList=map.get("dstList"); - if(!StringUtil.isEmpty(digestRegionList)){ - for (DigestCfg digest : digestRegionList) { - if(!StringUtil.isEmpty(digest.getCfdsLevel()) && (digest.getCfdsLevel() > 1)){ - digest.setCfdsLevel((int)(digest.getCfdsLevel()/10)); - } - } - } if(map.get("numRegionList")!=null){ numRegionList.addAll(map.get("numRegionList")); } @@ -657,7 +658,7 @@ public class FileTransferCfgService extends CrudService ntcList = stringCfgDao.findSubscribeIdCfgList(ntcSubscribeIdCfg); diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties index 5d5efdc8e..eb5488a59 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -203,7 +203,7 @@ operator=\u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 content=\u0421\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 remarks=\u0417\u0430\u043C\u0435\u0447\u0430\u043D\u0438\u044F operation=\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u044F -submit=\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 +submit=\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044C cancel=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C begin_date=\u0412\u0440\u0435\u043C\u044F \u043D\u0430\u0447\u0430\u043B\u0430 end_date=\u0412\u0440\u0435\u043C\u044F \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F @@ -220,7 +220,7 @@ export_confirm_message=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u0 fill_loginName=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043B\u043E\u0433\u0438\u043D fill_loginPassWord=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u0430\u0440\u043E\u043B\u044C loginName_error=\u041B\u043E\u0433\u0438\u043D \u0438\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u043D\u0435\u0432\u0435\u0440\u043D\u044B, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437. -system_error=\u0412 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u0432\u043E\u0437\u043D\u0438\u043A\u043B\u0430 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435\! +system_error=\u0412 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u0432\u043E\u0437\u043D\u0438\u043A\u043B\u0430 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435! save_success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 save_failed=\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 update_success=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 @@ -231,7 +231,7 @@ delete_failed_admin=\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0435 \u044 audit_success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 audit_failed=\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 turning_page=\u041F\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044F URL -login_timeout=\u041D\u0435\u0442 \u043B\u043E\u0433\u0438\u043D\u0430 \u0438\u043B\u0438 \u0442\u0430\u0439\u043C\u0430\u0443\u0442 \u0432\u0445\u043E\u0434\u0430, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u043E\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0441\u043D\u043E\u0432\u0430. \u0421\u043F\u0430\u0441\u0438\u0431\u043E\! +login_timeout=\u041D\u0435\u0442 \u043B\u043E\u0433\u0438\u043D\u0430 \u0438\u043B\u0438 \u0442\u0430\u0439\u043C\u0430\u0443\u0442 \u0432\u0445\u043E\u0434\u0430, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u043E\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0441\u043D\u043E\u0432\u0430. \u0421\u043F\u0430\u0441\u0438\u0431\u043E! captcha_error=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043E\u0434 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F enter_captcha=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u043E\u0434 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F input=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 @@ -241,17 +241,17 @@ filter=\u0424\u0438\u043B\u044C\u0442\u0440 to=\u0414\u043E reset=\u0421\u0431\u043E\u0440\u0441 info=\u0418\u043D\u0444\u043E. -has_approved=\u0415\u0441\u043B\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u044B, \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430\! -hasnot_approved=\u041D\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0435\u043D\u0430, \u044D\u0442\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430\! -check_one=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445\! -one_more=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445 \u043C\u0438\u043D\u0438\u043C\u0443\u043C\! -one_more_area=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ISP\! +has_approved=\u0415\u0441\u043B\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u044B, \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430! +hasnot_approved=\u041D\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0435\u043D\u0430, \u044D\u0442\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430! +check_one=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445! +one_more=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445 \u043C\u0438\u043D\u0438\u043C\u0443\u043C! +one_more_area=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ISP! custom_columns=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u043F\u043E\u043B\u044F \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432 -maxlength_64=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 64 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! -maxlength_128=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 128 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! -maxlength_256=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 256 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! -maxlength_512=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 512 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! -maxlength_4000=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 4000 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! +maxlength_64=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 64 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! +maxlength_128=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 128 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! +maxlength_256=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 256 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! +maxlength_512=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 512 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! +maxlength_4000=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 4000 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! ok=OK clear=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C @@ -266,7 +266,7 @@ sendind_org=\u041E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F \ no_node=\u041D\u0435\u043B\u044C\u0437\u044F \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0443\u0437\u0435\u043B select_icon=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A nothing=\u041D\u0438\u0447\u0435\u0433\u043E -noneData=\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445\! +noneData=\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445! all=\u0412\u0441\u0435 act=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 block=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 @@ -333,8 +333,8 @@ block_url=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u04 configuration=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F direction=\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 protocol=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B -oneway=\u041E\u0434\u043D\u043E\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 -twoway=\u0414\u0432\u0443\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 +oneway=\u041E\u0434\u043D\u043E\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0435 +twoway=\u0414\u0432\u0443\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0435 arbitrary=\u041B\u044E\u0431\u043E\u0439 basic_config=\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F block_config=\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 @@ -391,12 +391,12 @@ success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E password=\u041F\u0430\u0440\u043E\u043B\u044C nochange_blank=\u0415\u0441\u043B\u0438 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C, \u043E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0435\u0433\u043E \u043F\u0443\u0441\u0442\u044B\u043C. confirm_password=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u043F\u0430\u0440\u043E\u043B\u044F -manager_info=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440 \u0434\u043E\u043B\u0436\u0435\u043D \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u043B\u0438\u0447\u043D\u043E\u0441\u0442\u044C \u043A\u0430\u043A "\u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440", \u0438\u043D\u0430\u0447\u0435 \u044D\u0442\u043E \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u0430\u0443\u0434\u0438\u0442\u043E\u0440\u0430\! +manager_info=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440 \u0434\u043E\u043B\u0436\u0435\u043D \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u043B\u0438\u0447\u043D\u043E\u0441\u0442\u044C \u043A\u0430\u043A "\u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440", \u0438\u043D\u0430\u0447\u0435 \u044D\u0442\u043E \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u0430\u0443\u0434\u0438\u0442\u043E\u0440\u0430! name_existed=\u041B\u043E\u0433\u0438\u043D \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 parent_org=\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0430\u044F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F is_useable=\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E? address=\u0410\u0434\u0440\u0435\u0441 -nochange=\u041D\u0435\u0442 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\! +nochange=\u041D\u0435\u0442 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F! module_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043C\u043E\u0434\u0443\u043B\u044F dict_mark=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0441\u043B\u043E\u0432\u0430\u0440\u044F run_state=\u0421\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0440\u0430\u0431\u043E\u0442\u044B @@ -410,10 +410,10 @@ edit_record=\u0417\u0430\u043F\u0438\u0441\u044C \u0440\u0435\u0434\u0430\u043A\ edit_record_view=\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0437\u0430\u043F\u0438\u0441\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F dict_edit_info=\u0421\u043B\u043E\u0432\u0430\u0440\u044C \u043E\u0447\u0435\u043D\u044C \u0432\u0430\u0436\u0435\u043D \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435. \u0412\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C? dict_delete_info=\u0421\u043B\u043E\u0432\u0430\u0440\u044C \u043E\u0447\u0435\u043D\u044C \u0432\u0430\u0436\u0435\u043D \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435. \u0412\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C? -dict_saveitem_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\! -dict_saveitem_nullerror=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C, \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u043B\u044C\u0437\u044F \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C\u0438\! -submit_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435\u043C\! -form_validate=\u0424\u043E\u0440\u043C\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E\! +dict_saveitem_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442! +dict_saveitem_nullerror=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C, \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u043B\u044C\u0437\u044F \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C\u0438! +submit_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435\u043C! +form_validate=\u0424\u043E\u0440\u043C\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E! entry=\u0417\u0430\u043F\u0438\u0441\u044C add_entry=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0437\u0430\u043F\u0438\u0441\u044C click_add_entry=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0437\u0430\u043F\u0438\u0441\u0438 @@ -434,13 +434,13 @@ menu=\u041C\u0435\u043D\u044E parent_menu=\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u043C\u0435\u043D\u044E aim=\u0426\u0435\u043B\u044C click_menu_turn=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043C\u0435\u043D\u044E, \u0447\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043D\u0430 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 -link_window_info=\u0426\u0435\u043B\u0435\u0432\u043E\u0435 \u043E\u043A\u043D\u043E, \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u043A \u043F\u043E URL-\u0430\u0434\u0440\u0435\u0441\u0443, \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\: mainframe +link_window_info=\u0426\u0435\u043B\u0435\u0432\u043E\u0435 \u043E\u043A\u043D\u043E, \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u043A \u043F\u043E URL-\u0430\u0434\u0440\u0435\u0441\u0443, \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E: mainframe is_top_menu=\u041C\u0435\u043D\u044E \u0432\u0435\u0440\u0445\u043D\u0435\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F icon=\u0418\u043A\u043E\u043D\u043A\u0430 is_top_menu_info=\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u044D\u0442\u043E \u043C\u0435\u043D\u044E \u0432\u0435\u0440\u0445\u043D\u0438\u043C \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u043C \u043C\u0435\u043D\u044E sort_info=\u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438 \u043F\u043E \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u0430\u043D\u0438\u044E. is_show_sysmenu=\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u044D\u0442\u043E \u043C\u0435\u043D\u044E \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u043E\u043C \u043C\u0435\u043D\u044E -control_permission_info=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u0432 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043B\u0435\u0440\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440\: @requirespermissions ("\u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F") +control_permission_info=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u0432 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043B\u0435\u0440\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: @requirespermissions ("\u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F") role_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0440\u043E\u043B\u044F data_range=\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D \u0434\u0430\u043D\u043D\u044B\u0445 allot=\u0420\u0430\u0441\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C @@ -455,7 +455,7 @@ system_prompt=\u041F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0430 \u0441\u043 old_password=\u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C new_password=\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C sure_new_password=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C -cancel_clear=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\! +cancel_clear=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C! sure_clear=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u043E\u0447\u0438\u0441\u0442\u043A\u0438 role_unique=\u0418\u043C\u044F \u0440\u043E\u043B\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 role_error_info=\u0412\u0432\u043E\u0434 \u043D\u0435\u0432\u0435\u0440\u0435\u043D, \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0438\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435. @@ -484,13 +484,13 @@ av_content_ip_control=\u0410\u0443\u0434\u0438\u043E/\u0432\u0438\u0434\u0435\u0 av_picture_ip_control=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 IP av_content_url_control=\u0410\u0443\u0434\u0438\u043E \u0438 \u0432\u0438\u0434\u0435\u043E URL av_picture_url_control=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 URL -av_voip_control=null -av_voip_ip_control=null -av_voip_account_control=null +av_voip_control=VoIP +av_voip_ip_control=VoIP IP +av_voip_account_control=VoIP \u0430\u043A\u043A\u0430\u0443\u043D\u0442 av_sample_audio_control=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0430\u0443\u0434\u0438\u043E av_sample_video_control=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0432\u0438\u0434\u0435\u043E av_sample_picture_control=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F -av_sample_voip_control=null +av_sample_voip_control=\u0413\u043E\u043B\u043E\u0441\u043E\u0432\u043E\u0439 \u043E\u0431\u0440\u0430\u0437\u0435\u0446 VoIP av_sample_audio_porn_control=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u0430\u0443\u0434\u0438\u043E \u0441\u0446\u0435\u043D\u044B av_sample_video_porn_control=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u044D\u0440\u043E\u0442\u0438\u043A\u0438 av_sample_control=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 @@ -504,7 +504,7 @@ sample_file=\u041F\u0440\u0438\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430 sample_sign=\u041F\u0440\u0438\u043C\u0435\u0440 \u0437\u043D\u0430\u043A\u0430 off=\u0417\u0430\u043A\u0440\u044B\u0442\u044C on=\u041E\u0442\u043A\u0440\u044B\u0442\u044C -click_detail=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438", \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0430\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0430\u0445 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043C\u044B. \u0421\u043F\u0430\u0441\u0438\u0431\u043E\! +click_detail=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438", \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0430\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0430\u0445 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043C\u044B. \u0421\u043F\u0430\u0441\u0438\u0431\u043E! return_lastpage=\u0412\u0435\u0440\u043D\u0443\u0442\u044C \u043D\u0430 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 show_detail=\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438 hidden_detail=\u0421\u043A\u0440\u044B\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438 @@ -513,8 +513,8 @@ no_permission=\u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043 param_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0430\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C. request_service_failed=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 request_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 -av_voip_ip_title=null -av_voip_account_title=null +av_voip_ip_title=VoIP IP +av_voip_account_title=VoIP \u0430\u043A\u043A\u0430\u0443\u043D\u0442 account=\u0410\u043A\u043A\u0430\u0443\u043D\u0442 ip_pattern=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 IP port_pattern=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u043F\u043E\u0440\u0442\u0430 @@ -574,9 +574,9 @@ chooseFile=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B download=\u0428\u0430\u0431\u043B\u043E\u043D \u0441\u043A\u0430\u0447\u0430\u0442\u044C import_success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043B\u0438 import_error=\u0418\u043C\u043F\u043E\u0440\u0442 \u0441 \u043E\u0448\u0438\u0431\u043A\u043E\u0439 -import_failed=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043B\u0438\! -import_template_failed=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\! \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E\u0431 \u044D\u0442\u043E\u043C\: -the_line_of=\u0421\u0442\u0440\u043E\u043A\u0430 rownum +import_failed=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043B\u0438! +import_template_failed=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D! \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E\u0431 \u044D\u0442\u043E\u043C: +the_line_of=\u0421\u0442\u0440\u043E\u043A\u0430 rowNum val_protocol_id=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u0430 \u043F\u0443\u0441\u0442\u043E \u0438\u043B\u0438 \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 val_ip_type=\u0422\u0438\u043F IP \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C \u0438 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C 4 (ipv4) \u0438\u043B\u0438 6 (ipv6) val_src_ip=\u0424\u043E\u0440\u043C\u0430\u0442 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0433\u043E IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0435\u0432\u0435\u0440\u0435\u043D \u0438\u043B\u0438 \u043D\u0435\u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C \u0441 \u0442\u0438\u043F\u043E\u043C IP @@ -743,7 +743,7 @@ not_number=%s \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u04 av_sample_audio=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0430\u0443\u0434\u0438\u043E av_sample_video=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0432\u0438\u0434\u0435\u043E av_sample_picture=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F -av_sample_voip=null +av_sample_voip=\u0413\u043E\u043B\u043E\u0441\u043E\u0432\u043E\u0439 \u043E\u0431\u0440\u0430\u0437\u0435\u0446 VoIP av_sample_audio_porn=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u0430\u0443\u0434\u0438\u043E \u0441\u0446\u0435\u043D\u044B av_sample_video_porn=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u044D\u0440\u043E\u0442\u0438\u043A\u0438 WHITE_LIST_IP=IP @@ -824,10 +824,10 @@ userregion2=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u userregion3=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0440\u0435\u0433\u0438\u043E\u043D 3 userregion4=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0440\u0435\u0433\u0438\u043E\u043D 4 userregion5=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0440\u0435\u0433\u0438\u043E\u043D 5 -single_file_upload_size_error=\u0420\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430 %s \u0440\u0430\u0432\u0435\u043D %s, \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043E\u0434\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C %s\! -total_file_upload_size_error=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043C\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 - %s, \u043E\u0431\u0449\u0438\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u043D\u043E\u0433\u043E \u043A \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435 - %s\! -file_upload_type_error=%s \u0442\u0438\u043F \u0444\u0430\u0439\u043B\u0430 \u043D\u0435\u0432\u0435\u0440\u0435\u043D, \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0442\u0438\u043F \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043C\u044B\u0445 \u0444\u0430\u0439\u043B\u043E\u0432 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 %s\! -file_upload_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u0444\u0430\u0439\u043B\u0430\! +single_file_upload_size_error=\u0420\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430 %s \u0440\u0430\u0432\u0435\u043D %s, \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043E\u0434\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C %s! +total_file_upload_size_error=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043C\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 - %s, \u043E\u0431\u0449\u0438\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u043D\u043E\u0433\u043E \u043A \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435 - %s! +file_upload_type_error=%s \u0442\u0438\u043F \u0444\u0430\u0439\u043B\u0430 \u043D\u0435\u0432\u0435\u0440\u0435\u043D, \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0442\u0438\u043F \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043C\u044B\u0445 \u0444\u0430\u0439\u043B\u043E\u0432 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 %s! +file_upload_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u0444\u0430\u0439\u043B\u0430! audio_sample_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 \u0430\u0443\u0434\u0438\u043E audio_sample_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 \u0430\u0443\u0434\u0438\u043E video_sample_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 \u0432\u0438\u0434\u0435\u043E @@ -843,8 +843,8 @@ video_pornography_sample_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\ ip_white_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u0431\u0435\u043B\u043E\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430 IP-\u0430\u0434\u0440\u0435\u0441\u043E\u0432 ip_white_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0431\u0435\u043B\u043E\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430 IP-\u0430\u0434\u0440\u0435\u0441\u043E\u0432 ip_white_whitelist=\u0411\u0435\u043B\u044B\u0439 \u0441\u043F\u0438\u0441\u043E\u043A IP-\u0430\u0434\u0440\u0435\u0441\u0430 -av_voip_ip_reject=null -av_voip_ip_monit=null +av_voip_ip_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0430 VoIP +av_voip_ip_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0430 VoIP website_http_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 URL website_http_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 URL website_http_whitelist=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 Http \u0431\u0435\u043B\u043E\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430 @@ -937,16 +937,16 @@ dashboard=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u0442\u0 traffic_chart=\u041E\u0442\u0447\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043A\u0430 os_type=\u0422\u0438\u043F \u041E\u0421 browser_type=\u0422\u0438\u043F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 -traffic_protocol_chart=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B TOP10 -traffic_ipactive_chart=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP TOP10 +traffic_protocol_chart=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B \u0422\u041E\u041F 10 +traffic_ipactive_chart=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP \u0422\u041E\u041F 10 traffic_app_chart=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0422\u041E\u041F 10 -traffic_ua_list=UA TOP10 +traffic_ua_list=UA \u0422\u041E\u041F 10 traffic_ua_chart=UA ranking=\u0420\u0435\u0439\u0442\u0438\u043D\u0433 os=\u041E\u0421 browser=\u0411\u0440\u0430\u0443\u0437\u0435\u0440 trend=\u0422\u0435\u043D\u0434\u0435\u043D\u0446\u0438\u044F -traffic_website_list=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 TOP10 +traffic_website_list=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 \u0422\u041E\u041F 10 traffic_website_type_chart=\u0422\u0438\u043F \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430 website=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 ratelimit_limit=\u041F\u0440\u0435\u0434\u0435\u043B\u044C\u043D\u0430\u044F \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u044C \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u043E\u0442 0 \u0434\u043E 100 @@ -969,8 +969,8 @@ MM_PIC_IP=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 IP MM_PIC_URL=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 URL MM_AV_URL=AV URL INLINE_IP_CB=IP \u0441\u0431\u0440\u043E\u0441 -MM_VOIP_IP=null -MM_VOIP_ACCOUNT=null +MM_VOIP_IP=IP VoIP +MM_VOIP_ACCOUNT=\u0410\u043A\u043A\u0430\u0443\u043D\u0442 VoIP drop_ip=IP \u0441\u0431\u0440\u043E\u0441 loop_ip=\u0426\u0438\u043A\u043B IP drop_or_loop_ip=IP \u0441\u0431\u0440\u043E\u0441/\u043F\u0435\u0442\u043B\u044F @@ -988,10 +988,10 @@ tunnel_desc=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0438\u0434\u0435\ call_external_procedures_failed=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0432\u044B\u0437\u043E\u0432\u0435 \u0432\u043D\u0435\u0448\u043D\u0438\u0445 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430\u0445 is_hex=\u0428\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043D\u044B\u0439? is_case_insenstive=\u0427\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u0435\u043D \u043B\u0438 \u043A \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 -case_senstive=\u0427\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u0435\u043D \u043A \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 -case_insenstive=\u041D\u0435\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u0435\u043D \u043A \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 -hex=\u0428\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043D\u044B\u0439 -not_hex=\u041D\u0435 \u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043D\u044B\u0439 +case_senstive=\u0414\u0430 +case_insenstive=\u041D\u0435\u0442 +hex=\u0414\u0430 +not_hex=\u041D\u0435\u0442 p2p_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 P2P NTC_P2P_IP=IP NTC_P2P_HASH_BIN=\u041E\u0442\u043C\u0435\u0442\u043A\u0430 \u0444\u0430\u0439\u043B\u043E\u0432 @@ -1077,8 +1077,8 @@ MM_LOGO_DETECTION=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u MM_FACE_RECOGNIZATION=\u0420\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u043B\u0438\u0446 preset=\u0417\u0430\u0434\u0430\u0442\u044C ip_must_select=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F IP \u0434\u043E\u043B\u0436\u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u0442\u044C -av_voip_account_reject=null -av_voip_account_monit=null +av_voip_account_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0430\u043A\u043A\u0430\u0443\u043D\u0442\u043E\u0432 VoIP +av_voip_account_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u0430\u043A\u043A\u0430\u0443\u043D\u0442\u043E\u0432 VoIP p2p_proto=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B P2P p2p_file_id=\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0444\u0430\u0439\u043B\u0430 p2p_keyword=\u041A\u043B\u044E\u0447\u0435\u0432\u043E\u0435 \u0441\u043B\u043E\u0432\u0430 \u043F\u043E\u0438\u0441\u043A\u0430 Emule @@ -1104,9 +1104,9 @@ APP_SSL=\u041F\u0440\u0438\u0437\u043D\u0430\u043A\u0438 SSL \u043F\u0440\u0438\ APP_IP_RANGE=\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D IP \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F APP_DK=\u041F\u0440\u0438\u0437\u043D\u0430\u043A\u0438 DK \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F MM_SUBSCRIBE_ID=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u0434\u043F\u0438\u0441\u0447\u0438\u043A\u0430 -mail_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\: \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 SMTP, POP3, IMAP. -av_content_url_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\: \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 RTSP,RTMP,MMS. -protocol_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\: \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 SIP, RTCP, RTP. +mail_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 SMTP, POP3, IMAP. +av_content_url_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 RTSP,RTMP,MMS. +protocol_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 SIP, RTCP, RTP. snat_multiplex=\u041F\u0443\u043B \u0430\u0434\u0440\u0435\u0441\u043E\u0432 SNAT dnat_multiplex=\u041F\u0443\u043B \u0430\u0434\u0440\u0435\u0441\u043E\u0432 NAT asn_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 ASN @@ -1133,8 +1133,8 @@ message_type=\u0422\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438 as=\u041A\u0410\u041A route=\u041C\u0430\u0440\u0448\u0440\u0443\u0442 transport_layer_protocol=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B TLS -av_voip_monit=null -av_voip_reject=null +av_voip_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 VoIP +av_voip_reject=VoIP \u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 label_proto_source=\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u0430 label_behav_source=\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F label_app_source=\u0420\u0435\u0441\u0443\u0440\u0441 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 @@ -1146,7 +1146,7 @@ protocol_identify=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u MM_FILE_DIGEST=\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0444\u0430\u0439\u043B\u043E\u0432 NTC_ASN_IP=ASN NTC_STREAMING_MEDIA_URL=URL -NTC_VOIP_ACCOUNT=null +NTC_VOIP_ACCOUNT=\u0410\u043A\u043A\u0430\u0443\u043D\u0442 VoIP export_failed=\u041E\u0448\u0438\u0431\u043A\u0430 \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0430 user_manage=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0430\u043A\u043A\u0430\u0443\u043D\u0442\u043E\u043C \u043A\u043B\u0438\u0435\u043D\u0442\u0430 ip_reuse_policy_object=\u041E\u0431\u044A\u0435\u043A\u0442 \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F IP @@ -1154,7 +1154,7 @@ area_group_manage=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \ stream_media_protocol=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B \u043F\u043E\u0442\u043E\u043A\u043E\u0432\u043E\u0433\u043E \u043C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0430 new_link=\u041D\u043E\u0432\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430 active_link=\u0410\u043A\u0442\u0438\u0432\u043D\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430 -traffic_ipactive_hour_trend=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP TOP10 \u0442\u0435\u043D\u0434\u0435\u043D\u0446\u0438\u044F \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u043E\u0434\u043D\u043E\u0433\u043E \u0447\u0430\u0441\u0430 +traffic_ipactive_hour_trend=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP \u0422\u041E\u041F 10 \u0442\u0435\u043D\u0434\u0435\u043D\u0446\u0438\u044F \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u043E\u0434\u043D\u043E\u0433\u043E \u0447\u0430\u0441\u0430 traffic_ipactive_hour_max=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP TOP10 \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C \u0437\u0430 \u043E\u0434\u0438\u043D \u0447\u0430\u0441 ip_addr=IP area_id=\u0420\u0435\u0433\u0438\u043E\u043D @@ -1226,7 +1226,7 @@ cfg_operation_log=\u0416\u0443\u0440\u043D\u0430\u043B \u043E\u043F\u0435\u0440\ function_name=\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043C\u043E\u0434\u0443\u043B\u044C config_service_statistics=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 ruleLimitTip=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u044D\u0444\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043F\u0440\u0430\u0432\u0438\u043B \u0434\u043E\u0441\u0442\u0438\u0433\u043B\u043E \u043F\u0440\u0435\u0434\u0435\u043B\u0430 (% s). -av_protocol_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\: \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 RTSP, RTMP. +av_protocol_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 RTSP, RTMP. ip_range_in_the_same=\u041D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u0432 \u043E\u0434\u043D\u043E\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u043E\u0432 \u0434\u043E\u043B\u0436\u043D\u044B \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u044C\u0441\u044F \u0432 \u043E\u0434\u043D\u043E\u0439 \u043F\u043E\u0434\u0441\u0435\u0442\u0438 log_to_url=\u0414\u043E HTTP URL source_compile_id=\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 @@ -1255,7 +1255,7 @@ ip_behavior_data=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 IP p2p_eMule_keywords=\u041A\u043B\u044E\u0447\u0435\u0432\u044B\u0435 \u0441\u043B\u043E\u0432\u0430 \u043F\u043E\u0438\u0441\u043A\u0430 emule p2p_hash_keywords=\u041A\u043B\u044E\u0447\u0435\u0432\u044B\u0435 \u0441\u043B\u043E\u0432\u0430 \u0434\u043B\u044F \u043C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0438 \u0444\u0430\u0439\u043B\u043E\u0432 not_valid_domain=% s \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u043C \u0434\u043E\u043C\u0435\u043D\u043E\u043C -cert_not_match_domain=\u0414\u0430\u043D\u043D\u044B\u0435 \u0434\u043E\u043C\u0435\u043D\u0430 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 \u043D\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0442\! +cert_not_match_domain=\u0414\u0430\u043D\u043D\u044B\u0435 \u0434\u043E\u043C\u0435\u043D\u0430 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 \u043D\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0442! certificate_file_error=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 \u0444\u0430\u0439\u043B\u0430 PXY_OBJ_TRUSTED_CA_CERT=\u0414\u043E\u0432\u0435\u0440\u0435\u043D\u043D\u044B\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442 crl_file_error=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0444\u0430\u0439\u043B\u0430 CRL @@ -1263,7 +1263,7 @@ crl_issuer_error=\u0418\u0437\u0434\u0430\u0442\u0435\u043B\u044C \u0444\u0430\u cert_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 add_crl_file=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u0430\u0439\u043B CRL import_crl=\u0418\u043C\u043F\u043E\u0440\u0442 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 CRL -collect_voip=null +collect_voip=\u0421\u0431\u043E\u0440 VoIP rtp_d_ip=RTP \u0441\u0435\u0440\u0432\u0435\u0440 IP-\u0430\u0434\u0440\u0435\u0441 rtp_s_ip=IP-\u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 RTP rtp_d_port=\u041F\u043E\u0440\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 RTP @@ -1312,27 +1312,35 @@ dns_sub=\u0411\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C action_cache=\u041A\u044D\u0448 action_cache_whitelist=\u0411\u0430\u0439\u043F\u0430\u0441 \u043A\u044D\u0448\u0430 crl_issuer_null=\u042D\u043C\u0438\u0442\u0435\u043D\u0442 \u0432 CRL-\u0444\u0430\u0439\u043B\u0435 \u043F\u0443\u0441\u0442\u044B\u043C. -block_by_app_server_ip=Block by application server ip -certificate_file=Certificate File -crl_file=Crl File -vpn_ip=VPN Server IP -num_logins=Num Logins -last_login=Last Login -transfer_packets=Transfer Packets -transfer_bytes=Transfer Bytes -user_info=User Info -user_list=User List -equal_password=Password Inconsistent! -outgoing_unicast_packets=Upload Packets -outgoing_unicast_total_size=Upload Byte -incoming_unicast_packets=Download Packets -incoming_unicast_total_size=Download Byte -address_pool=Address Pool Name -ip_total=IP Total -available_ip_total=Available IP Total -address_pool_id=Address Pool ID +address_pool_ip_configuration=\u041F\u0443\u043B \u0430\u0434\u0440\u0435\u0441\u043E\u0432 IP \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 +config_sync=\u0421\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0430\u0446\u0438\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 +voip_protocol=VoIP +voip_sample_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 VOIP \u0430\u0443\u0434\u0438\u043E +info_failed=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0438\u043D\u043E\u0444\u0440\u043C\u0430\u0446\u0438\u0438 +user_list=\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +num_logins=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0432\u0445\u043E\u0434\u043E\u0432 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 +address_pool_id=ID \u043F\u0443\u043B \u0430\u0434\u0440\u0435\u0441\u043E\u0432 +outgoing_unicast_total_size=\u0417\u0430\u043A\u0430\u0447\u0430\u0442\u044C \u0431\u0430\u0439\u0442\u044B +voip_sample_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 VOIP \u0430\u0443\u0434\u0438\u043E +available_ip=\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0439 IP +block_by_app_server_ip=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043E\u0432 IP \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 +certificate_file=\u0424\u0430\u0439\u043B \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 +address_pool=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043F\u0443\u043B\u0430 \u0430\u0434\u0440\u0435\u0441\u043E\u0432 +transfer_bytes=\u041F\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0431\u0430\u0439\u0442\u043E\u0432 +incoming_unicast_packets=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043F\u0430\u043A\u0435\u0442\u044B +outgoing_unicast_packets=\u0417\u0430\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u0430\u043A\u0435\u0442\u044B +ip_total=\u0418\u0442\u043E\u0433\u043E IP +last_login=\u0412\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0432\u0445\u043E\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 +vpn_ip=VPN \u0441\u0435\u0440\u0432\u0435\u0440 IP log_to_cfg=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F +user_info=\u0418\u043D\u0444\u043E. \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F +available_ip_total=\u0418\u0442\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E IP address_pool_is_used=Address pool is used and cannot perform this operation! -available_ip=Available IP -config_sync=Configuration Synchronization -address_pool_ip_configuration=Address Pool IP Configuration \ No newline at end of file +voip_recv_time=\u0412\u0440\u0435\u043C\u044F \u043F\u0440\u0438\u0435\u043C\u0430 VoIP +cgi_service_failed=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441 CGI-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 +transfer_packets=\u041F\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 +incoming_unicast_total_size=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0431\u0430\u0439\u0442 +crl_file=\u0424\u0430\u0439\u043B Crl +equal_password=\u041D\u0435\u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043F\u0430\u0440\u043E\u043B\u0438! +cgi_failed=CGL \u0441\u0435\u0440\u0432\u0435\u0440 +ip_check=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441 diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties index dfc54a2f0..9fdbf5905 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -931,7 +931,7 @@ ip_multiplex_policy=IP\u590D\u7528\u7B56\u7565 ip_multiplex_pool_config=IP\u590D\u7528\u5730\u5740\u6C60 letter=\u6765\u51FD show_more=\u5C55\u793A\u66F4\u591A -dashboard=\u7EDF\u8BA1\u56FE\u8868 +dashboard=\u6D41\u91CF\u7EDF\u8BA1 traffic_chart=\u6D41\u91CF\u7EDF\u8BA1 os_type=\u64CD\u4F5C\u7CFB\u7EDF\u5206\u7C7B browser_type=\u6D4F\u89C8\u5668\u5206\u7C7B diff --git a/src/main/webapp/WEB-INF/tags/sys/delRow.tag b/src/main/webapp/WEB-INF/tags/sys/delRow.tag index a2574536f..1b9d2e85a 100644 --- a/src/main/webapp/WEB-INF/tags/sys/delRow.tag +++ b/src/main/webapp/WEB-INF/tags/sys/delRow.tag @@ -120,13 +120,23 @@ var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox"); if(validateAllNoAudit(checkboxes)){ top.$.jBox.tip("", ""); return; - }else{ + }else{ doAll(checkboxes,url); - } - }else{ - top.$.jBox.tip("", ""); - return; } + }else{ + /* 批量下发待测试 + if(url.indexOf("functionId") > -1){ + top.$.jBox.confirm("","",function(v,h,f){ + if(v=="ok"){ + $("#searchForm").attr("action",url); + page(); + } + }); + }else{ */ + top.$.jBox.tip("", ""); + return; + /* } */ + } } //未通过 function noPassOpt(url){ @@ -184,8 +194,18 @@ function cancelPassOpt(url){ } }else{ - top.$.jBox.tip("", ""); - return; + /* 批量下发待测试 + if(url.indexOf("functionId") > -1){ + top.$.jBox.confirm("","",function(v,h,f){ + if(v=="ok"){ + $("#searchForm").attr("action",url); + page(); + } + }); + }else{ */ + top.$.jBox.tip("", ""); + return; + /* } */ } } function doAll(checkboxes,url){ diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appDomainCfgForm.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appDomainCfgForm.jsp index c5a1a8820..456ccd0e3 100644 --- a/src/main/webapp/WEB-INF/views/cfg/app/appDomainCfgForm.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/app/appDomainCfgForm.jsp @@ -133,10 +133,10 @@ $(function(){
+ name="cfgKeywords" + value="${_cfg.cfgKeywords}">
-
+
<%--
*