diff --git a/src/main/java/com/nis/domain/restful/CommonSourceFieldCfg.java b/src/main/java/com/nis/domain/restful/CommonSourceFieldCfg.java index fa8b9f0..fce27bd 100644 --- a/src/main/java/com/nis/domain/restful/CommonSourceFieldCfg.java +++ b/src/main/java/com/nis/domain/restful/CommonSourceFieldCfg.java @@ -19,6 +19,7 @@ public class CommonSourceFieldCfg { private Boolean isRequired=false; private String defaultVal; private String regexp; + private Boolean isSrcInfo=false; public CommonSourceFieldCfg() { super(); @@ -36,7 +37,7 @@ public class CommonSourceFieldCfg { */ public CommonSourceFieldCfg(String fieldType, String srcName, String dstName, String range, Boolean isRequired, - String defaultVal, String regexp) { + String defaultVal, String regexp,Boolean isSrcInfo) { super(); this.fieldType = fieldType; this.srcName = srcName; @@ -45,6 +46,7 @@ public class CommonSourceFieldCfg { this.isRequired = isRequired; this.defaultVal = defaultVal; this.regexp = regexp; + this.isSrcInfo = isSrcInfo; } public String getSrcName() { @@ -102,4 +104,17 @@ public class CommonSourceFieldCfg { public void setRegexp(String regexp) { this.regexp = regexp; } + /** + * @return the isSrcInfo + */ + public Boolean getIsSrcInfo() { + return isSrcInfo; + } + + /** + * @param isSrcInfo the isSrcInfo to set + */ + public void setIsSrcInfo(Boolean isSrcInfo) { + this.isSrcInfo = isSrcInfo; + } } diff --git a/src/main/java/com/nis/util/CompileVal.java b/src/main/java/com/nis/util/CompileVal.java index 6204c5d..0af63d7 100644 --- a/src/main/java/com/nis/util/CompileVal.java +++ b/src/main/java/com/nis/util/CompileVal.java @@ -702,25 +702,91 @@ public class CompileVal { } public static String serviceIpClientRegionVal(IpRegion ipRegion, Long compileId) { - if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), ipRegion.getAddrType())) { - businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); - return "编译配置id为" + compileId + "的配置中ipClientRangeList中regionId为" + ipRegion.getRegionId() - + "的域配置srcIp的格式不正确或与addrType不一致"; - } - if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), ipRegion.getAddrType())) { - businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); - return "编译配置id为" + compileId + "的配置中ipClientRangeList中regionId为" + ipRegion.getRegionId() - + "的域配置maskSrcIp的格式不正确或与addrType不一致"; - } - if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), ipRegion.getAddrType())) { - businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); - return "编译配置id为" + compileId + "的配置中ipClientRangeList中regionId为" + ipRegion.getRegionId() - + "的域配置dstIp的格式不正确或与addrType不一致"; - } - if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), ipRegion.getAddrType())) { - businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); - return "编译配置id为" + compileId + "的配置中ipClientRangeList中regionId为" + ipRegion.getRegionId() - + "的域配置maskDstIp的格式不正确或与addrType不一致"; + //源IP信息和目的IP信息格式为IPV4或IPV6 + if (ipRegion.getAddrType().intValue()==4||ipRegion.getAddrType().intValue()==6) { + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), ipRegion.getAddrType())) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置srcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), ipRegion.getAddrType())) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskSrcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), ipRegion.getAddrType())) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置dstIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), ipRegion.getAddrType())) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskDstIp的格式不正确或与addrType不一致"; + } + }else if (ipRegion.getAddrType().intValue()==46) {//4OVER6:源IP信息格式为IPV4、目的IP信息格式IPV6 + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), 4)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置srcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), 4)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskSrcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), 6)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置dstIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), 6)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskDstIp的格式不正确或与addrType不一致"; + } + }else if (ipRegion.getAddrType().intValue()==64) {//6OVER4:源IP信息格式为IPV6、目的IP信息格式IPV4 + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), 6)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置srcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), 6)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskSrcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), 4)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置dstIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), 4)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskDstIp的格式不正确或与addrType不一致"; + } + }else if (ipRegion.getAddrType().intValue()==10) {//all:符合IP格式即可 + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), null)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置srcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), null)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskSrcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), null)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置dstIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), null)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskDstIp的格式不正确或与addrType不一致"; + } } if (!BasicProvingUtil.isPortOrPortMask(ipRegion.getSrcPort())) { @@ -776,25 +842,91 @@ public class CompileVal { } public static String serviceIpRegionVal(IpRegion ipRegion, Long compileId) { - if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), ipRegion.getAddrType())) { - businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); - return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() - + "的域配置srcIp的格式不正确或与addrType不一致"; - } - if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), ipRegion.getAddrType())) { - businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); - return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() - + "的域配置maskSrcIp的格式不正确或与addrType不一致"; - } - if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), ipRegion.getAddrType())) { - businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); - return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() - + "的域配置dstIp的格式不正确或与addrType不一致"; - } - if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), ipRegion.getAddrType())) { - businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); - return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() - + "的域配置maskDstIp的格式不正确或与addrType不一致"; + //源IP信息和目的IP信息格式为IPV4或IPV6 + if (ipRegion.getAddrType().intValue()==4||ipRegion.getAddrType().intValue()==6) { + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), ipRegion.getAddrType())) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置srcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), ipRegion.getAddrType())) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskSrcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), ipRegion.getAddrType())) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置dstIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), ipRegion.getAddrType())) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskDstIp的格式不正确或与addrType不一致"; + } + }else if (ipRegion.getAddrType().intValue()==46) {//4OVER6:源IP信息格式为IPV4、目的IP信息格式IPV6 + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), 4)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置srcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), 4)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskSrcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), 6)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置dstIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), 6)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskDstIp的格式不正确或与addrType不一致"; + } + }else if (ipRegion.getAddrType().intValue()==64) {//6OVER4:源IP信息格式为IPV6、目的IP信息格式IPV4 + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), 6)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置srcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), 6)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskSrcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), 4)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置dstIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), 4)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskDstIp的格式不正确或与addrType不一致"; + } + }else if (ipRegion.getAddrType().intValue()==10) {//all:符合IP格式即可 + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getSrcIp(), null)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置srcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskSrcIp(), null)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskSrcIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getDstIp(), null)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置dstIp的格式不正确或与addrType不一致"; + } + if (!BasicProvingUtil.isIpOrIpMask(ipRegion.getMaskDstIp(), null)) { + businessCode = RestBusinessCode.IPUnMatchAddrType.getValue(); + return "编译配置id为" + compileId + "的配置中ipRegionList中regionId为" + ipRegion.getRegionId() + + "的域配置maskDstIp的格式不正确或与addrType不一致"; + } } if (!BasicProvingUtil.isPortOrPortMask(ipRegion.getSrcPort())) { diff --git a/src/main/java/com/nis/util/ReadCommSourceXmlUtil.java b/src/main/java/com/nis/util/ReadCommSourceXmlUtil.java index acd5d1f..7a7ed82 100644 --- a/src/main/java/com/nis/util/ReadCommSourceXmlUtil.java +++ b/src/main/java/com/nis/util/ReadCommSourceXmlUtil.java @@ -91,6 +91,9 @@ public class ReadCommSourceXmlUtil { if (!StringUtil.isEmpty(field.attribute("regexp"))) { fieldCfg.setRegexp(field.attribute("regexp").getValue()); } + if (!StringUtil.isEmpty(field.attribute("isSrcInfo"))) { + fieldCfg.setIsSrcInfo(Boolean.valueOf(field.attribute("isSrcInfo").getValue())); + } cfgList.add(fieldCfg); } commonSourceCfgMap.put(serviceId.trim(), cfgList); 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 c8c7098..84b74bf 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java +++ b/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java @@ -2876,7 +2876,16 @@ public class ConfigSourcesService extends BaseService { } break; case "IP": - if (!BasicProvingUtil.isIpOrIpMask(dstStr, ipType)) { + Boolean isSrcInfo = commonSourceFieldCfg.getIsSrcInfo(); + Integer valAddrType = ipType; + if (ipType.intValue()==46) { + valAddrType=isSrcInfo?4:6; + }else if (ipType.intValue()==64) { + valAddrType=isSrcInfo?6:4; + }else if (ipType.intValue()==10) { + valAddrType=null; + } + if (!BasicProvingUtil.isIpOrIpMask(dstStr, valAddrType)) { logger.error(commonSourceFieldCfg.getSrcName() + "参数格式不正确或与" + ipTypeName + "不一致"); thread.setExceptionInfo(commonSourceFieldCfg diff --git a/src/main/resources/commonSources/applicationConfig-parser.schema.xsd b/src/main/resources/commonSources/applicationConfig-parser.schema.xsd index a0d0434..f8a376e 100644 --- a/src/main/resources/commonSources/applicationConfig-parser.schema.xsd +++ b/src/main/resources/commonSources/applicationConfig-parser.schema.xsd @@ -39,6 +39,8 @@ + @@ -68,6 +70,12 @@ + + + + + + diff --git a/src/main/resources/commonSources/applicationConfig-parser.xml b/src/main/resources/commonSources/applicationConfig-parser.xml index 6a97c60..4577c39 100644 --- a/src/main/resources/commonSources/applicationConfig-parser.xml +++ b/src/main/resources/commonSources/applicationConfig-parser.xml @@ -15,9 +15,9 @@ - - - + + + @@ -90,9 +90,9 @@ - - - + + + diff --git a/src/main/resources/jdbc.properties b/src/main/resources/jdbc.properties index 3577236..03c3127 100644 --- a/src/main/resources/jdbc.properties +++ b/src/main/resources/jdbc.properties @@ -64,7 +64,7 @@ bonecp.hive.statementsCacheSize=100 ##################################################################################################################################### redis.host=10.0.6.249 #redis.host=192.168.10.205 -redis.port=6381 +redis.port=6379 redis.pass= redis.maxIdle=5 redis.maxTotal=250