diff --git a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java index fb8bc3f73..b6cc50d21 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java @@ -1,6 +1,7 @@ package com.nis.util.excel.thread; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; @@ -24,6 +25,7 @@ import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.DnsResStrategy; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.template.IpRateLimitTemplate; +import com.nis.domain.specific.ConfigGroupInfo; //import com.nis.util.AsnCacheUtils; import com.nis.util.Constants; import com.nis.util.DictUtils; @@ -36,8 +38,15 @@ public class CheckIpFormatThread implements Callable{ // private DnsResStrategyService dnsResStrategyService; private FunctionServiceDict serviceDict; private FunctionRegionDict regionDict; - private List> asnNoMaps; - private Map asnGroupInfos; + //【0】 新的asn group info + //【1】 旧的asn group info + //【2】 所有的asn group info + //【3】 所有已审核通过的asn group info + private List> asnNoMaps; + //组织之间的关系 + //【0】 新的组织信息 + //【1】 旧的组织信息 + private List> asnOrgList; // private DnsResStrategyDao dnsResStrategyDao; public CheckIpFormatThread(FunctionServiceDict serviceDict,FunctionRegionDict regionDict,Properties prop,BlockingQueue srcQueue,BlockingQueue destQueue) { this.serviceDict=serviceDict; @@ -51,6 +60,7 @@ public class CheckIpFormatThread implements Callable{ public String call() throws Exception { List dataList=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); StringBuffer msg=new StringBuffer(); + boolean error = false; while(!srcQueue.isEmpty()) { int size=srcQueue.drainTo(dataList,Constants.MAAT_JSON_SEND_SIZE); if(regionDict.getRegionType().intValue()==1) { @@ -63,10 +73,15 @@ public class CheckIpFormatThread implements Callable{ // TODO: handle exception //msg.append(e.getMessage()); //break; + error = true; } } dataList.clear(); } + if(error) { + msg.append("validate_error"); + } + return msg.toString(); } public List checkIpCfg(StringBuffer msg,List> asnNos, List list) @@ -252,6 +267,7 @@ public class CheckIpFormatThread implements Callable{ } } if (regionDict.getFunctionId().equals(600)) {//asn + //组织的非空和长度校验 String organization=baseIpCfg.getOrganization(); if(StringUtils.isBlank(organization)) { errInfo.append( @@ -268,19 +284,16 @@ public class CheckIpFormatThread implements Callable{ } } + //国家的非空和长度校验 String country=baseIpCfg.getCountry(); - if(StringUtils.isBlank(country)) { - errInfo.append( - String.format(prop.getProperty("can_not_null"), prop.getProperty("country")) - + ";"); + + if(!StringUtils.isBlank(country) && country.length() > 512){ + errInfo.append(prop.getProperty("country_code")+prop.getProperty("length_error")+" "+String.format(prop.getProperty("max_length")+":512") + ";"); }else { - if(country.length() > 512){ - errInfo.append(prop.getProperty("country_code")+prop.getProperty("length_error")+" "+String.format(prop.getProperty("max_length")+":512") + ";"); - }else { - baseIpCfg.setCountry(country.trim().toUpperCase()); - } + baseIpCfg.setCountry(country.trim().toUpperCase()); } - String detail=baseIpCfg.getDetail(); + //详情可以为空 + /*String detail=baseIpCfg.getDetail(); if(StringUtils.isBlank(detail)) { errInfo.append( String.format(prop.getProperty("can_not_null"), prop.getProperty("detail")) @@ -291,8 +304,8 @@ public class CheckIpFormatThread implements Callable{ }else { baseIpCfg.setDetail(detail.trim()); } - } - //asn id + }*/ + //asn id 校验 String userRegion1 = baseIpCfg.getUserRegion1(); if(StringUtils.isBlank(userRegion1)) { errInfo.append( @@ -306,55 +319,74 @@ public class CheckIpFormatThread implements Callable{ String.format(prop.getProperty("must_between"),"1","4294967295" ) + ";"); }else { -// ConfigGroupInfo configGroupInfo=asnIpCfgService.getConfigGroupInfoByAsnNo(asnNo); if(asnNos!=null) { - AsnGroupInfo configGroupInfo=asnGroupInfos==null?null:asnGroupInfos.get(asnNo);//从缓存中取 - //缓存中没有 - if(configGroupInfo==null) { + //数据库中是否已经存在 + AsnGroupInfo asnGroupInfo=asnNos.get(1)==null?null:asnNos.get(1).get(asnNo); + if(asnGroupInfo==null) { synchronized (Constants.IMPORT_LOCK) { if(StringUtils.isNotBlank(baseIpCfg.getOrganization())&&StringUtils.isNotBlank(baseIpCfg.getCountry())) { AsnGroupInfo groupInfo=new AsnGroupInfo(); groupInfo.setOrganization(baseIpCfg.getOrganization().trim().toUpperCase()); - groupInfo.setCountry(baseIpCfg.getCountry().trim().toUpperCase()); + groupInfo.setCountry(baseIpCfg.getCountry()); groupInfo.setDetail(baseIpCfg.getDetail().trim()); + groupInfo.setIsUsed(0); groupInfo.setIsValid(0); groupInfo.setAsnId(asnNo); - if(asnNos.get(0).containsKey(asnNo)) { - if(!asnNos.get(0).get(asnNo).getOrganization().equals(baseIpCfg.getOrganization().trim().toUpperCase())) { + if(asnNos.get(2).containsKey(asnNo)) { + if(!asnNos.get(2).get(asnNo).getOrganization().equals(baseIpCfg.getOrganization().trim().toUpperCase())) { //一个asn号不能被两个组织拥有 - logger.error("ASN "+asnNo+" Found two Organization "+asnNos.get(0).get(asnNo).getOrganization()+" "+baseIpCfg.getOrganization().trim().toUpperCase()); - errInfo.append(asnNos.get(0).get(asnNo).getOrganization()+" "+baseIpCfg.getOrganization().trim().toUpperCase()+" "+prop.getProperty("asn_no")+" "+asnNo+" "+prop.getProperty("repeat") + logger.error("ASN "+asnNo+" Found two Organization "+asnNos.get(2).get(asnNo).getOrganization()+" "+baseIpCfg.getOrganization().trim().toUpperCase()); + errInfo.append(asnNos.get(2).get(asnNo).getOrganization()+" "+baseIpCfg.getOrganization().trim().toUpperCase()+" "+prop.getProperty("asn_no")+" "+asnNo+" "+prop.getProperty("repeat") +";"); }else { asnNos.get(0).put(asnNo,groupInfo); + asnNos.get(2).put(asnNo,groupInfo); + if(!asnOrgList.get(0).containsKey(groupInfo.getOrganization()) && !asnOrgList.get(1).containsKey(groupInfo.getOrganization())){ + ConfigGroupInfo configGroupInfo=new ConfigGroupInfo(); + configGroupInfo.setGroupName(groupInfo.getOrganization()); + asnOrgList.get(0).put(groupInfo.getOrganization(), configGroupInfo); + } } }else { asnNos.get(0).put(asnNo,groupInfo); + asnNos.get(2).put(asnNo,groupInfo); + if(!asnOrgList.get(0).containsKey(groupInfo.getOrganization()) && !asnOrgList.get(1).containsKey(groupInfo.getOrganization())){ + ConfigGroupInfo configGroupInfo=new ConfigGroupInfo(); + configGroupInfo.setGroupName(groupInfo.getOrganization()); + asnOrgList.get(0).put(groupInfo.getOrganization(), configGroupInfo); + } } }else { if(StringUtils.isNotBlank(baseIpCfg.getOrganization())) { logger.error("ASN "+asnNo+" Organization is Null"); } - if(StringUtils.isNotBlank(baseIpCfg.getCountry())) { + /*if(StringUtils.isNotBlank(baseIpCfg.getCountry())) { logger.error("ASN "+asnNo+" Country is Null"); - } + }*/ } } }else { - if(!configGroupInfo.getOrganization().equalsIgnoreCase(baseIpCfg.getOrganization().trim())) { + if(!asnGroupInfo.getOrganization().equalsIgnoreCase(baseIpCfg.getOrganization().trim())) { errInfo.append(prop.getProperty("organization","Organization")+" "+prop.getProperty("mismatch","Mismatch")); } - if(!configGroupInfo.getCountry().equalsIgnoreCase(baseIpCfg.getCountry().trim())) { + /*if(!asnGroupInfo.getCountry().equalsIgnoreCase(baseIpCfg.getCountry().trim())) { errInfo.append(prop.getProperty("country","Country")+" "+prop.getProperty("mismatch","Mismatch")); } - if(!configGroupInfo.getDetail().equalsIgnoreCase(baseIpCfg.getDetail().trim())) { + if(!asnGroupInfo.getDetail().equalsIgnoreCase(baseIpCfg.getDetail().trim())) { errInfo.append(prop.getProperty("detail","Detail")+" "+prop.getProperty("mismatch","Mismatch")); - } + }*/ if(StringUtils.isBlank(errInfo.toString())) { - asnNos.get(1).put(asnNo,configGroupInfo); + //已下发过的asn no + if(asnGroupInfo.getIsValid() ==1){ + asnNos.get(3).put(asnNo,asnGroupInfo); + } + asnNos.get(1).put(asnNo,asnGroupInfo); + asnGroupInfo.setIsValid(0); + asnGroupInfo.setIssuedIPs(0l); + asnNos.get(2).put(asnNo,asnGroupInfo); } } } @@ -1384,11 +1416,11 @@ public class CheckIpFormatThread implements Callable{ public void setAsnNoMaps(List> asnNoMaps) { this.asnNoMaps = asnNoMaps; } - public Map getAsnGroupInfos() { - return asnGroupInfos; + public List> getAsnOrgList() { + return asnOrgList; } - public void setAsnGroupInfos(Map asnGroupInfos) { - this.asnGroupInfos = asnGroupInfos; + public void setAsnOrgList(List> asnOrgList) { + this.asnOrgList = asnOrgList; } } diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index f0ab92c1c..a103b307a 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; @@ -957,16 +958,18 @@ public class BaseController { * @throws InterruptedException * @throws ExecutionException */ - public BlockingQueue checkIpCfgMulity(StringBuffer _msg,FunctionServiceDict serviceDict, FunctionRegionDict regionDict,List> asnNos,Map asnGroupInfos, BlockingQueue list) throws ServiceException, InterruptedException, ExecutionException{ + public BlockingQueue checkIpCfgMulity(StringBuffer _msg,FunctionServiceDict serviceDict, FunctionRegionDict regionDict,List> asnNos,List> asnOrgList, BlockingQueue list) throws ServiceException, InterruptedException, ExecutionException{ logger.warn("start checkIpCfgMulity ,size "+list.size()); long start=System.currentTimeMillis(); BlockingQueue queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); + + Properties props=this.getMsgProp(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { + if(msg.equals("validate_error")) { + valideteError=true; + }else if(msg.endsWith("validate_error")) { + _msg.append(msg.substring(0, msg.length()-1-"validate_error".length())); + valideteError=true; + }else { + _msg.append(msg); + } //throw new ServiceException(msg); - _msg.append(msg); + } } + if(valideteError) { + _msg.append(props.getProperty("validate_error", "Unexpected error occurred while validating")); + } + long end=System.currentTimeMillis(); logger.warn("checkIpCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; @@ -1005,8 +1021,10 @@ public class BaseController { BlockingQueue> queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); + + Properties props=this.getMsgProp(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { + if(msg.equals("validate_error")) { + valideteError=true; + }else if(msg.endsWith("validate_error")) { + _msg.append(msg.substring(0, msg.length()-1-"validate_error".length())); + valideteError=true; + }else { + _msg.append(msg); + } //throw new ServiceException(msg); - _msg.append(msg); + } } + if(valideteError) { + _msg.append(props.getProperty("validate_error", "Unexpected error occurred while validating")); + } + long end=System.currentTimeMillis(); logger.warn("checkStringCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; @@ -1045,8 +1076,10 @@ public class BaseController { BlockingQueue queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); + + Properties props=this.getMsgProp(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { + if(msg.equals("validate_error")) { + valideteError=true; + }else if(msg.endsWith("validate_error")) { + _msg.append(msg.substring(0, msg.length()-1-"validate_error".length())); + valideteError=true; + }else { + _msg.append(msg); + } //throw new ServiceException(msg); - _msg.append(msg); + } } + if(valideteError) { + _msg.append(props.getProperty("validate_error", "Unexpected error occurred while validating")); + } + long end=System.currentTimeMillis(); logger.warn("checkComplexStringCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; @@ -1085,8 +1131,10 @@ public class BaseController { BlockingQueue queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); + + Properties props=this.getMsgProp(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { - _msg.append(msg); + if(msg.equals("validate_error")) { + valideteError=true; + }else if(msg.endsWith("validate_error")) { + _msg.append(msg.substring(0, msg.length()-1-"validate_error".length())); + valideteError=true; + }else { + _msg.append(msg); + } //throw new ServiceException(msg); + } } + if(valideteError) { + _msg.append(props.getProperty("validate_error", "Unexpected error occurred while validating")); + } + long end=System.currentTimeMillis(); logger.warn("checkDnsResStrategyCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; @@ -1127,8 +1188,10 @@ public class BaseController { BlockingQueue queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); + + Properties props=this.getMsgProp(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { - _msg.append(msg); + if(msg.equals("validate_error")) { + valideteError=true; + }else if(msg.endsWith("validate_error")) { + _msg.append(msg.substring(0, msg.length()-1-"validate_error".length())); + valideteError=true; + }else { + _msg.append(msg); + } //throw new ServiceException(msg); + } } + if(valideteError) { + _msg.append(props.getProperty("validate_error", "Unexpected error occurred while validating")); + } + long end=System.currentTimeMillis(); logger.warn("checkAppComplexFeatureStringCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; @@ -1168,10 +1244,11 @@ public class BaseController { BlockingQueue queue=new ArrayBlockingQueue<>(list.size()); ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE); List> futures=new ArrayList<>(); + + Properties props=this.getMsgProp(); for(int i=0;i future:futures) { String msg = future.get(); if(StringUtils.isNotBlank(msg)) { + if(msg.equals("validate_error")) { + valideteError=true; + }else if(msg.endsWith("validate_error")) { + _msg.append(msg.substring(0, msg.length()-1-"validate_error".length())); + valideteError=true; + }else { + _msg.append(msg); + } //throw new ServiceException(msg); - _msg.append(msg); + } } + if(valideteError) { + _msg.append(props.getProperty("validate_error", "Unexpected error occurred while validating")); + } + long end=System.currentTimeMillis(); logger.warn("checkTopicWebsiteCfgMulity finish,cost:"+(end-start)+",size:"+queue.size()); return queue; @@ -1338,9 +1428,18 @@ public class BaseController { List> asnNoMaps=Lists.newArrayList(); Map newAsnNoMap=Maps.newConcurrentMap(); Map OldAsnNoMap=Maps.newConcurrentMap(); - Map asnGroupInfos=null; - asnNoMaps.add(newAsnNoMap); - asnNoMaps.add(OldAsnNoMap); + Map allAsnNoMap=Maps.newConcurrentMap(); + Map auditedAsnNoMap=Maps.newConcurrentMap(); + Map orgGroupInfoMap=Maps.newConcurrentMap(); + asnNoMaps.add(newAsnNoMap); //【0】 新的asn group info + asnNoMaps.add(OldAsnNoMap); //【1】 旧的asn group info + asnNoMaps.add(allAsnNoMap); //【2】 所有的asn group info + asnNoMaps.add(auditedAsnNoMap);//【3】 所有已审核通过的asn group info + List> asnOrgList=Lists.newArrayList(); //组织信息 + Map newOrgMap=Maps.newConcurrentMap(); + Map oldOrgMap=Maps.newConcurrentMap(); + asnOrgList.add(newOrgMap); //【0】 新的组织信息 + asnOrgList.add(oldOrgMap);//【1】 旧的组织信息 FunctionRegionDict appRegion = null; FunctionRegionDict appFeatureRegion = null; if(serviceDict!=null) { @@ -1377,72 +1476,73 @@ public class BaseController { if (serviceDict!=null&&serviceDict.getAction().equals(64)) { BlockingQueue list = ei.getDataList(IpRateLimitTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list); } else if(serviceDict!=null&&serviceDict.getAction().equals(32)) { BlockingQueue list = ei.getDataList(IpAllNotDoLogTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); } else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); } } else if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { BlockingQueue list = ei.getDataList(DnsIpTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); }else if(regionDict.getFunctionId().equals(401)) { BlockingQueue list = ei.getDataList(DnsFakeIpTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); }else if (regionDict.getFunctionId().equals(212)) { BlockingQueue list = ei.getDataList(IpPayloadTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); } else if (regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())) { // P2p IP BlockingQueue list = ei.getDataList(P2pIpTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); } else if (regionDict.getFunctionId().equals(600)) {// ASN IP ei.setHasImportLimit(false); - //加载asn缓存 - //AsnCacheUtils.init(true); //从数据库中读取 - asnGroupInfos=asnGroupInfoService.getGroupList(); - //OldAsnNoMap.putAll(asnGroupInfoService.getGroupList()); + List asnGroupInfoList=asnGroupInfoService.findAsnGroupInfos(); + //初始化所有数据库中的asn信息 + asnGroupInfoService.getGroupList(asnGroupInfoList,asnNoMaps); + //初始化所有数据库中的组织信息 + Map oldOrgMapData=configGroupInfoService.getConfigGroupInfo(asnOrgList,4); BlockingQueue list = ei.getDataList(AsnIpTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, asnNoMaps,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, asnNoMaps,asnOrgList, list); }else if (regionDict.getFunctionId().equals(301)) {// DDOS IP BlockingQueue list = ei.getDataList(DdosIpTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); }else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 BlockingQueue list = ei.getDataList(HttpsRejectIpTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 BlockingQueue list = ei.getDataList(HttpsRedirectIpTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 BlockingQueue list = ei.getDataList(HttpsReplaceIpTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 BlockingQueue list = ei.getDataList(IpAllNotDoLogTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); }else if(regionDict.getFunctionId().equals(200)) {// 拦截策略 if(serviceDict.getAction().equals(64)) { BlockingQueue list = ei.getDataList(IpRateLimitTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list); }else { BlockingQueue list = ei.getDataList(IpAllNotDoLogTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list); } }else if(regionDict.getFunctionId().equals(3)) { // IP白名单 BlockingQueue list = ei.getDataList(IpWhitelistTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list); }else if(regionDict.getFunctionId().equals(214)) { // IpSpoofing BlockingQueue list = ei.getDataList(IpSpoofingTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list); }else if(regionDict.getFunctionId().equals(405)) { // APP IP BlockingQueue list = ei.getDataList(IpAllNotDoLogTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list); }else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); - ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); } } else if (regionDict.getRegionType().equals(2)) {// 字符串类 if (regionDict.getFunctionId().equals(510) @@ -1549,25 +1649,18 @@ public class BaseController { } if (regionDict.getRegionType().equals(1)) {// IP if(regionDict.getFunctionId().intValue()==600) {//ans ip - + //是否全量下发所有的asn info信息 List isImportAll=DictUtils.getDictList("IS_ASN_IP_IMPORT_ALL"); - //处理组,新的组会在这里保存 - if(!asnNoMaps.get(0).isEmpty()) { - asnIpCfgService.processGroup(asnNoMaps.get(0)); - } - //全量下发,删除asnNo对应的已有的IP - if(isImportAll.get(0).getItemCode().equals("1")) { - logger.warn("Delete and send ip reuse regions start"); - long _start=System.currentTimeMillis(); - deleteIps(asnNoMaps.get(1)); - long _end=System.currentTimeMillis(); - logger.warn("Delete and send ip reuse regions end,cost:"+(_end-_start)); - } - List asnIpCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); + //处理config_group_info和asn_group_info + asnIpCfgService.processGroup(serviceDict,asnNoMaps,asnOrgList,isSend,isImportAll.get(0).getItemCode()); + //每次批量之后需要更新已下发的组 + asnNoMaps.get(3).clear(); + //处理asn ip List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); while(!ipPortCfgs.isEmpty()) { ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE); - List regionIds=Lists.newArrayList(); + asnIpCfgService.processAsnIp(serviceDict,regionDict,_ipPortCfgs,asnNoMaps,isSend,isImportAll.get(0).getItemCode(),requestId, attribute, classify); + /*List regionIds=Lists.newArrayList(); try { regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size()); } catch (Exception e) { @@ -1626,11 +1719,9 @@ public class BaseController { asnIpCfgs.add(_cfg); ind++; } - ipCfgService.saveAndSend(regionDict, serviceDict, specificServiceCfg, asnIpCfgs, cfgIndexInfos, appPolicyCfgs,appFeatureIndexs,asnNoMaps,isSend.equals("1")); - cfgIndexInfos.clear(); - appPolicyCfgs.clear(); + ipCfgService.saveAndSend(regionDict, serviceDict, specificServiceCfg, asnIpCfgs, cfgIndexInfos, appPolicyCfgs,appFeatureIndexs,asnNoMaps,isSend.equals("1"));*/ _ipPortCfgs.clear(); - asnIpCfgs.clear(); + /*asnIpCfgs.clear();*/ } }else if(regionDict.getFunctionId().intValue()==214) { // IpSpoofing List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);