From 16acbbbcae62c6792a634f56dc748a9e5dd2667c Mon Sep 17 00:00:00 2001 From: HuangXin Date: Wed, 27 Oct 2021 08:31:59 +0800 Subject: [PATCH] =?UTF-8?q?OCT=20REM:=201.=20=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BA2.0.8.7=202.=20=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E8=AE=BE=E5=A4=87=E6=8E=A5=E5=8F=A3=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E8=AE=BE=E5=A4=87=E8=BF=94=E5=9B=9Etoken=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../ability/impl/PengXinAbilityImpl.java | 198 +++++++++++------- .../java/com/dispose/common/ErrorCode.java | 23 +- .../dispose/protocol/PengXinInterface.java | 21 +- 4 files changed, 157 insertions(+), 87 deletions(-) diff --git a/pom.xml b/pom.xml index b7814aa0..40359a86 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ com.dispose dispose_platform - 2.0.8.6 + 2.0.8.7 dispose_platform Dispose Platform diff --git a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java index 4e98b45b..a3b6bfce 100644 --- a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java @@ -1,6 +1,7 @@ package com.dispose.ability.impl; import com.dispose.ability.DisposeAbility; +import com.dispose.common.CommonEnumHandler; import com.dispose.common.DisposeCapacityType; import com.dispose.common.DisposeConfigValue; import com.dispose.common.DisposeObjectType; @@ -28,19 +29,17 @@ import java.util.List; /** * The type Peng xin ability. - * - * @author */ @Slf4j public class PengXinAbilityImpl implements DisposeAbility { /** * The Protect ip v 4. */ - private final List protectIpV4 = new ArrayList<>(); + //private final List protectIpV4 = new ArrayList<>(); /** * The Protect ip v 6. */ - private final List protectIpV6 = new ArrayList<>(); + //private final List protectIpV6 = new ArrayList<>(); /** * The Restful interface. */ @@ -180,14 +179,18 @@ public class PengXinAbilityImpl implements DisposeAbility { ProtocolRespDTO rspInfo = restfulInterface.startDisposeTask(url, token, reqItems); - // 判断是否token过期 - if (rspInfo != null && reLogin(rspInfo, rspInfo.getMsgContent().getItems().get(0).getStatus())) { - rspInfo = restfulInterface.startDisposeTask(url, token, reqItems); + ErrorCode err = verifyInterfaceResp(rspInfo); + + if (err != ErrorCode.ERR_OK) { + log.error("----Error PengXin start clean {} server return {}", disposeObject, err.getMsg()); + return new MulReturnType<>(err, disposeObject); } - if (rspInfo == null || rspInfo.getCode() != ErrorCode.ERR_OK.getHttpCode()) { - log.error("----Error PengXin start clean {} server return error", disposeObject); - return new MulReturnType<>(ErrorCode.ERR_PENGXIN_ERROR, null); + err = verifyRespStatus(rspInfo.getMsgContent().getItems().get(0).getStatus()); + + if (err != ErrorCode.ERR_OK) { + log.error("----Error PengXin start clean {} server return {}", disposeObject, err.getMsg()); + return new MulReturnType<>(err, disposeObject); } if (rspInfo.getMsgContent().getItems().size() == 0) { @@ -247,14 +250,18 @@ public class PengXinAbilityImpl implements DisposeAbility { ProtocolRespDTO rspInfo = restfulInterface.stopDisposeTask(url, token, new String[]{taskId}); - // 判断是否token过期 - if (rspInfo != null && reLogin(rspInfo, rspInfo.getMsgContent().getItems().get(0).getStatus())) { - rspInfo = restfulInterface.stopDisposeTask(url, token, new String[]{taskId}); + ErrorCode err = verifyInterfaceResp(rspInfo); + + if (err != ErrorCode.ERR_OK) { + log.error("----Error PengXin start clean {} server return {}", taskId, err.getMsg()); + return new MulReturnType<>(err, null); } - if (rspInfo == null || rspInfo.getCode() != ErrorCode.ERR_OK.getHttpCode()) { - log.error("----Error PengXin stop task{} server return error", taskId); - return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, null); + err = verifyRespStatus(rspInfo.getMsgContent().getItems().get(0).getStatus()); + + if (err != ErrorCode.ERR_OK) { + log.error("----Error PengXin start clean {} server return {}", taskId, err.getMsg()); + return new MulReturnType<>(err, null); } if (rspInfo.getMsgContent().getItems().size() == 0) { @@ -359,53 +366,57 @@ public class PengXinAbilityImpl implements DisposeAbility { @Override public void getDisposeDeviceProtectObject() { // 集团一键处置线上环境,移除从设备获取能力信息相关接口调用 - // if (token == null || token.length() == 0) { // return; // } - -// try { -// String url = urlRootPath + "dispose_device/information/capacity"; // +// String url = urlRootPath + "dispose_device/information/capacity"; +// +// try { // ProtocolRespDTO rspInfo = restfulInterface.getDeviceDisposeAbility(url, token); // -// // 判断是否token过期 -// if (rspInfo != null && reLogin(rspInfo, rspInfo.getMsgContent().getStatus())) { -// rspInfo = restfulInterface.getDeviceDisposeAbility(url, token); +// ErrorCode err = verifyInterfaceResp(rspInfo); +// +// if (err != ErrorCode.ERR_OK) { +// log.error("----Error PengXin get dispose device protect object server {} return {}", url, token); +// return; // } // -// if (rspInfo != null && rspInfo.getCode() == ErrorCode.ERR_OK.getHttpCode() -// && rspInfo.getMsgContent().getStatus() == ErrorCode.ERR_OK.getCode()) { +// err = verifyRespStatus(rspInfo.getMsgContent().getStatus()); // -// rspInfo.getMsgContent().getCapacity().forEach(v -> { -// if (v.getObjectType().equals(DisposeObjectType.DOMAIN.getValue())) { -// log.error("Unsupported: {}", v.getObjectType()); -// } else if (v.getObjectType().equals(DisposeObjectType.URL.getValue())) { -// log.error("Unsupported: {}", v.getObjectType()); -// } else { -// synchronized (this) { +// if (err != ErrorCode.ERR_OK) { +// log.error("---Error PengXin get dispose device protect object server {} return {}", url, err.getMsg()); +// return; +// } // -// protectIpV4.clear(); -// protectIpV6.clear(); +// rspInfo.getMsgContent().getCapacity().forEach(v -> { +// if (v.getObjectType().equals(DisposeObjectType.DOMAIN.getValue())) { +// log.error("Unsupported: {}", v.getObjectType()); +// } else if (v.getObjectType().equals(DisposeObjectType.URL.getValue())) { +// log.error("Unsupported: {}", v.getObjectType()); +// } else { +// synchronized (this) { // -// if (v.getIpType() == null || v.getIpType().equals(IpAddrType.IPV4_IPV6.getValue())) { -// String [] allIpAddr = {null, "0.0.0.0", "0.0.0.0,::"}; +// protectIpV4.clear(); +// protectIpV6.clear(); // -// if(Arrays.asList(allIpAddr).contains(v.getDisposeIp())) { -// protectIpV4.add(""); -// protectIpV6.add(""); -// } -// } else if (v.getIpType().equals(IpAddrType.IPV4.getValue())) { +// if (v.getIpType() == null || v.getIpType().equals(IpAddrType.IPV4_IPV6.getValue())) { +// String [] allIpAddr = {null, "0.0.0.0", "0.0.0.0,::"}; +// +// if(Arrays.asList(allIpAddr).contains(v.getDisposeIp())) { // protectIpV4.add(""); -// } else if (v.getIpType().equals(IpAddrType.IPV6.getValue())) { // protectIpV6.add(""); // } +// } else if (v.getIpType().equals(IpAddrType.IPV4.getValue())) { +// protectIpV4.add(""); +// } else if (v.getIpType().equals(IpAddrType.IPV6.getValue())) { +// protectIpV6.add(""); // } // } -// }); -// -// } -// } catch (Exception ignored) { +// } +// }); +// } catch (Exception ex) { +// log.error("server {}({}) exception: {}", url, token, ex); // } } @@ -468,22 +479,25 @@ public class PengXinAbilityImpl implements DisposeAbility { ProtocolRespDTO rspInfo = restfulInterface.getDeviceTaskStatus(url, token, new String[]{taskId}); - // 判断是否token过期 - if (rspInfo != null && reLogin(rspInfo, rspInfo.getMsgContent().getItems().get(0).getStatus())) { - rspInfo = restfulInterface.getDeviceTaskStatus(url, token, new String[]{taskId}); + ErrorCode err = verifyInterfaceResp(rspInfo); + + if (err != ErrorCode.ERR_OK) { + log.error("----Error PengXin start clean {} server return {}", taskId, err.getMsg()); + return new MulReturnType<>(err, -1L); } - if (rspInfo != null) { - if (rspInfo.getCode() == ErrorCode.ERR_OK.getHttpCode()) { - int errCode = rspInfo.getMsgContent().getItems().get(0).getStatus(); - if (rspInfo.getMsgContent().getItems().size() == 0 || errCode != ErrorCode.ERR_OK.getCode()) { - return new MulReturnType<>(ErrorCode.ERR_NOSUCHTASK, -1L); - } - } - return new MulReturnType<>(ErrorCode.ERR_OK, rspInfo.getMsgContent().getItems().get(0).getTaskStatus()); - } else { - return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, -1L); + err = verifyRespStatus(rspInfo.getMsgContent().getItems().get(0).getStatus()); + + if (err != ErrorCode.ERR_OK) { + log.error("----Error PengXin start clean {} server return {}", taskId, err.getMsg()); + return new MulReturnType<>(err, -1L); } + + if (rspInfo.getMsgContent().getItems().size() == 0) { + return new MulReturnType<>(ErrorCode.ERR_NOSUCHTASK, -1L); + } + + return new MulReturnType<>(ErrorCode.ERR_OK, rspInfo.getMsgContent().getItems().get(0).getTaskStatus()); } catch (Exception ignored) { return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, -1L); } @@ -505,27 +519,53 @@ public class PengXinAbilityImpl implements DisposeAbility { } } - /** - * reLogin. - */ - private boolean reLogin(ProtocolRespDTO rspInfo, int status) { - try { - // 判断是否token过期 - if (rspInfo.getCode() == HttpServletResponse.SC_UNAUTHORIZED) { - // 重新登录获取 token - upgradeToken(); - return true; - } - if (rspInfo.getCode() == HttpServletResponse.SC_OK && - (status == ErrorCode.ERR_LOGOUT.getCode() || status == ErrorCode.ERR_TOKENTIMEOUT.getCode() || - status == ErrorCode.ERR_TOKENNOTFOUND.getCode())) { - upgradeToken(); - return true; - } - return false; + /** + * Verify interface resp error code. + * + * @param the type parameter + * @param rspInfo the rsp info + * @return the error code + */ + private ErrorCode verifyInterfaceResp(ProtocolRespDTO rspInfo) { + if (rspInfo == null) { + return ErrorCode.ERR_PENGXIN_ERROR; + } else if (rspInfo.getCode() == HttpServletResponse.SC_UNAUTHORIZED) { + upgradeToken(); + return ErrorCode.ERR_TOKENTIMEOUT; + } else if (rspInfo.getCode() != HttpServletResponse.SC_OK) { + return ErrorCode.ERR_PENGXIN_ERROR; + } + + if (rspInfo.getMsgContent() == null) { + return ErrorCode.ERR_PARAMS; + } + + return ErrorCode.ERR_OK; + } + + /** + * Verify resp status error code. + * + * @param status the status + * @return the error code + */ + private ErrorCode verifyRespStatus(int status) { + if (status == ErrorCode.ERR_LOGOUT.getCode() + || status == ErrorCode.ERR_TOKENTIMEOUT.getCode() + || status == ErrorCode.ERR_TOKENNOTFOUND.getCode()) { + upgradeToken(); + return ErrorCode.ERR_TOKENTIMEOUT; + } + + try { + return CommonEnumHandler.codeOf(ErrorCode.class, status); } catch (Exception ignored) { - return false; + if (status == ErrorCode.ERR_OK.getCode()) { + return ErrorCode.ERR_OK; + } else { + return ErrorCode.ERR_CALLDEVICE; + } } } @@ -538,7 +578,7 @@ public class PengXinAbilityImpl implements DisposeAbility { // 集团一键处置线上环境,不再定时获取设备能力信息 // 更新防护对象 - //getDisposeDeviceProtectObject(); + getDisposeDeviceProtectObject(); // 更新心跳状态 if (timerCnt++ % DisposeConfigValue.HEART_PERIOD_OF_SECOND == 0) { diff --git a/src/main/java/com/dispose/common/ErrorCode.java b/src/main/java/com/dispose/common/ErrorCode.java index 467c6dfb..f7051a41 100644 --- a/src/main/java/com/dispose/common/ErrorCode.java +++ b/src/main/java/com/dispose/common/ErrorCode.java @@ -7,7 +7,7 @@ import javax.servlet.http.HttpServletResponse; * * @author */ -public enum ErrorCode { +public enum ErrorCode implements BaseEnum { /** * The Err ok. */ @@ -365,4 +365,25 @@ public enum ErrorCode { public String getMsg() { return errMsg; } + + + /** + * Gets value. + * + * @return the value + */ + @Override + public Integer getValue() { + return this.errno; + } + + /** + * Gets description. + * + * @return the description + */ + @Override + public String getDescription() { + return this.errMsg; + } } diff --git a/src/main/java/com/pengxin/dispose/protocol/PengXinInterface.java b/src/main/java/com/pengxin/dispose/protocol/PengXinInterface.java index b6977c85..5d8c3387 100644 --- a/src/main/java/com/pengxin/dispose/protocol/PengXinInterface.java +++ b/src/main/java/com/pengxin/dispose/protocol/PengXinInterface.java @@ -1,5 +1,6 @@ package com.pengxin.dispose.protocol; +import com.dispose.common.CommonEnumHandler; import com.dispose.common.ErrorCode; import com.dispose.pojo.dto.protocol.base.BaseProtocolDTO; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; @@ -86,19 +87,27 @@ public class PengXinInterface { null, PengXinBaseResp.class, RequestMethod.GET); - if (rspInfo != null && rspInfo.getMsgContent() != null) { + if (rspInfo != null) { if (rspInfo.getCode() == HttpServletResponse.SC_UNAUTHORIZED) { return ErrorCode.ERR_LOGOUT; - } else if (rspInfo.getCode() == HttpServletResponse.SC_OK) { - if(rspInfo.getMsgContent().getStatus() != ErrorCode.ERR_OK.getCode()){ - return ErrorCode.ERR_LOGOUT; - } else { + } + + if (rspInfo.getMsgContent() == null) { + return ErrorCode.ERR_PARAMS; + } + + try { + return CommonEnumHandler.codeOf(ErrorCode.class, rspInfo.getCode()); + } catch (Exception ignored) { + if (rspInfo.getCode() == ErrorCode.ERR_OK.getCode()) { return ErrorCode.ERR_OK; + } else { + return ErrorCode.ERR_CALLDEVICE; } } } - return ErrorCode.ERR_UNKNOWNCMD; + return ErrorCode.ERR_PARAMS; } /**