From 1f1abbfe4b1b39a1dd80d734337195d3ca6922fb Mon Sep 17 00:00:00 2001 From: HuangXin Date: Thu, 14 Jan 2021 10:18:44 +0800 Subject: [PATCH] =?UTF-8?q?OCT=20REM:=201.=20=E4=BF=AE=E6=AD=A3=E8=BF=AA?= =?UTF-8?q?=E6=99=AE=E9=98=B2=E6=8A=A4=E5=AF=B9=E8=B1=A1=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ability/impl/DpTechBypassAbilityImpl.java | 58 ++++++++++++++----- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/DpTechBypassAbilityImpl.java b/src/main/java/com/dispose/ability/impl/DpTechBypassAbilityImpl.java index a0a13a73..189d3225 100644 --- a/src/main/java/com/dispose/ability/impl/DpTechBypassAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/DpTechBypassAbilityImpl.java @@ -1,5 +1,6 @@ package com.dispose.ability.impl; +import com.dispose.common.ConstValue; import com.dispose.common.DisposeConfigValue; import com.dispose.common.DpTechConfigValue; import com.dispose.common.IpAddrType; @@ -13,6 +14,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Hashtable; +import java.util.regex.Pattern; /** * The type Dp tech bypass ability. @@ -79,7 +81,7 @@ public class DpTechBypassAbilityImpl extends DpTechAbilityImpl { @Override public void getDisposeDeviceProtectObject() { try { - log.info("++++Begging DPTech Get All Protection Objects"); + log.debug("++++Begging DPTech Get All Protection Objects"); ArrayOfProtectionObjectDataForService ret = getCleanTypePort().getAllProtectionObjectFromUMC(); if (ret == null) { @@ -103,32 +105,58 @@ public class DpTechBypassAbilityImpl extends DpTechAbilityImpl { log.error("!!!!Remove Protection Object {} Error: {}", objName, rsp.getResultInfo().getValue()); } } else { - // 缓存所有防护对象 - DpProtectObject obj = DpProtectObject.builder() - .cleanupDevices(k.getCleaningDevices().getValue()) - .protectName(objName) - .detectionDevices(k.getDetectionDevices().getValue()) - .ipType(k.getIpType() == 0 ? IpAddrType.IPV4 : IpAddrType.IPV6) - .ipSegment(new Hashtable<>()) - .build(); + DpProtectObject obj; + + if (!umcObject.contains(objName)) { + // 获取防护对象 + obj = umcObject.get(objName); + } else { + obj = DpProtectObject.builder() + .cleanupDevices(k.getCleaningDevices().getValue()) + .protectName(objName) + .detectionDevices(k.getDetectionDevices().getValue()) + .ipType(k.getIpType() == 0 ? IpAddrType.IPV4 : IpAddrType.IPV6) + .ipSegment(new Hashtable<>()) + .build(); + // 添加到缓存 + umcObject.put(objName, obj); + } String ipSeg = k.getIpSegment().getValue(); log.debug("DpTech response type: {}, value: {}", k.getIpType(), ipSeg); + Hashtable tmpTable = new Hashtable<>(); + // 分割IP段 Arrays.stream(StringUtils.deleteWhitespace(ipSeg).split(",")).forEach(v -> { String ipValue = v.replaceAll("\\d+_", ""); String key = v.replace(ipValue, "").replace("_", ""); - // 添加到缓存 - obj.getIpSegment().put(key, ipValue); + + if (Pattern.matches(ConstValue.ipAddrSegmentReg(), ipValue)) { + // 添加到缓存 + tmpTable.put(key, ipValue); + } else { + // 删除异常段 + NtcRequestResultInfo rsp = getCleanTypePort().deleteProtectionObjectIPRangeForUMC(objName + , key); + + if (rsp.getResultRetVal() == 0) { + log.warn("!!!!Remove Exception Protection IpSegment {}, {} Succeed", objName, v); + } else { + log.warn("!!!!Remove Exception Protection IpSegment {}, {} Error: {}", objName, v, + rsp.getResultInfo().getValue()); + } + } + }); - // 添加到缓存 - umcObject.put(objName, obj); + // 判断是否需要更新IP段信息 + if(!obj.getIpSegment().equals(tmpTable)) { + obj.setIpSegment(tmpTable); + } } }); - log.info("----Finish DPTech Get All Protection Objects: {}", ret.getProtectionObjectDataForService() - .size()); + log.debug("----Finish DPTech Get All Protection Objects Succeed"); } catch (Exception ex) { log.error("----Exception DPTech Get All Protection Objects: {}", ex.getMessage()); }