From 8168274b30b3e14890cb4c7c2c9b03b8e39e3a1b Mon Sep 17 00:00:00 2001 From: zhangwei Date: Wed, 30 May 2018 15:12:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ipv6=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E7=B1=BB=E5=BA=93=EF=BC=8C=E5=A4=84=E7=90=86ipv6=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E7=9A=84=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 5 ++ lib/java-ipv6-0.16.jar | Bin 0 -> 33213 bytes .../java/com/nis/web/service/BaseService.java | 55 +++++++++++------- 3 files changed, 40 insertions(+), 20 deletions(-) create mode 100644 lib/java-ipv6-0.16.jar diff --git a/.classpath b/.classpath index 43796329a..8f5d0c05f 100644 --- a/.classpath +++ b/.classpath @@ -153,5 +153,10 @@ + + + + + diff --git a/lib/java-ipv6-0.16.jar b/lib/java-ipv6-0.16.jar new file mode 100644 index 0000000000000000000000000000000000000000..8666e5cd535f3d4af6ec3fb21c8425f8ae64dfed GIT binary patch literal 33213 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 literal 0 HcmV?d00001 diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index 3934ef7bb..74ca68700 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -19,6 +19,9 @@ import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; +import com.googlecode.ipv6.IPv6Address; +import com.googlecode.ipv6.IPv6AddressRange; +import com.googlecode.ipv6.IPv6Network; import com.nis.domain.SysRole; import com.nis.domain.SysUser; import com.nis.domain.configuration.BaseCfg; @@ -344,74 +347,86 @@ public abstract class BaseService { public static IpCfg ipConvert(IpCfg dstIp,BaseIpCfg srcIp){ if(srcIp.getSrcIpAddress()!=null){ if(srcIp.getSrcIpAddress().indexOf("/")!=-1){ - if(srcIp.getIpType()==4){ + if(srcIp.getIpType()==4 || srcIp.getIpType()==46){ Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]); dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum)); dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); - }else{ - + }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ + IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress()); + dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); + dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString()); } }else if(srcIp.getSrcIpAddress().indexOf("-")!=-1){ - if(srcIp.getIpType()==4){ + if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ dstIp.setSrcIp(srcIp.getSrcIpAddress().split("-")[0]); dstIp.setSrcIpMask(IpUtil.getMask(srcIp.getSrcIpAddress().split("-")[0], srcIp.getSrcIpAddress().split("-")[1])); - }else{ - + }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ + 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{ - if(srcIp.getIpType()==4){ + if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIpMask("0.0.0.0"); - }else{ + }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIpMask("::"); } } }else{ - if(srcIp.getIpType()==4){ + if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIpMask("0.0.0.0"); - }else{ + }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIpMask("::"); } } if(srcIp.getDestIpAddress()!=null){ if(srcIp.getDestIpAddress().indexOf("/")!=-1){ - if(srcIp.getIpType()==4){ + if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ Integer dstMaskNum = Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]); dstIp.setDstIpMask(IpUtil.convertMask(dstMaskNum)); dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); - }else{ - + }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ + IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress()); + dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); + dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString()); } }else if(srcIp.getDestIpAddress().indexOf("-")!=-1){ - if(srcIp.getIpType()==4){ + if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ dstIp.setDstIp(srcIp.getDestIpAddress().split("-")[0]); dstIp.setDstIpMask(IpUtil.getMask(srcIp.getDestIpAddress().split("-")[0], srcIp.getDestIpAddress().split("-")[1])); - }else{ - + }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ + 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{ - if(srcIp.getIpType()==4){ + if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIpMask("0.0.0.0"); - }else{ + }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIpMask("::"); } } }else{ - if(srcIp.getIpType()==4){ + if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIpMask("0.0.0.0"); - }else{ + }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIpMask("::"); }