diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index 5c5539cc5..9c96d4a18 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -120,6 +120,7 @@ import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.StringCfg; import com.nis.domain.maat.ToMaatBean; import com.nis.domain.report.NtcPzReport; +import com.nis.domain.specific.ConfigGroupInfo; import com.nis.domain.specific.SpecificServiceCfg; import com.nis.exceptions.MaatConvertException; //import com.nis.util.AsnCacheUtils; @@ -2696,6 +2697,7 @@ public class BaseController { * @return */ public void auditAll(Page page,Integer auditType,Object entity)throws Exception { + long start=System.currentTimeMillis(); page.setOrderBy(""); page.setPageSize(Constants.MAAT_JSON_SEND_SIZE); page.setPageNo(1); @@ -2721,6 +2723,7 @@ public class BaseController { AppTopicDomainCfg searchAppTopicCfg=new AppTopicDomainCfg(); AppFeatureIndex searchAppFeatureIndex=new AppFeatureIndex(); AppSslCertCfg searchAppSslCertCfg=new AppSslCertCfg(); + AsnIpCfg searchAsnIpCfg=new AsnIpCfg(); if(entity != null && (entity instanceof CfgIndexInfo)) { BeanUtils.copyProperties(entity, auditBatchCfg); BeanUtils.copyProperties(entity, searchCfg); @@ -2794,6 +2797,10 @@ public class BaseController { BeanUtils.copyProperties(entity, auditBatchCfg); BeanUtils.copyProperties(entity, searchAppSslCertCfg); } + if(entity != null && (entity instanceof AsnIpCfg)) { + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchAsnIpCfg); + } @@ -2835,6 +2842,8 @@ public class BaseController { searchAppFeatureIndex.setIsAudit(0); searchAppSslCertCfg.setIsValid(0); searchAppSslCertCfg.setIsAudit(0); + searchAsnIpCfg.setIsValid(0); + searchAsnIpCfg.setIsAudit(0); auditBatchCfg.setIsAudit(1); auditBatchCfg.setIsValid(1); @@ -2878,6 +2887,8 @@ public class BaseController { searchAppFeatureIndex.setIsAudit(1); searchAppSslCertCfg.setIsValid(1); searchAppSslCertCfg.setIsAudit(1); + searchAsnIpCfg.setIsValid(1); + searchAsnIpCfg.setIsAudit(1); auditBatchCfg.setIsAudit(3); auditBatchCfg.setIsValid(0); @@ -3080,10 +3091,89 @@ public class BaseController { } } }else{ - //1028 app_ip_cfg - //TODO 批量审核通过APP IP需要处理的问题:一批中存在一个APP 所有IP均未下发过的问题?待解决 - //批量下发时,未下发过的app需要下发正常配置;已下发过的app需要下发ip复用配置(为保证事物,分两种方式下发) - if(auditBatchCfg.getServiceId().equals(1028)) { + //400 ASN IP + if(auditBatchCfg.getServiceId().equals(400)) { + //所有已下发的ASN IP组 + boolean hasData = true; + while(hasData){ + //已下发的ASN IP + List list=asnIpCfgService.findPage(page, searchAsnIpCfg).getList(); + + if(!StringUtil.isEmpty(list)){ + if(auditBatchCfg.getIsValid().equals(1)) { + }else { + Map asnIpMap=new HashMap(); + if(!StringUtil.isEmpty(list)) { + for (AsnIpCfg obj : list) { + BaseCfg baseCfg=(BaseCfg)obj; + if(!StringUtil.isEmpty(asnIpMap.get(obj.getAsnIpGroup()))) { + asnIpMap.get(obj.getAsnIpGroup()).add(baseCfg); + asnIpMap.put(obj.getAsnIpGroup(), asnIpMap.get(obj.getAsnIpGroup())); + }else { + List newList=new ArrayList<>(); + newList.add(baseCfg); + asnIpMap.put(obj.getAsnIpGroup(),newList); + } + } + } + hasData=commonPolicyService.auditReuseConfigData(page, auditBatchCfg,asnIpMap,hasData); + } + if(hasData) { + page.setPageNo(page.getNext()); + } + }else{ + hasData = false; + } + } + }else if(auditBatchCfg.getServiceId().equals(1028)) { + //所有已下发的app IP组 + ConfigGroupInfo groupInfo=new ConfigGroupInfo(); + groupInfo.setIsIssued(1); + groupInfo.setGroupType(1);//1:app ip + List groupInfos=configGroupInfoService.findAllList(groupInfo); + Map groupMap=new HashMap<>(); + for (ConfigGroupInfo configGroupInfo : groupInfos) { + groupMap.put(configGroupInfo.getCompileId(), configGroupInfo.getGroupId()); + } + + boolean hasData = true; + while(hasData){ + //已下发的APP IP + List list=appCfgService.findAppIpList(page, searchAppIpCfg).getList(); + + if(!StringUtil.isEmpty(list)){ + if(auditBatchCfg.getIsValid().equals(1)) { + //TODO 批量审核通过APP IP需要处理的问题:一批中存在一个APP 所有IP均未下发过的问题?待解决 + //批量下发时,未下发过的app需要下发正常配置;已下发过的app需要下发ip复用配置(为保证事物,分两种方式下发) + /*hasData=configSynchronizationService.auditDdosMaatData(cfgList,userRegionList, + page,auditBatchCfg,list,hasData,true);*/ + }else { + Map appIpMap=new HashMap(); + if(!StringUtil.isEmpty(list)) { + for (AppIpCfg obj : list) { + BaseCfg baseCfg=(BaseCfg)obj; + if(!StringUtil.isEmpty(appIpMap.get((groupMap.get(obj.getCompileId()))))) { + appIpMap.get(groupMap.get(obj.getCompileId())).add(baseCfg); + appIpMap.put(groupMap.get(obj.getCompileId()), appIpMap.get(groupMap.get(obj.getCompileId()))); + }else { + List newList=new ArrayList<>(); + newList.add(baseCfg); + appIpMap.put(groupMap.get(obj.getCompileId()),newList); + } + } + } + hasData=commonPolicyService.auditReuseConfigData(page, auditBatchCfg,appIpMap,hasData); + } + if(hasData) { + page.setPageNo(page.getNext()); + } + }else{ + hasData = false; + } + } + + + /*if(true) { page.setOrderBy(""); page.setPageSize(Constants.MAAT_JSON_SEND_SIZE); @@ -3249,6 +3339,8 @@ public class BaseController { BeanUtils.copyProperties(base, entity); } } + long end=System.currentTimeMillis(); + logger.info("配置批量生效/失效耗时:"+(end-start)); } diff --git a/src/main/java/com/nis/web/controller/basics/AsnIpController.java b/src/main/java/com/nis/web/controller/basics/AsnIpController.java index ae36a28f2..d37717ce7 100644 --- a/src/main/java/com/nis/web/controller/basics/AsnIpController.java +++ b/src/main/java/com/nis/web/controller/basics/AsnIpController.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.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; @@ -135,10 +136,10 @@ public class AsnIpController extends BaseController{ } } asnIpCfgService.auditIpBatch(asnIpMap,isValid); - }/*else { + }else { //条件下所有配置审核 - Page searchPage=new Page(request,response,"a"); - Page auditPage=new Page(request,response,"a"); + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); BeanUtils.copyProperties(searchPage, auditPage); try { auditAll(auditPage,isValid , cfg); @@ -154,7 +155,7 @@ public class AsnIpController extends BaseController{ } return list(model, request, response, cfg); - }*/ + } return "redirect:" + adminPath +"/basics/asn/list?functionId="+cfg.getFunctionId(); } @RequestMapping(value = {"/delete"}) diff --git a/src/main/java/com/nis/web/dao/configuration/CommonPolicyDao.xml b/src/main/java/com/nis/web/dao/configuration/CommonPolicyDao.xml index ac7350980..eb9df03a8 100644 --- a/src/main/java/com/nis/web/dao/configuration/CommonPolicyDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/CommonPolicyDao.xml @@ -796,7 +796,7 @@ - and asn_ip_group in + and region_id in #{compileId} diff --git a/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java b/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java index 6d78e260f..563a191ce 100644 --- a/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java +++ b/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java @@ -8,6 +8,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.Map.Entry; import net.sf.json.JSONObject; @@ -18,6 +19,7 @@ import org.springframework.stereotype.Service; import com.google.common.collect.Lists; import com.nis.domain.Page; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; import com.nis.domain.configuration.AppPolicyCfg; import com.nis.domain.configuration.AreaIpCfg; @@ -40,6 +42,8 @@ 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.GroupReuseAddBean; +import com.nis.domain.maat.GroupReuseCfg; import com.nis.domain.maat.MaatCfg; import com.nis.domain.maat.MaatCfg.DigestCfg; import com.nis.domain.maat.MaatCfg.GroupCfg; @@ -88,6 +92,8 @@ public class CommonPolicyService extends CrudService list, boolean hasData)throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{ + long start=System.currentTimeMillis(); + long end=System.currentTimeMillis(); ToMaatBean maatBean; MaatCfg maatCfg; List configCompileList; @@ -160,11 +166,15 @@ public class CommonPolicyService extends CrudService getPxyObjTrustedCrlCfgListByCertId(List certIds){ return synchronizationDao.getPxyObjTrustedCrlCfgListByCertId(certIds); } + /** + * IP复用配置取消 + * @param cfgList + * @param page + * @param auditMap + * @param hasData + * @return + */ + public boolean auditReuseConfigData( + Page page, + BaseCfg entity, + Map auditMap, + boolean hasData){ + long start=System.currentTimeMillis(); + long end=System.currentTimeMillis(); + long totolSize=0; + + if(page.isLastPage()){ + hasData = false; + } + List regionIds = new ArrayList(); + for(Entry e:auditMap.entrySet()) { + List list=e.getValue(); + for (BaseCfg baseCfg : list) { + if("asn_ip_cfg".equals(entity.getTableName())) { + regionIds.add(baseCfg.getRegionId()); + }else { + regionIds.add(Integer.parseInt(baseCfg.getUserRegion1())); + } + + } + totolSize=totolSize+list.size(); + + } + start=System.currentTimeMillis(); + logger.info("APP IP配置批量失效-数据库状态变更:start()"); + commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,regionIds,null); + end=System.currentTimeMillis(); + logger.info("APP IP配置批量失效-数据库状态变更:end("+(end-start)+")"); + + //已经下发过的,调用分组复用配置删除接口 + if(!auditMap.isEmpty()) { + GroupReuseAddBean maatBean = new GroupReuseAddBean(); + List groupReuseList=new ArrayList<>(); + GroupReuseCfg groupReuseCfg=new GroupReuseCfg(); + List ipRegionList=new ArrayList<>(); + for (Integer groupId : auditMap.keySet()) { + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(auditMap.get(groupId),Constants.VALID_NO,groupId)); + } + groupReuseCfg.setIpRegionList(ipRegionList); + groupReuseCfg.setStrRegionList(null); + groupReuseCfg.setNumRegionList(null); + groupReuseList.add(groupReuseCfg); + maatBean.setGroupReuseCfgList(groupReuseList); + maatBean.setAuditTime(new Date()); + maatBean.setCreatorName(UserUtils.getUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.UPDATE_ACTION); + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + logger.info("app协议IP域配置批量取消("+page.getPageNo()+"次):"+ipRegionList.size()); + //logger.info("app协议IP域配置批量取消:"+json); + //调用服务接口下发配置 + logger.info("APP IP配置批量失效-下发:start()"); + start=System.currentTimeMillis(); + ToMaatResult result = ConfigServiceUtil.put(json,3); + end=System.currentTimeMillis(); + logger.info("app协议IP域配置批量取消响应信息:"+result.getMsg()); + logger.info("APP IP配置批量失效-下发:end("+(end-start)+")"); + } + return hasData; + } /** * 回调类配置下发 * @param className diff --git a/src/main/resources/service/service_config.xml b/src/main/resources/service/service_config.xml index b3efb2dd1..00f01520f 100644 --- a/src/main/resources/service/service_config.xml +++ b/src/main/resources/service/service_config.xml @@ -1,9 +1,11 @@ + + @@ -31,15 +33,14 @@ --> + - - - + --> @@ -187,7 +188,12 @@ - + + + + + + @@ -198,7 +204,7 @@ - + @@ -343,30 +355,15 @@ --> - - - - - - - - - - - - - - - + + @@ -374,7 +371,21 @@ - + + + + + + + + + + + + + + + @@ -394,6 +405,10 @@ + + + + @@ -404,6 +419,10 @@ + + + + diff --git a/src/main/webapp/WEB-INF/tags/sys/delRow.tag b/src/main/webapp/WEB-INF/tags/sys/delRow.tag index 931a867c2..4619fddda 100644 --- a/src/main/webapp/WEB-INF/tags/sys/delRow.tag +++ b/src/main/webapp/WEB-INF/tags/sys/delRow.tag @@ -290,10 +290,18 @@ function cancelPassOpt(url){ || url.indexOf("functionId=211&") > -1 //whitelist || url.indexOf("functionId=213&") > -1 //Cache || url.indexOf("functionId=560&") > -1 //Focused Website + || url.indexOf("functionId=405&") > -1 //APP IP + || url.indexOf("functionId=403&") > -1 //APP DOMAIN + //|| url.indexOf("functionId=520&") > -1 //APP SSL CERT + || url.indexOf("functionId=563&") > -1 //APP Payload + || url.indexOf("functionId=565&") > -1 //APP HTTP + || url.indexOf("functionId=566&") > -1 //APP SSL + || url.indexOf("functionId=564&") > -1 //APP DNS || url.indexOf("functionId=400&") > -1 //DNS Response Profiles || url.indexOf("functionId=401&") > -1 //Spoofing IP || url.indexOf("functionId=570&") > -1 //Key Ring || url.indexOf("functionId=571&") > -1 //Trusted Certificate + || url.indexOf("functionId=600&") > -1 //Trusted Certificate ){ top.$.jBox.confirm("","",function(v,h,f){ if(v=="ok"){ diff --git a/src/main/webapp/WEB-INF/views/basics/asnGroupForm.jsp b/src/main/webapp/WEB-INF/views/basics/asnGroupForm.jsp index add96f316..c42045262 100644 --- a/src/main/webapp/WEB-INF/views/basics/asnGroupForm.jsp +++ b/src/main/webapp/WEB-INF/views/basics/asnGroupForm.jsp @@ -80,7 +80,7 @@ $(function(){
- +
diff --git a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/jquery.validate.method.js b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/jquery.validate.method.js index fb8e08d7b..908f74bb3 100644 --- a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/jquery.validate.method.js +++ b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/jquery.validate.method.js @@ -962,7 +962,9 @@ jQuery.validator.addMethod("asnNoUnique",function(value, element) { url: url, data:{"id":id,"asnId":value}, success:function(data){ - result = data; + if(data != null && data !='' && data != 'undefined'){ + result=false; + } } }); return result;