diff --git a/src/main/java/com/dispose/ability/impl/YiYangAbilityImpl.java b/src/main/java/com/dispose/ability/impl/YiYangAbilityImpl.java index 874382ab..add867c9 100644 --- a/src/main/java/com/dispose/ability/impl/YiYangAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/YiYangAbilityImpl.java @@ -4,6 +4,7 @@ import com.dispose.ability.DisposeAbility; import com.dispose.common.DisposeCapacityType; import com.dispose.common.DisposeObjectType; import com.dispose.common.ErrorCode; +import com.dispose.common.Helper; import com.dispose.common.IpAddrType; import com.dispose.common.NetflowDirection; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; @@ -12,6 +13,8 @@ import com.dispose.pojo.vo.DeviceFirewareInfo; import com.dispose.yiyang.dispose.common.YiYangDisposeAbilityRsp; import com.dispose.yiyang.dispose.common.YiYangLoginRsp; import com.dispose.yiyang.dispose.protocol.YiYangInterface; +import inet.ipaddr.IPAddress; +import inet.ipaddr.IPAddressString; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -229,7 +232,34 @@ public class YiYangAbilityImpl implements DisposeAbility { */ @Override public boolean isCarryProtectIp(String ipAddr) { - return true; + boolean ret = false; + IPAddress addr = new IPAddressString(ipAddr).getAddress(); + synchronized (this) { + if (addr.isIPv4()) { + ret = protectIpV4.stream().anyMatch(v -> Helper.ipInRange(v, ipAddr)); + } + + if (addr.isIPv6()) { + ret = protectIpV6.stream().anyMatch(v -> Helper.ipInRange(v, ipAddr)); + } + } + + if (!ret) { + // 更新设备防护IP + getDisposeDeviceProtectObject(); + + synchronized (this) { + if (addr.isIPv4()) { + ret = protectIpV4.stream().anyMatch(v -> Helper.ipInRange(v, ipAddr)); + } + + if (addr.isIPv6()) { + ret = protectIpV6.stream().anyMatch(v -> Helper.ipInRange(v, ipAddr)); + } + } + } + + return ret; } /**