Maat 下发IP all格式修正
This commit is contained in:
@@ -7,6 +7,10 @@ import java.util.Date;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import javax.management.RuntimeErrorException;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringEscapeUtils;
|
import org.apache.commons.lang3.StringEscapeUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -388,7 +392,7 @@ public abstract class BaseService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static IpCfg ipConvert(IpCfg dstIp,BaseIpCfg srcIp){
|
public static IpCfg ipConvert(IpCfg dstIp,BaseIpCfg srcIp){
|
||||||
if(srcIp.getSrcIpAddress()!=null){
|
if(srcIp.getSrcIpAddress()!=null){
|
||||||
if(srcIp.getSrcIpAddress().indexOf("/")!=-1){
|
if(srcIp.getSrcIpAddress().indexOf("/")!=-1){
|
||||||
if(srcIp.getIpType()==4 || srcIp.getIpType()==46){//46表示源ip为ipv4,目的ip为ipv6
|
if(srcIp.getIpType()==4 || srcIp.getIpType()==46){//46表示源ip为ipv4,目的ip为ipv6
|
||||||
Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]);
|
Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]);
|
||||||
@@ -403,6 +407,26 @@ public abstract class BaseService {
|
|||||||
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress());
|
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress());
|
||||||
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
|
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
|
||||||
dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString());
|
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 if(srcIp.getSrcIpAddress().indexOf("-")!=-1){
|
}else if(srcIp.getSrcIpAddress().indexOf("-")!=-1){
|
||||||
@@ -415,6 +439,23 @@ public abstract class BaseService {
|
|||||||
IPv6Network network = IPv6Network.fromTwoAddresses(address1,address2);
|
IPv6Network network = IPv6Network.fromTwoAddresses(address1,address2);
|
||||||
dstIp.setSrcIp(address1.toString());
|
dstIp.setSrcIp(address1.toString());
|
||||||
dstIp.setSrcIpMask(network.getNetmask().asAddress().toString());
|
dstIp.setSrcIpMask(network.getNetmask().asAddress().toString());
|
||||||
|
}else {
|
||||||
|
Pattern patternV4Range=Pattern.compile(Constants.IPV4_IP_RANGE_REGEXP);
|
||||||
|
Pattern patternV6Range=Pattern.compile(Constants.IPV6_IP_RANGE_REGEXP);
|
||||||
|
Matcher matcherV4Range=patternV4Range.matcher(srcIp.getSrcIpAddress());
|
||||||
|
Matcher matcherV6Range=patternV6Range.matcher(srcIp.getSrcIpAddress());
|
||||||
|
if(matcherV4Range.matches()) {
|
||||||
|
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("-")[0]);
|
||||||
|
dstIp.setSrcIpMask(IpUtil.getMask(srcIp.getSrcIpAddress().split("-")[0], srcIp.getSrcIpAddress().split("-")[1]));
|
||||||
|
}else if(matcherV6Range.matches()) {
|
||||||
|
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 {
|
||||||
|
throw new RuntimeException("Invalid IP range format");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
@@ -424,6 +465,20 @@ public abstract class BaseService {
|
|||||||
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){//64表示源ip为ipv6,目的ip为ipv4
|
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){//64表示源ip为ipv6,目的ip为ipv4
|
||||||
dstIp.setSrcIp(srcIp.getSrcIpAddress());
|
dstIp.setSrcIp(srcIp.getSrcIpAddress());
|
||||||
dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -434,6 +489,9 @@ public abstract class BaseService {
|
|||||||
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){//64表示源ip为ipv6,目的ip为ipv4
|
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){//64表示源ip为ipv6,目的ip为ipv4
|
||||||
dstIp.setSrcIp(srcIp.getSrcIpAddress());
|
dstIp.setSrcIp(srcIp.getSrcIpAddress());
|
||||||
dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
|
dstIp.setSrcIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
|
||||||
|
}else {//all
|
||||||
|
dstIp.setSrcIp(srcIp.getSrcIpAddress());
|
||||||
|
dstIp.setSrcIpMask("255.255.255.255");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(srcIp.getDestIpAddress()!=null){
|
if(srcIp.getDestIpAddress()!=null){
|
||||||
@@ -450,6 +508,26 @@ public abstract class BaseService {
|
|||||||
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress());
|
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress());
|
||||||
dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
|
dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
|
||||||
dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString());
|
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 if(srcIp.getDestIpAddress().indexOf("-")!=-1){
|
}else if(srcIp.getDestIpAddress().indexOf("-")!=-1){
|
||||||
@@ -462,6 +540,23 @@ public abstract class BaseService {
|
|||||||
IPv6Network network = IPv6Network.fromTwoAddresses(address1,address2);
|
IPv6Network network = IPv6Network.fromTwoAddresses(address1,address2);
|
||||||
dstIp.setDstIp(address1.toString());
|
dstIp.setDstIp(address1.toString());
|
||||||
dstIp.setDstIpMask(network.getNetmask().asAddress().toString());
|
dstIp.setDstIpMask(network.getNetmask().asAddress().toString());
|
||||||
|
}else {
|
||||||
|
Pattern patternV4Range=Pattern.compile(Constants.IPV4_IP_RANGE_REGEXP);
|
||||||
|
Pattern patternV6Range=Pattern.compile(Constants.IPV6_IP_RANGE_REGEXP);
|
||||||
|
Matcher matcherV4Range=patternV4Range.matcher(srcIp.getDestIpAddress());
|
||||||
|
Matcher matcherV6Range=patternV6Range.matcher(srcIp.getDestIpAddress());
|
||||||
|
if(matcherV4Range.matches()) {
|
||||||
|
dstIp.setDstIp(srcIp.getDestIpAddress().split("-")[0]);
|
||||||
|
dstIp.setDstIpMask(IpUtil.getMask(srcIp.getDestIpAddress().split("-")[0], srcIp.getDestIpAddress().split("-")[1]));
|
||||||
|
}else if(matcherV6Range.matches()) {
|
||||||
|
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 {
|
||||||
|
throw new RuntimeException("Invalid IP range format");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
@@ -471,6 +566,20 @@ public abstract class BaseService {
|
|||||||
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==46){//46表示源ip为ipv4,目的ip为ipv6
|
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==46){//46表示源ip为ipv4,目的ip为ipv6
|
||||||
dstIp.setDstIp(srcIp.getDestIpAddress());
|
dstIp.setDstIp(srcIp.getDestIpAddress());
|
||||||
dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -481,6 +590,9 @@ public abstract class BaseService {
|
|||||||
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==46){//46表示源ip为ipv4,目的ip为ipv6
|
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==46){//46表示源ip为ipv4,目的ip为ipv6
|
||||||
dstIp.setDstIp(srcIp.getDestIpAddress());
|
dstIp.setDstIp(srcIp.getDestIpAddress());
|
||||||
dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
|
dstIp.setDstIpMask("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
|
||||||
|
}else {//all
|
||||||
|
dstIp.setDstIp(srcIp.getDestIpAddress());
|
||||||
|
dstIp.setDstIpMask("255.255.255.255");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(srcIp.getSrcPort()!=null){
|
if(srcIp.getSrcPort()!=null){
|
||||||
|
|||||||
Reference in New Issue
Block a user