From a65dd619b46346f883bf28414bdac4b825c605d8 Mon Sep 17 00:00:00 2001 From: zhangdongxu Date: Thu, 30 Aug 2018 19:18:23 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81IP=E7=B1=BB=E5=9F=9F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84addrType=E7=9A=84=E5=8F=96=E5=80=BC=E9=AA=8C?= =?UTF-8?q?=E8=AF=81;=202=E3=80=81=E5=88=86=E7=BB=84=E5=A4=8D=E7=94=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E3=80=81=E5=88=A0=E9=99=A4=E5=9F=9F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=B5=8B=E8=AF=95=E5=B9=B6=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nis/restful/RestBusinessCode.java | 4 ++++ src/main/java/com/nis/util/CompileVal.java | 7 +++++- src/main/java/com/nis/util/GroupReuseVal.java | 13 ++++++++--- .../com/nis/util/ServiceAndRDBIndexReal.java | 6 +++-- .../service/restful/ConfigSourcesService.java | 22 +++++++++---------- 5 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/nis/restful/RestBusinessCode.java b/src/main/java/com/nis/restful/RestBusinessCode.java index 7a2446f..39c8f78 100644 --- a/src/main/java/com/nis/restful/RestBusinessCode.java +++ b/src/main/java/com/nis/restful/RestBusinessCode.java @@ -407,6 +407,10 @@ public enum RestBusinessCode { */ SrcIpEQDstIp(4002303,"IP类域-srcIp和dstIp不能相同"), + /** + * IP类域配置的addrType的值只能为4(IPV4)、6(IPV6)、46(4OVER6隧道)、64(6OVER4隧道)、10(全部) + */ + AddrTypeIsWrongRange(4002304,"IP类域配置的addrType的值只能为4(IPV4)、6(IPV6)、46(4OVER6隧道)、64(6OVER4隧道)、10(全部)"), /** * 字符串域配置的exprType的值只能是0(无表达式)或者1(与表达式) */ diff --git a/src/main/java/com/nis/util/CompileVal.java b/src/main/java/com/nis/util/CompileVal.java index 19c73b4..972157f 100644 --- a/src/main/java/com/nis/util/CompileVal.java +++ b/src/main/java/com/nis/util/CompileVal.java @@ -766,7 +766,12 @@ public class CompileVal { } public static void serviceIpRegionVal(IpRegion ipRegion, Long compileId, String listName) throws Exception { - + int addrType = ipRegion.getAddrType().intValue(); + if (!(addrType == 4|| addrType == 6 || addrType == 46|| addrType == 64 || addrType ==10)) { + throw new RestServiceException("编译配置id为" + compileId + "的配置中" + listName + "中regionId为" + ipRegion.getRegionId() + + "的域配置addrType的值只能为4(IPV4)、6(IPV6)、46(4OVER6隧道)、64(6OVER4隧道)、10(全部)", + RestBusinessCode.AddrTypeIsWrongRange.getValue()); + } validateIpAndMask(ipRegion, compileId, listName); if (!BasicProvingUtil.isPortOrPortMask(ipRegion.getSrcPort())) { diff --git a/src/main/java/com/nis/util/GroupReuseVal.java b/src/main/java/com/nis/util/GroupReuseVal.java index e1086b1..6548f5c 100644 --- a/src/main/java/com/nis/util/GroupReuseVal.java +++ b/src/main/java/com/nis/util/GroupReuseVal.java @@ -28,7 +28,7 @@ public class GroupReuseVal { List numRegionList = groupReuse.getNumRegionList(); for (NumRegion numRegion : numRegionList) { if (!StringUtil.isEmpty(numRegion.getTableName()) - && groupReuseRegionMap.get("numRegion").contains(numRegion.getTableName())) { + && !groupReuseRegionMap.get("numRegion").contains(numRegion.getTableName())) { throw new RestServiceException("numRegionList中的regionId为" + numRegion.getRegionId() + "的域配置tableName不是分组复用的域表", @@ -64,7 +64,7 @@ public class GroupReuseVal { // { if (!StringUtil.isEmpty(strRegion.getTableName()) - && groupReuseRegionMap.get("strRegion").contains(strRegion.getTableName())) { + && !groupReuseRegionMap.get("strRegion").contains(strRegion.getTableName())) { throw new RestServiceException("strRegionList中的regionId为" + strRegion.getRegionId() + "的域配置tableName不是分组复用的域表", @@ -99,7 +99,7 @@ public class GroupReuseVal { // !regionGroupIdList.contains(ipRegion.getGroupId())) { if (!StringUtil.isEmpty(ipRegion.getTableName()) - && groupReuseRegionMap.get("ipRegion").contains(ipRegion.getTableName())) { + && !groupReuseRegionMap.get("ipRegion").contains(ipRegion.getTableName())) { throw new RestServiceException("ipRegionList中的regionId为" + ipRegion.getRegionId() + "的域配置tableName不是分组复用的域表", @@ -355,6 +355,13 @@ public class GroupReuseVal { public static void serviceIpRegionVal(IpRegion ipRegion) throws Exception { + int addrType = ipRegion.getAddrType().intValue(); + if (!(addrType == 4|| addrType == 6 || addrType == 46|| addrType == 64 || addrType ==10)) { + throw new RestServiceException("ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置addrType的值只能为4(IPV4)、6(IPV6)、46(4OVER6隧道)、64(6OVER4隧道)、10(全部)", + RestBusinessCode.AddrTypeIsWrongRange.getValue()); + } + validateIpAndMask(ipRegion); if (!BasicProvingUtil.isPortOrPortMask(ipRegion.getSrcPort())) { diff --git a/src/main/java/com/nis/util/ServiceAndRDBIndexReal.java b/src/main/java/com/nis/util/ServiceAndRDBIndexReal.java index c8a95fa..df5d261 100644 --- a/src/main/java/com/nis/util/ServiceAndRDBIndexReal.java +++ b/src/main/java/com/nis/util/ServiceAndRDBIndexReal.java @@ -412,8 +412,10 @@ public class ServiceAndRDBIndexReal { Iterator mapIterator = map.keySet().iterator(); while (mapIterator.hasNext()) { String regionName = mapIterator.next().toString(); - if (StringUtil.isEmpty(groupReuseRegionMap.containsKey(regionName))) { - groupReuseRegionMap.put(regionName, map.get(regionName)); + if (!groupReuseRegionMap.containsKey(regionName)) { + List list = new ArrayList(); + list.addAll(map.get(regionName)); + groupReuseRegionMap.put(regionName, list); }else{ groupReuseRegionMap.get(regionName).addAll(map.get(regionName)); } diff --git a/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java b/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java index de09f1b..357af8c 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java +++ b/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java @@ -839,7 +839,7 @@ public class ConfigSourcesService extends BaseService { } } - if (StringUtil.isEmpty(maatConfig.getStrRegionMapList())) { + if (StringUtil.isEmpty(maatConfig.getNumRegionMapList())) { maatConfig.setNumRegionMapList(dstMapList); }else{ maatConfig.getNumRegionMapList().addAll(dstMapList); @@ -853,7 +853,7 @@ public class ConfigSourcesService extends BaseService { dstMapList.add(convertObjectToMap(region, IpRegion.class)); } } - if (StringUtil.isEmpty(maatConfig.getStrRegionMapList())) { + if (StringUtil.isEmpty(maatConfig.getIpRegionMapList())) { maatConfig.setIpRegionMapList(dstMapList); }else{ maatConfig.getIpRegionMapList().addAll(dstMapList); @@ -949,11 +949,11 @@ public class ConfigSourcesService extends BaseService { hasRegionFlag = true; List numRegionList = config.getNumRegionList(); for (NumRegion numRegion : numRegionList) { - if (!StringUtil.isEmpty(numRegion.getTableName()) - && groupReuseRegionMap.get("numRegion").contains(numRegion.getTableName())) { + if (StringUtil.isEmpty(numRegion.getTableName()) + || !groupReuseRegionMap.get("numRegion").contains(numRegion.getTableName())) { throw new RestServiceException("numRegionList中的regionId为" + numRegion.getRegionId() - + "的域配置tableName不是分组复用的域表", + + "的域配置tableName为空或不是分组复用的域表", RestBusinessCode.TableNameUnReuse .getValue()); } @@ -967,11 +967,11 @@ public class ConfigSourcesService extends BaseService { hasRegionFlag = true; List strRegionList = config.getStrRegionList(); for (StrRegion strRegion : strRegionList) { - if (!StringUtil.isEmpty(strRegion.getTableName()) - && groupReuseRegionMap.get("strRegion").contains(strRegion.getTableName())) { + if (StringUtil.isEmpty(strRegion.getTableName()) + || !groupReuseRegionMap.get("strRegion").contains(strRegion.getTableName())) { throw new RestServiceException("strRegionList中的regionId为" + strRegion.getRegionId() - + "的域配置tableName不是分组复用的域表", + + "的域配置tableName为空或不是分组复用的域表", RestBusinessCode.TableNameUnReuse .getValue()); } @@ -987,11 +987,11 @@ public class ConfigSourcesService extends BaseService { List ipRegionList = config.getIpRegionList(); for (IpRegion ipRegion : ipRegionList) { - if (!StringUtil.isEmpty(ipRegion.getTableName()) - && groupReuseRegionMap.get("ipRegion").contains(ipRegion.getTableName())) { + if (StringUtil.isEmpty(ipRegion.getTableName()) + || !groupReuseRegionMap.get("ipRegion").contains(ipRegion.getTableName())) { throw new RestServiceException("ipRegionList中的regionId为" + ipRegion.getRegionId() - + "的域配置tableName不是分组复用的域表", + + "的域配置tableName为空或不是分组复用的域表", RestBusinessCode.TableNameUnReuse .getValue()); }