diff --git a/src/main/java/com/nis/util/ConfigConvertUtil.java b/src/main/java/com/nis/util/ConfigConvertUtil.java index 9bdb0d5fc..1adca16c7 100644 --- a/src/main/java/com/nis/util/ConfigConvertUtil.java +++ b/src/main/java/com/nis/util/ConfigConvertUtil.java @@ -395,31 +395,45 @@ public class ConfigConvertUtil { */ public static List ipConvert(IpCfg dstIp, BaseIpCfg srcIp) { List ipConvertList = Lists.newArrayList(); - boolean isRange = (((srcIp.getSrcIpPattern() != null && srcIp.getSrcIpPattern() == 2)||(srcIp.getDestIpPattern()) != null && srcIp.getDestIpPattern() == 2) - || (srcIp.getSrcIpAddress() != null && srcIp.getSrcIpAddress().indexOf("-") > -1) - || (srcIp.getDestIpAddress() != null && srcIp.getDestIpAddress().indexOf("-") > -1)); - if (isRange) { - List tempList = Lists.newArrayList(); - List tempList1 = Lists.newArrayList(); - if (srcIp.getIpType().intValue() == 4) { - if (srcIp.getSrcIpAddress() != null) { - String startIpPart = srcIp.getSrcIpAddress().split("-")[0]; - String endIpPart = srcIp.getSrcIpAddress().split("-")[1]; - Integer startNum = Integer.parseInt(startIpPart.split("\\.")[3]); - Integer endNum = Integer.parseInt(endIpPart.split("\\.")[3]); - for (int i = startNum; i <= endNum; i++) { - IpCfg tempIp = new IpCfg(); - BeanUtils.copyProperties(dstIp, tempIp); - tempIp.setSrcIp(startIpPart.substring(0, startIpPart.lastIndexOf(".") + 1) + i); - tempIp.setSrcIpMask("255.255.255.255"); - tempList.add(tempIp); + List tempList = Lists.newArrayList(); + List tempList1 = Lists.newArrayList(); + if (srcIp.getIpType().equals(4)) {// IP V4 + if(srcIp.getSrcIpPattern().equals(2)) {//源IP范围 + if (srcIp.getSrcIpAddress() != null) { + String startIpPart = srcIp.getSrcIpAddress().split("-")[0]; + String endIpPart = srcIp.getSrcIpAddress().split("-")[1]; + Integer startNum = Integer.parseInt(startIpPart.split("\\.")[3]); + Integer endNum = Integer.parseInt(endIpPart.split("\\.")[3]); + for (int i = startNum; i <= endNum; i++) { + IpCfg tempIp = new IpCfg(); + BeanUtils.copyProperties(dstIp, tempIp); + tempIp.setSrcIp(startIpPart.substring(0, startIpPart.lastIndexOf(".") + 1) + i); + tempIp.setSrcIpMask("255.255.255.255"); + tempList.add(tempIp); + } + }else { + dstIp.setSrcIp("0.0.0.0"); + dstIp.setSrcIpMask("255.255.255.255"); + tempList.add(dstIp); } + }else if(srcIp.getSrcIpPattern().equals(1)){ + Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]); + if (srcMaskNum == 0) { + dstIp.setSrcIpMask("0.0.0.0"); } else { - dstIp.setSrcIp("0.0.0.0"); - dstIp.setSrcIpMask("255.255.255.255"); - tempList.add(dstIp); + dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum)); } - if (srcIp.getDestIpAddress() != null) { + dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); + tempList.add(dstIp); + }else if(srcIp.getSrcIpPattern().equals(3)){ + dstIp.setSrcIp(srcIp.getSrcIpAddress()); + dstIp.setSrcIpMask("255.255.255.255"); + tempList.add(dstIp); + }else { + throw new RuntimeException("Unsupported IP Pattern " + srcIp.getSrcIpPattern()); + } + if (srcIp.getDestIpAddress() != null) { + if(srcIp.getDestIpPattern().equals(2)) { String startIpPart = srcIp.getDestIpAddress().split("-")[0]; String endIpPart = srcIp.getDestIpAddress().split("-")[1]; Integer startNum = Integer.parseInt(startIpPart.split("\\.")[3]); @@ -439,217 +453,93 @@ public class ConfigConvertUtil { } } tempList.clear(); - } else { + }else if(srcIp.getDestIpPattern().equals(1)) { + Integer dstMaskNum = Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]); for (IpCfg _cfg : tempList) { - _cfg.setDstIp("0.0.0.0"); - _cfg.setSrcIpMask("255.255.255.255"); - convertPortValues(_cfg, srcIp); + IpCfg tempIp = new IpCfg(); + BeanUtils.copyProperties(_cfg, tempIp); + if (dstMaskNum == 0) { + tempIp.setDstIpMask("0.0.0.0"); + } else { + tempIp.setDstIpMask(IpUtil.convertMask(dstMaskNum)); + } + tempIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); + if (!tempIp.getSrcIp().equals(tempIp.getDstIp())) { + // 处理 + convertPortValues(tempIp, srcIp); + tempList1.add(tempIp); + } } + tempList.clear(); + }else { + for (IpCfg _cfg : tempList) { + IpCfg tempIp = new IpCfg(); + BeanUtils.copyProperties(_cfg, tempIp); + tempIp.setDstIp(srcIp.getDestIpAddress()); + if (!tempIp.getSrcIp().equals(tempIp.getDstIp())) { + tempIp.setDstIpMask("255.255.255.255"); + // 处理 + convertPortValues(tempIp, srcIp); + tempList1.add(tempIp); + } + } + tempList.clear(); } - if (tempList1.size() > 0) { - ipConvertList.addAll(tempList1); - } else { - ipConvertList.addAll(tempList); + }else { + for (IpCfg _cfg : tempList) { + _cfg.setDstIp("0.0.0.0"); + _cfg.setSrcIpMask("255.255.255.255"); + convertPortValues(_cfg, srcIp); } - } else if (srcIp.getIpType().intValue() == 6) { - if (srcIp.getSrcIpAddress() != null) { + } + if (tempList1.size() > 0) { + ipConvertList.addAll(tempList1); + } else { + ipConvertList.addAll(tempList); + } + }else if(srcIp.getIpType().equals(6)){// IP V6 + if (srcIp.getSrcIpAddress() != null) { + if(srcIp.getSrcIpPattern().equals(2)) { IPv6Address address1 = IPv6Address.fromString(srcIp.getSrcIpAddress().split("-")[0]); IPv6Address address2 = IPv6Address.fromString(srcIp.getSrcIpAddress().split("-")[1]); IPv6Network network = IPv6Network.fromTwoAddresses(address1, address2); dstIp.setSrcIp(address1.toString()); dstIp.setSrcIpMask(network.getNetmask().asAddress().toString()); - } else { - dstIp.setSrcIp("::"); + }else if(srcIp.getSrcIpPattern().equals(1)){// IP/掩码 + IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress()); + dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); + dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString()); + }else {// IP + dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); } - if (srcIp.getDestIpAddress() != null) { + } else { + dstIp.setSrcIp("::"); + dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); + } + if (srcIp.getDestIpAddress() != null) { + if(srcIp.getDestIpPattern().equals(2)) { IPv6Address address1 = IPv6Address.fromString(srcIp.getDestIpAddress().split("-")[0]); IPv6Address address2 = IPv6Address.fromString(srcIp.getDestIpAddress().split("-")[1]); IPv6Network network = IPv6Network.fromTwoAddresses(address1, address2); dstIp.setDstIp(address1.toString()); dstIp.setDstIpMask(network.getNetmask().asAddress().toString()); - } else { - dstIp.setDstIp("::"); - dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); - } - - ipConvertList.add(dstIp); - } else { - throw new RuntimeException("Unsupported IP type " + srcIp.getIpType()); - } - } else { - if (srcIp.getSrcIpAddress() != null) { - if (srcIp.getSrcIpAddress().indexOf("/") != -1) { - if (srcIp.getIpType() == 4 /* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4,目的ip为ipv6 - Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]); - if (srcMaskNum == 0) { - dstIp.setSrcIpMask("0.0.0.0"); - } else { - dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum)); - } - - dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); - } else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6,目的ip为ipv4 - IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress()); - dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); - dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString()); - } /* - * else { Pattern - * patternV4Subnet=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Pattern - * patternV6Subnet=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher - * matchernV4Subnet=patternV4Subnet.matcher(srcIp.getSrcIpAddress()); Matcher - * matcherV6Subnet=patternV6Subnet.matcher(srcIp.getSrcIpAddress()); - * if(matchernV4Subnet.matches()) { Integer srcMaskNum = - * Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]); if(srcMaskNum==0){ - * dstIp.setSrcIpMask("0.0.0.0"); }else{ - * dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum)); } - * dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); }else - * if(matcherV6Subnet.matches()){ IPv6Network strangeNetwork = - * IPv6Network.fromString(srcIp.getSrcIpAddress()); - * dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); - * dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString()); }else - * { throw new RuntimeException("Invalid IP/subnet mask format"); } } - */ - else { - throw new RuntimeException("Unsupported IP type " + srcIp.getIpType()); - } - } else { - if (srcIp.getIpType() == 4/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4,目的ip为ipv6 - dstIp.setSrcIp(srcIp.getSrcIpAddress()); - dstIp.setSrcIpMask("255.255.255.255"); - } else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6,目的ip为ipv4 - dstIp.setSrcIp(srcIp.getSrcIpAddress()); - dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); - } /* - * else {//all Pattern patternV4=Pattern.compile(Constants.IPV4_IP_REGEXP); - * Pattern patternV6=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher - * matcherV4=patternV4.matcher(srcIp.getSrcIpAddress()); Matcher - * matcherV6=patternV6.matcher(srcIp.getSrcIpAddress()); if(matcherV4.matches()) - * { dstIp.setSrcIp(srcIp.getSrcIpAddress()); - * dstIp.setSrcIpMask("255.255.255.255"); }else if(matcherV6.matches()) { - * dstIp.setSrcIp(srcIp.getSrcIpAddress()); - * dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); }else { throw - * new RuntimeException("Invalid IP format"); } } - */ - else { - throw new RuntimeException("Unsupported IP type " + srcIp.getIpType()); - } - } - } else { - if (srcIp.getIpType() == 4/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4,目的ip为ipv6 - dstIp.setSrcIp(srcIp.getSrcIpAddress()); - dstIp.setSrcIpMask("255.255.255.255"); - } else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6,目的ip为ipv4 - dstIp.setSrcIp(srcIp.getSrcIpAddress()); - dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); - } /* - * else {//all dstIp.setSrcIp(srcIp.getSrcIpAddress()); - * dstIp.setSrcIpMask("255.255.255.255"); } - */ - else { - throw new RuntimeException("Unsupported IP type " + srcIp.getIpType()); - } - } - if (srcIp.getDestIpAddress() != null) { - if (srcIp.getDestIpAddress().indexOf("/") != -1) { - if (srcIp.getIpType() == 4/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6,目的ip为ipv4 - Integer dstMaskNum = Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]); - if (dstMaskNum == 0) { - dstIp.setDstIpMask("0.0.0.0"); - } else { - dstIp.setDstIpMask(IpUtil.convertMask(dstMaskNum)); - ; - } - dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); - } else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4,目的ip为ipv6 - IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress()); - dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); - dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString()); - } /* - * else { Pattern - * patternV4Subnet=Pattern.compile(Constants.IPV4_IP_SUBNET_REGEXP); Pattern - * patternV6Subnet=Pattern.compile(Constants.IPV6_IP_SUBNET_REGEXP); Matcher - * matchernV4Subnet=patternV4Subnet.matcher(srcIp.getDestIpAddress()); Matcher - * matcherV6Subnet=patternV6Subnet.matcher(srcIp.getDestIpAddress()); - * if(matchernV4Subnet.matches()) { Integer dstMaskNum = - * Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]); if(dstMaskNum==0){ - * dstIp.setDstIpMask("0.0.0.0"); }else{ - * dstIp.setDstIpMask(IpUtil.convertMask(dstMaskNum));; } - * dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); }else - * if(matcherV6Subnet.matches()){ IPv6Network strangeNetwork = - * IPv6Network.fromString(srcIp.getDestIpAddress()); - * dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); - * dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString()); }else - * { throw new RuntimeException("Invalid IP/subnet mask format"); } } - */ - else { - throw new RuntimeException("Unsupported IP type " + srcIp.getIpType()); - } - - } else { - if (srcIp.getIpType() == 4/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6,目的ip为ipv4 - dstIp.setDstIp(srcIp.getDestIpAddress()); - dstIp.setDstIpMask("255.255.255.255"); - } else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4,目的ip为ipv6 - dstIp.setDstIp(srcIp.getDestIpAddress()); - dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); - } /* - * else {//all Pattern patternV4=Pattern.compile(Constants.IPV4_IP_REGEXP); - * Pattern patternV6=Pattern.compile(Constants.IPV6_IP_REGEXP); Matcher - * matcherV4=patternV4.matcher(srcIp.getDestIpAddress()); Matcher - * matcherV6=patternV6.matcher(srcIp.getDestIpAddress()); - * if(matcherV4.matches()) { dstIp.setDstIp(srcIp.getDestIpAddress()); - * dstIp.setDstIpMask("255.255.255.255"); }else if(matcherV6.matches()) { - * dstIp.setDstIp(srcIp.getDestIpAddress()); - * dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); }else { throw - * new RuntimeException("invalid ip format"); } } - */ - else { - throw new RuntimeException("Unsupported IP type " + srcIp.getIpType()); - } - } - } else { - if (srcIp.getIpType() == 4/* || srcIp.getIpType()==64 */) {// 64表示源ip为ipv6,目的ip为ipv4 - dstIp.setDstIp(srcIp.getDestIpAddress()); - dstIp.setDstIpMask("255.255.255.255"); - } else if (srcIp.getIpType() == 6/* || srcIp.getIpType()==46 */) {// 46表示源ip为ipv4,目的ip为ipv6 + }else if(srcIp.getDestIpPattern().equals(1)) {// IP/掩码 + IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress()); + dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); + dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString()); + }else {// IP dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); - } /* - * else {//all dstIp.setDstIp(srcIp.getDestIpAddress()); - * dstIp.setDstIpMask("255.255.255.255"); } - */ - else { - throw new RuntimeException("Unsupported IP type " + srcIp.getIpType()); - } - } - if (srcIp.getSrcPort() != null) { - if (srcIp.getSrcPort().indexOf("/") != -1) { - String srcMaskNum = srcIp.getSrcPort().split("/")[1]; - dstIp.setSrcPortMask(srcMaskNum); - dstIp.setSrcPort(srcIp.getSrcPort().split("/")[0]); - } else { - dstIp.setSrcPort(srcIp.getSrcPort()); - dstIp.setSrcPortMask("65535"); } } else { - dstIp.setSrcPort("0"); - dstIp.setSrcPortMask("65535"); - } - if (srcIp.getDestPort() != null) { - if (srcIp.getDestPort().indexOf("/") != -1) { - String dstMaskNum = srcIp.getDestPort().split("/")[1]; - dstIp.setDstPortMask(dstMaskNum); - dstIp.setDstPort(srcIp.getDestPort().split("/")[0]); - } else { - dstIp.setDstPort(srcIp.getDestPort()); - dstIp.setDstPortMask("65535"); - } - } else { - dstIp.setDstPort("0"); - dstIp.setDstPortMask("65535"); + dstIp.setDstIp("::"); + dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); } + convertPortValues(dstIp, srcIp); ipConvertList.add(dstIp); + }else { + throw new RuntimeException("Unsupported IP type " + srcIp.getIpType()); } return ipConvertList; } diff --git a/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipForm.jsp b/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipForm.jsp index 2528aed74..14afe9e5c 100644 --- a/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipForm.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipForm.jsp @@ -181,6 +181,10 @@ top.$.jBox.tip("", ""); return; } */ + if($(".boxSolid:visible").length==0){ + top.$.jBox.tip("", ""); + return; + } //代表所有区域都隐藏了,提示必须增加个区域信息 if($("input[name='isAreaEffective']:checked").val()==1 && $(".container-fluid:visible").size()==0){ if($("#areaIsp").hasClass("hidden")) $("#areaIp").find(".glyphicon-plus").click();