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 000000000..8666e5cd5
Binary files /dev/null and b/lib/java-ipv6-0.16.jar differ
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("::");
}