From 08d68b66aba4b2108aab9baafaf29c83ff8e2755 Mon Sep 17 00:00:00 2001 From: HuangXin Date: Thu, 12 Nov 2020 16:28:58 +0800 Subject: [PATCH 01/30] =?UTF-8?q?OCT=20REM:=201.=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=8E=B7=E5=8F=96=E5=A4=84=E7=BD=AE=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=202.=20=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E5=A4=84=E7=BD=AE=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dispose/ability/DisposeAbility.java | 8 +++ .../ability/impl/DpTechAbilityImpl.java | 11 ++++ .../ability/impl/HaoHanAbilityImpl.java | 11 ++++ .../ability/impl/PengXinAbilityImpl.java | 43 ++++++++++++++++ .../ability/impl/VirtualAbilityImpl.java | 11 ++++ .../controller/DisposeTaskController.java | 3 +- .../dispose/manager/DeviceTaskManager.java | 8 +++ .../manager/impl/DeviceTaskManagerImpl.java | 12 +++++ .../com/dispose/mapper/DeviceTaskMapper.java | 10 ++++ .../protocol/task/GetDeviceTaskDetail.java | 4 ++ .../com/dispose/pojo/entity/DeviceTask.java | 4 ++ .../impl/DeviceTaskManagerServiceImpl.java | 50 +++++++++++++++++++ .../dispose/common/PengXinTaskStatusItem.java | 48 ++++++++++++++++++ .../dispose/common/PengXinTaskStatusRsp.java | 30 +++++++++++ .../dispose/protocol/PengXinInterface.java | 26 ++++++++++ src/main/resources/db/schema.sql | 1 + src/main/resources/mappers/DeviceTask.xml | 11 +++- src/main/resources/mappers/DisposeTask.xml | 4 ++ src/main/resources/test_db/unit_test.sql | 4 +- 19 files changed, 295 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/pengxin/dispose/common/PengXinTaskStatusItem.java create mode 100644 src/main/java/com/pengxin/dispose/common/PengXinTaskStatusRsp.java diff --git a/src/main/java/com/dispose/ability/DisposeAbility.java b/src/main/java/com/dispose/ability/DisposeAbility.java index 35f37180..2e0013fa 100644 --- a/src/main/java/com/dispose/ability/DisposeAbility.java +++ b/src/main/java/com/dispose/ability/DisposeAbility.java @@ -56,6 +56,14 @@ public interface DisposeAbility { @Nullable Integer attackType, @Nullable String taskId); + /** + * Task status mul return type. + * + * @param taskId the task id + * @return the mul return type + */ + MulReturnType taskStatus(Long taskId); + /** * Gets ability device fireware. * diff --git a/src/main/java/com/dispose/ability/impl/DpTechAbilityImpl.java b/src/main/java/com/dispose/ability/impl/DpTechAbilityImpl.java index 8b8df322..04197943 100644 --- a/src/main/java/com/dispose/ability/impl/DpTechAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/DpTechAbilityImpl.java @@ -316,4 +316,15 @@ public class DpTechAbilityImpl implements DisposeAbility { return ret; } + + /** + * Task status mul return type. + * + * @param taskId the task id + * @return the mul return type + */ + @Override + public MulReturnType taskStatus(Long taskId) { + return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L); + } } diff --git a/src/main/java/com/dispose/ability/impl/HaoHanAbilityImpl.java b/src/main/java/com/dispose/ability/impl/HaoHanAbilityImpl.java index 0202c3e9..10290569 100644 --- a/src/main/java/com/dispose/ability/impl/HaoHanAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/HaoHanAbilityImpl.java @@ -214,4 +214,15 @@ public class HaoHanAbilityImpl implements DisposeAbility { IPAddress addr = new IPAddressString(ipAddr).getAddress(); return addr.isIPv4(); } + + /** + * Task status mul return type. + * + * @param taskId the task id + * @return the mul return type + */ + @Override + public MulReturnType taskStatus(Long taskId) { + return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L); + } } diff --git a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java index be4433d0..7d69e63d 100644 --- a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java @@ -15,6 +15,7 @@ import com.pengxin.dispose.common.PengXinLoginRsp; import com.pengxin.dispose.common.PengXinStartTaskItem; import com.pengxin.dispose.common.PengXinStartTaskRsp; import com.pengxin.dispose.common.PengXinStopTaskRsp; +import com.pengxin.dispose.common.PengXinTaskStatusRsp; import com.pengxin.dispose.protocol.PengXinInterface; import inet.ipaddr.IPAddress; import inet.ipaddr.IPAddressString; @@ -407,6 +408,48 @@ public class PengXinAbilityImpl implements DisposeAbility { return ret; } + /** + * Task status mul return type. + * + * @param taskId the task id + * @return the mul return type + */ + @Override + public MulReturnType taskStatus(Long taskId) { + if (token == null || token.length() == 0) { + return new MulReturnType<>(ErrorCode.ERR_LOGOUT, -1L); + } + + try { + String url = urlRootPath + "dispose_device/task/get"; + + ProtocolRespDTO rspInfo = restfulInterface.getDeviceTaskStatus(url, token, + new String[] {String.valueOf(taskId)}); + + // 判断是否token过期 + if (rspInfo != null && rspInfo.getCode() == HttpServletResponse.SC_UNAUTHORIZED) { + // 重新登录获取 token + upgradeToken(); + rspInfo = restfulInterface.getDeviceTaskStatus(urlRootPath, token, + new String[] {String.valueOf(taskId)}); + } + + if (rspInfo != null && rspInfo.getCode() == ErrorCode.ERR_OK.getHttpCode()) { + + 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()); + } else { + return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, -1L); + } + } catch (Exception ignored) { + return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, -1L); + } + } + /** * Upgrade token. */ diff --git a/src/main/java/com/dispose/ability/impl/VirtualAbilityImpl.java b/src/main/java/com/dispose/ability/impl/VirtualAbilityImpl.java index 6f92bcfb..633cdb5c 100644 --- a/src/main/java/com/dispose/ability/impl/VirtualAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/VirtualAbilityImpl.java @@ -132,4 +132,15 @@ public class VirtualAbilityImpl implements DisposeAbility { public boolean isCarryProtectIp(String ipAddr) { return true; } + + /** + * Task status mul return type. + * + * @param taskId the task id + * @return the mul return type + */ + @Override + public MulReturnType taskStatus(Long taskId) { + return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L); + } } diff --git a/src/main/java/com/dispose/controller/DisposeTaskController.java b/src/main/java/com/dispose/controller/DisposeTaskController.java index ca056266..70a9001a 100644 --- a/src/main/java/com/dispose/controller/DisposeTaskController.java +++ b/src/main/java/com/dispose/controller/DisposeTaskController.java @@ -101,7 +101,7 @@ public class DisposeTaskController { Long devId = Long.parseLong(Optional.ofNullable(req.getDeviceId()).orElse("-1")); Long aId = userAccountService.getUserIdByAuthHead(Objects.requireNonNull(headers.get("Authorization")).get(0)); DisposeCapacityType capType = CommonEnumHandler.codeOf(DisposeCapacityType.class, req.getType()); - String endTime = String.valueOf(req.getDisposeTime()); + String endTime = String.valueOf(req.getDisposeTime() == -1 ? 52560000 : req.getDisposeTime()); NetflowDirection netDir = CommonEnumHandler.codeOf(NetflowDirection.class, Optional.ofNullable(req.getFlowDirection()).orElse(2)); Long attackType = DDoSAttackType.getTypeMaskFromAttackType(Optional.ofNullable(req.getAttackType()) @@ -399,6 +399,7 @@ public class DisposeTaskController { .devId(String.valueOf(k.getDeviceId())) .externId(String.valueOf(k.getExternId())) .status(k.getStatus()) + .devStatus(k.getDevStatus()) .build(); taskDetail.getDeviceTask().add(deviceTaskDetail); }); diff --git a/src/main/java/com/dispose/manager/DeviceTaskManager.java b/src/main/java/com/dispose/manager/DeviceTaskManager.java index a1ee89b5..0e3cdfb1 100644 --- a/src/main/java/com/dispose/manager/DeviceTaskManager.java +++ b/src/main/java/com/dispose/manager/DeviceTaskManager.java @@ -45,6 +45,14 @@ public interface DeviceTaskManager { */ boolean changeDisposeDeviceTaskInfoStatus(Long id, DisposeTaskStatus status); + /** + * Gets dispose device task status. + * + * @param id the id + * @return the dispose device task status + */ + int changeDisposeDeviceTaskInfoDevStatus(Long id, Long devStatus); + /** * Sets exec attack type. * diff --git a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java index 1a855d14..a0c57b4d 100644 --- a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java @@ -79,6 +79,18 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager { return deviceTaskMapper.changeTaskStatus(id, status) == 1; } + /** + * Change dispose device task info dev status long. + * + * @param id the id + * @param devStatus the dev status + * @return the long + */ + @Override + public int changeDisposeDeviceTaskInfoDevStatus(Long id, Long devStatus) { + return deviceTaskMapper.changeTaskDevStatus(id, devStatus); + } + /** * Sets exec attack type. * diff --git a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java index 6fc53654..538bad81 100644 --- a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java +++ b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java @@ -85,6 +85,16 @@ public interface DeviceTaskMapper { int changeTaskStatus(@Param("id") Long id, @Param("status") DisposeTaskStatus status); + /** + * Change task dev status int. + * + * @param id the id + * @param status the status + * @return the int + */ + int changeTaskDevStatus(@Param("id") Long id, + @Param("status") Long status); + /** * Change exec attack type in value int. * diff --git a/src/main/java/com/dispose/pojo/dto/protocol/task/GetDeviceTaskDetail.java b/src/main/java/com/dispose/pojo/dto/protocol/task/GetDeviceTaskDetail.java index 5a548c3a..3013fa66 100644 --- a/src/main/java/com/dispose/pojo/dto/protocol/task/GetDeviceTaskDetail.java +++ b/src/main/java/com/dispose/pojo/dto/protocol/task/GetDeviceTaskDetail.java @@ -31,6 +31,10 @@ public class GetDeviceTaskDetail { * The Extern id. */ private String externId; + /** + * The Dev status. + */ + private Long devStatus; /** * The Status. */ diff --git a/src/main/java/com/dispose/pojo/entity/DeviceTask.java b/src/main/java/com/dispose/pojo/entity/DeviceTask.java index ff7ee7d1..853fde56 100644 --- a/src/main/java/com/dispose/pojo/entity/DeviceTask.java +++ b/src/main/java/com/dispose/pojo/entity/DeviceTask.java @@ -87,4 +87,8 @@ public class DeviceTask implements Serializable { * The Status. */ private Long status; + /** + * The Dev status. + */ + private Long devStatus; } diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 60e2db30..285d9069 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -682,6 +682,53 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { } } + /** + * Device task status schedule. + */ + public void deviceTaskStatusSchedule() { + // 遍历所有新的设备处置任务 + for (DeviceTask v : deviceTaskManager.getStartedDisposeDeviceTaskInfo()) { + DisposeTask task = disposeTaskManager.getDisposeTaskById(v.getTaskId()); + + // 保护代码,理论上不存在该情况 + assert task != null; + + // 获取设备 + AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(v.getDeviceId()); + + // 如果设备已经删除或者禁用,跳过处理 + if (ai == null) { + // 设置任务状态为已完成 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(v.getId(), DisposeTaskStatus.TASK_FINISHED); + continue; + } + + // 对处置IP生成一个唯一的操作标识符 + String taskStatusKey = v.getId() + "Status" + ai.getDev().getDeviceType().getDescription(); + + if (taskCache.containsKey(taskStatusKey)) { + continue; + } + + // 设置标志,避免对同一个IP重复调用停止处置命令 + taskCache.put(taskStatusKey, true); + + // 任务预计结束5分钟内, + if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 5 * 60) { + if (v.getEndTime() == null && Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) { + MulReturnType ret = ai.getDb().taskStatus(v.getId()); + + if (ret.getFirstParam() == ErrorCode.ERR_OK) { + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getId(), ret.getSecondParam()); + } + } + } + + // 处置命令调用结束,允许下一次停止命令调用 + taskCache.remove(taskStatusKey); + } + } + /** * Schedule runner thread. */ @@ -697,5 +744,8 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 处置设备停止任务 deviceTaskStopSchedule(); + + // 定时刷新设备任务状态 + deviceTaskStatusSchedule(); } } diff --git a/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusItem.java b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusItem.java new file mode 100644 index 00000000..2abebcf4 --- /dev/null +++ b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusItem.java @@ -0,0 +1,48 @@ +package com.pengxin.dispose.common; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * The type Peng xin tast status item. + * + * @author + */ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PengXinTaskStatusItem extends PengXinBaseResp { + /** + * The Task id. + */ + private String taskId; + /** + * The Type. + */ + private Integer type; + /** + * The Object type. + */ + private Integer objectType; + /** + * The Dispose object. + */ + private String disposeObject; + /** + * The Start time. + */ + private Long startTime; + /** + * The Dispose time. + */ + private Long disposeTime; + /** + * The Task status. + */ + private Long taskStatus; +} diff --git a/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusRsp.java b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusRsp.java new file mode 100644 index 00000000..ea31c5c6 --- /dev/null +++ b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusRsp.java @@ -0,0 +1,30 @@ +package com.pengxin.dispose.common; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * The type Peng xin task status rsp. + * + * @author + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PengXinTaskStatusRsp { + + /** + * The Device name. + */ + private String deviceName; + + /** + * The Items. + */ + private List items; +} diff --git a/src/main/java/com/pengxin/dispose/protocol/PengXinInterface.java b/src/main/java/com/pengxin/dispose/protocol/PengXinInterface.java index d1825c60..0e92a39b 100644 --- a/src/main/java/com/pengxin/dispose/protocol/PengXinInterface.java +++ b/src/main/java/com/pengxin/dispose/protocol/PengXinInterface.java @@ -13,6 +13,7 @@ import com.pengxin.dispose.common.PengXinStartTaskReq; import com.pengxin.dispose.common.PengXinStartTaskRsp; import com.pengxin.dispose.common.PengXinStopTaskReq; import com.pengxin.dispose.common.PengXinStopTaskRsp; +import com.pengxin.dispose.common.PengXinTaskStatusRsp; import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletResponse; @@ -160,4 +161,29 @@ public class PengXinInterface { PengXinDisposeAbilityRsp.class, RequestMethod.GET); } + + /** + * Gets device task status. + * + * @param baseUrlPath the base url path + * @param token the token + * @param taskId the task id + * @return the device task status + */ + public ProtocolRespDTO getDeviceTaskStatus(String baseUrlPath, String token, String[] taskId) { + BaseProtocolDTO reqInfo = new BaseProtocolDTO<>(); + + reqInfo.setMsgContent(new PengXinStopTaskReq()); + + reqInfo.getMsgContent().setTaskId(taskId); + reqInfo.setCryptoType(this.cryptoType); + reqInfo.setVer(this.ver); + reqInfo.setTimeStamp(System.currentTimeMillis()); + + return RestfulInterface.baseProRun(baseUrlPath, + token, + reqInfo, + PengXinTaskStatusRsp.class, + RequestMethod.POST); + } } diff --git a/src/main/resources/db/schema.sql b/src/main/resources/db/schema.sql index f2cbf521..b3e85c69 100644 --- a/src/main/resources/db/schema.sql +++ b/src/main/resources/db/schema.sql @@ -36,6 +36,7 @@ CREATE TABLE `device_task` `externId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '扩展任务ID', `errRetry` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调用失败重试次数', `status` int(10) NOT NULL DEFAULT 0 COMMENT '任务状态', + `devStatus` int(10) NOT NULL DEFAULT 0 COMMENT '设备任务状态', PRIMARY KEY (`id`) USING BTREE, INDEX `task_info_ibfk_1` (`taskId`) USING BTREE, INDEX `task_info_ibfk_2` (`deviceId`) USING BTREE, diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index b29db003..7bf6e499 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -14,6 +14,7 @@ + @@ -24,11 +25,11 @@ - INSERT IGNORE INTO device_task(taskId, deviceId, taskAttackType, status) + INSERT IGNORE INTO device_task(taskId, deviceId, taskAttackType, status, devStatus) VALUES (#{task.taskId}, #{task.deviceId}, #{task.taskAttackType}, - ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()}) + ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()}, 0) @@ -87,6 +88,12 @@ WHERE id = #{id} + + UPDATE device_task + SET status = #{status} + WHERE id = #{id} + + UPDATE device_task SET execAttackTypeIn = #{attackTypeValue} diff --git a/src/main/resources/mappers/DisposeTask.xml b/src/main/resources/mappers/DisposeTask.xml index 67b6375d..71ce2a2e 100644 --- a/src/main/resources/mappers/DisposeTask.xml +++ b/src/main/resources/mappers/DisposeTask.xml @@ -30,6 +30,7 @@ + @@ -61,6 +62,7 @@ ti.attackTypeStatusOut attackTypeStatusOut, ti.externId externId, ti.errRetry errRetry, + ti.devStatus devStatus, ti.status status FROM dispose_task dt LEFT JOIN device_task ti on dt.id = ti.taskId @@ -84,6 +86,7 @@ ti.attackTypeStatusOut attackTypeStatusOut, ti.externId externId, ti.errRetry errRetry, + ti.devStatus devStatus, ti.status status FROM dispose_task dt LEFT JOIN device_task ti on dt.id = ti.taskId @@ -103,6 +106,7 @@ ti.attackTypeStatusOut attackTypeStatusOut, ti.externId externId, ti.errRetry errRetry, + ti.devStatus devStatus, ti.status status FROM dispose_task dt LEFT JOIN device_task ti on dt.id = ti.taskId diff --git a/src/main/resources/test_db/unit_test.sql b/src/main/resources/test_db/unit_test.sql index 3a13b4b8..595e5178 100644 --- a/src/main/resources/test_db/unit_test.sql +++ b/src/main/resources/test_db/unit_test.sql @@ -36,6 +36,7 @@ CREATE TABLE `device_task` `externId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '扩展任务ID', `errRetry` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调用失败重试次数', `status` int(10) NOT NULL DEFAULT 0 COMMENT '任务状态', + `devStatus` int(10) NOT NULL DEFAULT 0 COMMENT '设备任务状态', PRIMARY KEY (`id`) USING BTREE, INDEX `task_info_ibfk_1` (`taskId`) USING BTREE, INDEX `task_info_ibfk_2` (`deviceId`) USING BTREE, @@ -174,7 +175,8 @@ VALUES (1, -1, 1, -1, 0, '192.168.10.1', 1, CURRENT_TIMESTAMP, date_add(now(), i 8796093022207, 1024, 0); INSERT INTO `dispose_task` -VALUES (2, -1, 1, -1, 0, '192.168.10.2', 1, CURRENT_TIMESTAMP, date_add(now(), interval 60 MINUTE), null, 2, 8796093022207, +VALUES (2, -1, 1, -1, 0, '192.168.10.2', 1, CURRENT_TIMESTAMP, date_add(now(), interval 60 MINUTE), null, 2, + 8796093022207, 1024, 0); -- ---------------------------- From 29db84de76efe10a8e9cf39dd755ada1f8917f47 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Thu, 12 Nov 2020 16:42:51 +0800 Subject: [PATCH 02/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=8E=B7=E5=8F=96=E5=A4=84=E7=BD=AE=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E7=9A=84=E5=88=A4=E6=96=AD=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dispose/service/impl/DeviceTaskManagerServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 285d9069..c29c76cd 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -715,7 +715,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 任务预计结束5分钟内, if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 5 * 60) { - if (v.getEndTime() == null && Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) { + if (v.getEndTime() == null || Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) { MulReturnType ret = ai.getDb().taskStatus(v.getId()); if (ret.getFirstParam() == ErrorCode.ERR_OK) { From 78c4ff66e5cd2cadbbbbd2d6b018c3709d53e33f Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Thu, 12 Nov 2020 18:03:39 +0800 Subject: [PATCH 03/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E8=8E=B7=E5=8F=96=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ability/impl/PengXinAbilityImpl.java | 78 +++++++++++++------ 1 file changed, 53 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java index 7d69e63d..925d84c5 100644 --- a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java @@ -7,7 +7,12 @@ import com.dispose.common.ErrorCode; import com.dispose.common.Helper; import com.dispose.common.IpAddrType; import com.dispose.common.NetflowDirection; +import com.dispose.common.DisposeDeviceType; +import com.dispose.manager.DisposeTaskManager; +import com.dispose.mapper.DisposeDeviceMapper; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; +import com.dispose.pojo.entity.DeviceTask; +import com.dispose.pojo.entity.DisposeTask; import com.dispose.pojo.po.MulReturnType; import com.dispose.pojo.vo.DeviceFirewareInfo; import com.pengxin.dispose.common.PengXinDisposeAbilityRsp; @@ -24,9 +29,11 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; import javax.annotation.Nullable; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * The type Peng xin ability. @@ -35,6 +42,17 @@ import java.util.List; */ @Slf4j public class PengXinAbilityImpl implements DisposeAbility { + /** + * The Dispose task manager. + */ + @Resource + private DisposeTaskManager disposeTaskManager; + + /** + * The Dispose device mapper. + */ + @Resource + private DisposeDeviceMapper disposeDeviceMapper; /** * The Protect ip v 4. @@ -84,7 +102,7 @@ public class PengXinAbilityImpl implements DisposeAbility { /** * The Peng xin dispose type. */ - private final Integer[] pengXinDisposeType = new Integer[] {0, 4, 1, 3}; + private final Integer[] pengXinDisposeType = new Integer[]{0, 4, 1, 3}; /** * Gets peng xin task type. @@ -168,12 +186,12 @@ public class PengXinAbilityImpl implements DisposeAbility { } reqItems.add(PengXinStartTaskItem.builder() - .type(getPengXinTaskType(capType)) - .disposeObject(disposeObject) - .objectType(getPengXinObjectType(objectType)) - .disposeTime(duration) - .taskReqId(String.valueOf(taskReqId++)) - .build()); + .type(getPengXinTaskType(capType)) + .disposeObject(disposeObject) + .objectType(getPengXinObjectType(objectType)) + .disposeTime(duration) + .taskReqId(String.valueOf(taskReqId++)) + .build()); ProtocolRespDTO rspInfo = restfulInterface.startDisposeTask(url, token, reqItems); @@ -231,7 +249,7 @@ public class PengXinAbilityImpl implements DisposeAbility { } ProtocolRespDTO rspInfo = restfulInterface.stopDisposeTask(url, token, - new String[]{taskId}); + new String[]{taskId}); // 判断是否token过期 if (rspInfo != null && rspInfo.getCode() == HttpServletResponse.SC_UNAUTHORIZED) { @@ -261,18 +279,18 @@ public class PengXinAbilityImpl implements DisposeAbility { @Override public MulReturnType getAbilityDeviceFireware() { return new MulReturnType<>(ErrorCode.ERR_OK, - DeviceFirewareInfo.builder() - .vendor("PengXin") - .model("Unknown") - .firmware("Unknown") - .os("Linux Server") - .kernel("Linux") - .arch("x86_64") - .version("Unknown") - .memory(-1) - .freeMemory(-1) - .cpuUsed(-1) - .build()); + DeviceFirewareInfo.builder() + .vendor("PengXin") + .model("Unknown") + .firmware("Unknown") + .os("Linux Server") + .kernel("Linux") + .arch("x86_64") + .version("Unknown") + .memory(-1) + .freeMemory(-1) + .cpuUsed(-1) + .build()); } /** @@ -423,25 +441,35 @@ public class PengXinAbilityImpl implements DisposeAbility { try { String url = urlRootPath + "dispose_device/task/get"; + DisposeTask task = disposeTaskManager.getDisposeTaskById(taskId); + + if (task == null) { + return new MulReturnType<>(ErrorCode.ERR_NOSUCHTASK, -1L); + } + + //根据设备ID获取设备信息,判断任务列表中的设备为鹏信,获取externId + List dev = task.getDeviceTask().stream(). + filter(v -> disposeDeviceMapper.getDeviceById(v.getDeviceId()).getDeviceType() == DisposeDeviceType.PENGXIN_PLATFORM).collect(Collectors.toList()); + ProtocolRespDTO rspInfo = restfulInterface.getDeviceTaskStatus(url, token, - new String[] {String.valueOf(taskId)}); + new String[]{String.valueOf(dev.get(0).getExternId())}); // 判断是否token过期 if (rspInfo != null && rspInfo.getCode() == HttpServletResponse.SC_UNAUTHORIZED) { // 重新登录获取 token upgradeToken(); - rspInfo = restfulInterface.getDeviceTaskStatus(urlRootPath, token, - new String[] {String.valueOf(taskId)}); + rspInfo = restfulInterface.getDeviceTaskStatus(url, token, + new String[]{String.valueOf(dev.get(0).getExternId())}); } if (rspInfo != null && rspInfo.getCode() == ErrorCode.ERR_OK.getHttpCode()) { - if(rspInfo.getMsgContent().getItems().size() == 0) { + 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()); + rspInfo.getMsgContent().getItems().get(0).getTaskStatus()); } else { return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, -1L); } From 374ecbcb5f3d497876b48059714e921723206137 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Thu, 12 Nov 2020 18:12:18 +0800 Subject: [PATCH 04/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=94=B9=E5=8F=98=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E7=8A=B6=E6=80=81SQL=E8=AF=AD=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/dispose/mapper/DeviceTaskMapper.java | 4 ++-- src/main/resources/mappers/DeviceTask.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java index 538bad81..4f89f8c6 100644 --- a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java +++ b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java @@ -89,11 +89,11 @@ public interface DeviceTaskMapper { * Change task dev status int. * * @param id the id - * @param status the status + * @param devStatus the devStatus * @return the int */ int changeTaskDevStatus(@Param("id") Long id, - @Param("status") Long status); + @Param("devStatus") Long devStatus); /** * Change exec attack type in value int. diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index 7bf6e499..63325b59 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -90,7 +90,7 @@ UPDATE device_task - SET status = #{status} + SET devStatus = #{devStatus} WHERE id = #{id} From b0084cf06384d1c035ee2705a418a4d925f469eb Mon Sep 17 00:00:00 2001 From: HuangXin Date: Fri, 13 Nov 2020 17:09:08 +0800 Subject: [PATCH 05/30] =?UTF-8?q?OCT=20REM:=201.=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=AE=BE=E5=A4=87id=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/dispose/ability/DisposeAbility.java | 2 +- .../com/dispose/ability/impl/DpTechAbilityImpl.java | 2 +- .../com/dispose/ability/impl/HaoHanAbilityImpl.java | 2 +- .../com/dispose/ability/impl/PengXinAbilityImpl.java | 2 +- .../com/dispose/ability/impl/VirtualAbilityImpl.java | 2 +- .../java/com/dispose/manager/DeviceTaskManager.java | 2 +- .../dispose/manager/impl/DeviceTaskManagerImpl.java | 2 +- src/main/java/com/dispose/mapper/DeviceTaskMapper.java | 2 +- .../service/impl/DeviceTaskManagerServiceImpl.java | 10 +++++++--- 9 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/dispose/ability/DisposeAbility.java b/src/main/java/com/dispose/ability/DisposeAbility.java index 2e0013fa..4fdb4b8c 100644 --- a/src/main/java/com/dispose/ability/DisposeAbility.java +++ b/src/main/java/com/dispose/ability/DisposeAbility.java @@ -62,7 +62,7 @@ public interface DisposeAbility { * @param taskId the task id * @return the mul return type */ - MulReturnType taskStatus(Long taskId); + MulReturnType taskStatus(String taskId); /** * Gets ability device fireware. diff --git a/src/main/java/com/dispose/ability/impl/DpTechAbilityImpl.java b/src/main/java/com/dispose/ability/impl/DpTechAbilityImpl.java index 04197943..41b27a13 100644 --- a/src/main/java/com/dispose/ability/impl/DpTechAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/DpTechAbilityImpl.java @@ -324,7 +324,7 @@ public class DpTechAbilityImpl implements DisposeAbility { * @return the mul return type */ @Override - public MulReturnType taskStatus(Long taskId) { + public MulReturnType taskStatus(String taskId) { return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L); } } diff --git a/src/main/java/com/dispose/ability/impl/HaoHanAbilityImpl.java b/src/main/java/com/dispose/ability/impl/HaoHanAbilityImpl.java index 10290569..2242cfbc 100644 --- a/src/main/java/com/dispose/ability/impl/HaoHanAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/HaoHanAbilityImpl.java @@ -222,7 +222,7 @@ public class HaoHanAbilityImpl implements DisposeAbility { * @return the mul return type */ @Override - public MulReturnType taskStatus(Long taskId) { + public MulReturnType taskStatus(String taskId) { return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L); } } diff --git a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java index 7d69e63d..4d7468f7 100644 --- a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java @@ -415,7 +415,7 @@ public class PengXinAbilityImpl implements DisposeAbility { * @return the mul return type */ @Override - public MulReturnType taskStatus(Long taskId) { + public MulReturnType taskStatus(String taskId) { if (token == null || token.length() == 0) { return new MulReturnType<>(ErrorCode.ERR_LOGOUT, -1L); } diff --git a/src/main/java/com/dispose/ability/impl/VirtualAbilityImpl.java b/src/main/java/com/dispose/ability/impl/VirtualAbilityImpl.java index 633cdb5c..d9520f65 100644 --- a/src/main/java/com/dispose/ability/impl/VirtualAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/VirtualAbilityImpl.java @@ -140,7 +140,7 @@ public class VirtualAbilityImpl implements DisposeAbility { * @return the mul return type */ @Override - public MulReturnType taskStatus(Long taskId) { + public MulReturnType taskStatus(String taskId) { return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, -1L); } } diff --git a/src/main/java/com/dispose/manager/DeviceTaskManager.java b/src/main/java/com/dispose/manager/DeviceTaskManager.java index 0e3cdfb1..571b1cb1 100644 --- a/src/main/java/com/dispose/manager/DeviceTaskManager.java +++ b/src/main/java/com/dispose/manager/DeviceTaskManager.java @@ -51,7 +51,7 @@ public interface DeviceTaskManager { * @param id the id * @return the dispose device task status */ - int changeDisposeDeviceTaskInfoDevStatus(Long id, Long devStatus); + int changeDisposeDeviceTaskInfoDevStatus(String id, Long devStatus); /** * Sets exec attack type. diff --git a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java index a0c57b4d..7abccc58 100644 --- a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java @@ -87,7 +87,7 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager { * @return the long */ @Override - public int changeDisposeDeviceTaskInfoDevStatus(Long id, Long devStatus) { + public int changeDisposeDeviceTaskInfoDevStatus(String id, Long devStatus) { return deviceTaskMapper.changeTaskDevStatus(id, devStatus); } diff --git a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java index 538bad81..a357836a 100644 --- a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java +++ b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java @@ -92,7 +92,7 @@ public interface DeviceTaskMapper { * @param status the status * @return the int */ - int changeTaskDevStatus(@Param("id") Long id, + int changeTaskDevStatus(@Param("id") String id, @Param("status") Long status); /** diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 285d9069..a4179df5 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -716,10 +716,14 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 任务预计结束5分钟内, if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 5 * 60) { if (v.getEndTime() == null && Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) { - MulReturnType ret = ai.getDb().taskStatus(v.getId()); - if (ret.getFirstParam() == ErrorCode.ERR_OK) { - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getId(), ret.getSecondParam()); + if (v.getExternId() != null && v.getExternId().length() > 0) { + MulReturnType ret = ai.getDb().taskStatus(v.getExternId()); + + if (ret.getFirstParam() == ErrorCode.ERR_OK) { + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(), + ret.getSecondParam()); + } } } } From 6501d1b150928714cd86d870bedd1329d6ca4af9 Mon Sep 17 00:00:00 2001 From: HuangXin Date: Fri, 13 Nov 2020 17:24:26 +0800 Subject: [PATCH 06/30] =?UTF-8?q?OCT=20REM:=201.=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=AE=BE=E5=A4=87=E7=8A=B6=E6=80=81=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ability/impl/PengXinAbilityImpl.java | 99 +++++++------------ .../com/dispose/mapper/DeviceTaskMapper.java | 8 +- .../impl/DeviceTaskManagerServiceImpl.java | 2 +- src/main/resources/mappers/DeviceTask.xml | 2 +- 4 files changed, 44 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java index c3c62725..c4d90511 100644 --- a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java @@ -7,12 +7,9 @@ import com.dispose.common.ErrorCode; import com.dispose.common.Helper; import com.dispose.common.IpAddrType; import com.dispose.common.NetflowDirection; -import com.dispose.common.DisposeDeviceType; import com.dispose.manager.DisposeTaskManager; import com.dispose.mapper.DisposeDeviceMapper; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; -import com.dispose.pojo.entity.DeviceTask; -import com.dispose.pojo.entity.DisposeTask; import com.dispose.pojo.po.MulReturnType; import com.dispose.pojo.vo.DeviceFirewareInfo; import com.pengxin.dispose.common.PengXinDisposeAbilityRsp; @@ -33,7 +30,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * The type Peng xin ability. @@ -42,18 +38,6 @@ import java.util.stream.Collectors; */ @Slf4j public class PengXinAbilityImpl implements DisposeAbility { - /** - * The Dispose task manager. - */ - @Resource - private DisposeTaskManager disposeTaskManager; - - /** - * The Dispose device mapper. - */ - @Resource - private DisposeDeviceMapper disposeDeviceMapper; - /** * The Protect ip v 4. */ @@ -62,48 +46,51 @@ public class PengXinAbilityImpl implements DisposeAbility { * The Protect ip v 6. */ private final List protectIpV6 = new ArrayList<>(); - /** * The Restful interface. */ private final PengXinInterface restfulInterface = new PengXinInterface(); - + /** + * The Peng xin dispose type. + */ + private final Integer[] pengXinDisposeType = new Integer[]{0, 4, 1, 3}; + /** + * The Dispose task manager. + */ + @Resource + private DisposeTaskManager disposeTaskManager; + /** + * The Dispose device mapper. + */ + @Resource + private DisposeDeviceMapper disposeDeviceMapper; /** * The Task req id. */ private Long taskReqId = System.currentTimeMillis(); - /** * The Url root path. */ @Getter @Setter private String urlRootPath; - /** * The Username. */ @Getter @Setter private String username; - /** * The Password. */ @Getter @Setter private String password; - /** * The Token. */ private String token; - /** - * The Peng xin dispose type. - */ - private final Integer[] pengXinDisposeType = new Integer[]{0, 4, 1, 3}; - /** * Gets peng xin task type. * @@ -160,7 +147,8 @@ public class PengXinAbilityImpl implements DisposeAbility { * @return the mul return type */ @Override - public MulReturnType runDispose(String disposeObject, DisposeObjectType objectType, DisposeCapacityType capType, + public MulReturnType runDispose(String disposeObject, DisposeObjectType objectType, + DisposeCapacityType capType, @Nullable NetflowDirection nfDirection, @Nullable Integer attackType, @Nullable Long duration) { @@ -186,12 +174,12 @@ public class PengXinAbilityImpl implements DisposeAbility { } reqItems.add(PengXinStartTaskItem.builder() - .type(getPengXinTaskType(capType)) - .disposeObject(disposeObject) - .objectType(getPengXinObjectType(objectType)) - .disposeTime(duration) - .taskReqId(String.valueOf(taskReqId++)) - .build()); + .type(getPengXinTaskType(capType)) + .disposeObject(disposeObject) + .objectType(getPengXinObjectType(objectType)) + .disposeTime(duration) + .taskReqId(String.valueOf(taskReqId++)) + .build()); ProtocolRespDTO rspInfo = restfulInterface.startDisposeTask(url, token, reqItems); @@ -249,7 +237,7 @@ public class PengXinAbilityImpl implements DisposeAbility { } ProtocolRespDTO rspInfo = restfulInterface.stopDisposeTask(url, token, - new String[]{taskId}); + new String[]{taskId}); // 判断是否token过期 if (rspInfo != null && rspInfo.getCode() == HttpServletResponse.SC_UNAUTHORIZED) { @@ -279,18 +267,18 @@ public class PengXinAbilityImpl implements DisposeAbility { @Override public MulReturnType getAbilityDeviceFireware() { return new MulReturnType<>(ErrorCode.ERR_OK, - DeviceFirewareInfo.builder() - .vendor("PengXin") - .model("Unknown") - .firmware("Unknown") - .os("Linux Server") - .kernel("Linux") - .arch("x86_64") - .version("Unknown") - .memory(-1) - .freeMemory(-1) - .cpuUsed(-1) - .build()); + DeviceFirewareInfo.builder() + .vendor("PengXin") + .model("Unknown") + .firmware("Unknown") + .os("Linux Server") + .kernel("Linux") + .arch("x86_64") + .version("Unknown") + .memory(-1) + .freeMemory(-1) + .cpuUsed(-1) + .build()); } /** @@ -441,25 +429,14 @@ public class PengXinAbilityImpl implements DisposeAbility { try { String url = urlRootPath + "dispose_device/task/get"; - DisposeTask task = disposeTaskManager.getDisposeTaskById(taskId); - - if (task == null) { - return new MulReturnType<>(ErrorCode.ERR_NOSUCHTASK, -1L); - } - - //根据设备ID获取设备信息,判断任务列表中的设备为鹏信,获取externId - List dev = task.getDeviceTask().stream(). - filter(v -> disposeDeviceMapper.getDeviceById(v.getDeviceId()).getDeviceType() == DisposeDeviceType.PENGXIN_PLATFORM).collect(Collectors.toList()); - ProtocolRespDTO rspInfo = restfulInterface.getDeviceTaskStatus(url, token, - new String[]{String.valueOf(dev.get(0).getExternId())}); + new String[]{taskId}); // 判断是否token过期 if (rspInfo != null && rspInfo.getCode() == HttpServletResponse.SC_UNAUTHORIZED) { // 重新登录获取 token upgradeToken(); - rspInfo = restfulInterface.getDeviceTaskStatus(url, token, - new String[]{String.valueOf(dev.get(0).getExternId())}); + rspInfo = restfulInterface.getDeviceTaskStatus(url, token, new String[]{taskId}); } if (rspInfo != null && rspInfo.getCode() == ErrorCode.ERR_OK.getHttpCode()) { @@ -469,7 +446,7 @@ public class PengXinAbilityImpl implements DisposeAbility { } return new MulReturnType<>(ErrorCode.ERR_OK, - rspInfo.getMsgContent().getItems().get(0).getTaskStatus()); + rspInfo.getMsgContent().getItems().get(0).getTaskStatus()); } else { return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, -1L); } diff --git a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java index a357836a..dc7e5c6a 100644 --- a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java +++ b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java @@ -88,12 +88,12 @@ public interface DeviceTaskMapper { /** * Change task dev status int. * - * @param id the id - * @param status the status + * @param externId the extern id + * @param devStatus the dev status * @return the int */ - int changeTaskDevStatus(@Param("id") String id, - @Param("status") Long status); + int changeTaskDevStatus(@Param("externId") String externId, + @Param("devStatus") Long devStatus); /** * Change exec attack type in value int. diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index a4179df5..ae1ca66e 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -715,7 +715,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 任务预计结束5分钟内, if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 5 * 60) { - if (v.getEndTime() == null && Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) { + if (v.getEndTime() == null || Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) { if (v.getExternId() != null && v.getExternId().length() > 0) { MulReturnType ret = ai.getDb().taskStatus(v.getExternId()); diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index 63325b59..7071efb5 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -91,7 +91,7 @@ UPDATE device_task SET devStatus = #{devStatus} - WHERE id = #{id} + WHERE externId = #{externId} AND devStatus != #{devStatus} From 8fa78111db79a014fab7df341754e6582a2af3b1 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Mon, 16 Nov 2020 16:36:22 +0800 Subject: [PATCH 07/30] =?UTF-8?q?OCT=20REM:=201.=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E5=A4=84=E7=BD=AE=E8=AE=BE=E5=A4=87=202.?= =?UTF-8?q?=E6=9B=B4=E6=96=B0Restful=E5=85=AC=E5=85=B1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dispose/restful/RestfulInterface.java | 114 ++++++++++++++++++ .../huawei/dispose/common/HuaWeiLoginReq.java | 30 +++++ .../dispose/common/HuaWeiLoginResp.java | 26 ++++ .../dispose/protocol/HuaWeiInterface.java | 28 +++++ 4 files changed, 198 insertions(+) create mode 100644 src/main/java/com/huawei/dispose/common/HuaWeiLoginReq.java create mode 100644 src/main/java/com/huawei/dispose/common/HuaWeiLoginResp.java create mode 100644 src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java diff --git a/src/main/java/com/dispose/restful/RestfulInterface.java b/src/main/java/com/dispose/restful/RestfulInterface.java index 3aedafce..1cd51374 100644 --- a/src/main/java/com/dispose/restful/RestfulInterface.java +++ b/src/main/java/com/dispose/restful/RestfulInterface.java @@ -2,6 +2,7 @@ package com.dispose.restful; import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import com.dispose.common.ConstValue; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; import com.fasterxml.jackson.core.JsonProcessingException; @@ -74,6 +75,60 @@ public class RestfulInterface { .execute().body(); } + /** + * Gets http response. + * + * @param url the url + * @param header the header + * @return the http response + */ + private static HttpResponse getHttpResp(String url, Map header) { + HttpRequest.setGlobalTimeout(timeOutValue); + return HttpRequest.get(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header) + .execute(); + } + + /** + * Put http response. + * + * @param url the url + * @param header the header + * @param body the body + * @return the http response + */ + private static HttpResponse putHttpResp(String url, Map header, String body) { + HttpRequest.setGlobalTimeout(timeOutValue); + return HttpRequest.put(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body) + .execute(); + } + + /** + * Post http response. + * + * @param url the url + * @param header the header + * @param body the body + * @return the http response + */ + private static HttpResponse postHttpResp(String url, Map header, String body) { + HttpRequest.setGlobalTimeout(timeOutValue); + return HttpRequest.post(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body) + .execute(); + } + + /** + * Deletes http response. + * + * @param url the url + * @param header the header + * @return the http response + */ + private static HttpResponse deleteHttpResp(String url, Map header, String body) { + HttpRequest.setGlobalTimeout(timeOutValue); + return HttpRequest.delete(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body) + .execute(); + } + /** * Protocol run t. * @@ -171,6 +226,65 @@ public class RestfulInterface { } } + + /** + * huawei pro run protocol resp dto. + * + * @param the type parameter + * @param url the url + * @param token the token + * @param obj the obj + * @param reqType the req type + * @return the t + */ + public static HttpResponse huaWeiProRun(String url, String token, E obj, RequestMethod reqType) { + try { + HttpResponse svrResp = null; + + Map httpHeadMap = new HashMap<>(2); + httpHeadMap.put(String.valueOf(Header.CONNECTION), "keep-alive"); + httpHeadMap.put(String.valueOf(Header.ACCEPT), "*/*"); + + if (token != null && token.length() > 0) { + httpHeadMap.put("X-Auth-Token", token); + } + + String reqJson = OBJECT_MAPPER.writeValueAsString(obj); + + log.debug("Restful request: {}, {}: {}", url, token, reqJson); + + switch (reqType) { + case GET: + svrResp = getHttpResp(url, httpHeadMap); + break; + case POST: + svrResp = postHttpResp(url, httpHeadMap, reqJson); + break; + case PUT: + svrResp = putHttpResp(url, httpHeadMap, reqJson); + break; + case DELETE: + svrResp = deleteHttpResp(url, httpHeadMap, reqJson); + break; + default: + log.error("Unknown method: {}", reqType); + break; + } + + if (svrResp == null) { + log.debug("Server return null: {}", url); + return null; + } + + log.debug("Restful response: {}, {}: {}", url, token, svrResp.body()); + + return svrResp; + } catch (JsonProcessingException e) { + log.info("System exception: ", e); + return null; + } + } + /** * Create resp type type. * diff --git a/src/main/java/com/huawei/dispose/common/HuaWeiLoginReq.java b/src/main/java/com/huawei/dispose/common/HuaWeiLoginReq.java new file mode 100644 index 00000000..c9e2b86d --- /dev/null +++ b/src/main/java/com/huawei/dispose/common/HuaWeiLoginReq.java @@ -0,0 +1,30 @@ +package com.huawei.dispose.common; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * The type Hua wei login req. + * + * @author + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonPropertyOrder({"username", "password"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class HuaWeiLoginReq { + /** + * The User name. + */ + private String username; + /** + * The Password. + */ + private String password; +} diff --git a/src/main/java/com/huawei/dispose/common/HuaWeiLoginResp.java b/src/main/java/com/huawei/dispose/common/HuaWeiLoginResp.java new file mode 100644 index 00000000..78a9b355 --- /dev/null +++ b/src/main/java/com/huawei/dispose/common/HuaWeiLoginResp.java @@ -0,0 +1,26 @@ +package com.huawei.dispose.common; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * The type Hua wei login rsp. + * + * @author + */ +@EqualsAndHashCode() +@Data +@NoArgsConstructor +@AllArgsConstructor +@JsonPropertyOrder({"token"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class HuaWeiLoginResp { + /** + * The Token. + */ + private String token; +} diff --git a/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java b/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java new file mode 100644 index 00000000..7476ff9d --- /dev/null +++ b/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java @@ -0,0 +1,28 @@ +package com.huawei.dispose.protocol; + +import cn.hutool.http.HttpResponse; +import com.dispose.restful.RestfulInterface; +import com.huawei.dispose.common.HuaWeiLoginReq; +import org.springframework.web.bind.annotation.RequestMethod; + +/** + * The type Hua Wei interface. + * + * @author + */ +public class HuaWeiInterface { + /** + * Login protocol resp dto. + * + * @param baseUrlPath the base url path + * @param username the username + * @param password the password + * @return the http resp + */ + public HttpResponse auth(String baseUrlPath, String username, String password) { + return RestfulInterface.huaWeiProRun(baseUrlPath + "/auth", + null, + new HuaWeiLoginReq(username, password), + RequestMethod.POST); + } +} From 80a0e5c0db2615f630b700ad85a935611ad0c442 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Mon, 16 Nov 2020 17:02:59 +0800 Subject: [PATCH 08/30] =?UTF-8?q?OCT=20REM:=201.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E8=AE=BE=E5=A4=87=E9=94=99=E8=AF=AF=E7=A0=81?= =?UTF-8?q?=202.=E5=A2=9E=E5=8A=A0=E5=8D=8E=E4=B8=BA=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=BC=95=E6=B5=81=E3=80=81=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=BC=95=E6=B5=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dispose/common/ErrorCode.java | 14 +++- .../dispose/common/HuaWeiCreatDivertReq.java | 26 +++++++ .../dispose/protocol/HuaWeiInterface.java | 70 +++++++++++++++++++ 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/huawei/dispose/common/HuaWeiCreatDivertReq.java diff --git a/src/main/java/com/dispose/common/ErrorCode.java b/src/main/java/com/dispose/common/ErrorCode.java index 7f731974..50b1054a 100644 --- a/src/main/java/com/dispose/common/ErrorCode.java +++ b/src/main/java/com/dispose/common/ErrorCode.java @@ -219,7 +219,19 @@ public enum ErrorCode { /** * The Err no device by areaCode. */ - ERR_NODEVICE_AREACODE(111, "区域无该设备"), + ERR_NODEVICE_AREACODE(112, "区域无该设备"), + /** + * The Err specified IP already exists. + */ + ERR_SPECIFIEDIP_EXISTS(113, "指定的IP已经存在"), + /** + * The Err specified IP does not exists. + */ + ERR_SPECIFIEDIP_NOTEXISTS(114, "指定的IP地址不存在"), + /** + * The Err server processing request. + */ + ERR_SERVER_PROCESSREQ(115, "服务器处理请求错误"), ; /** diff --git a/src/main/java/com/huawei/dispose/common/HuaWeiCreatDivertReq.java b/src/main/java/com/huawei/dispose/common/HuaWeiCreatDivertReq.java new file mode 100644 index 00000000..1805a67f --- /dev/null +++ b/src/main/java/com/huawei/dispose/common/HuaWeiCreatDivertReq.java @@ -0,0 +1,26 @@ +package com.huawei.dispose.common; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * The type Hua wei login req. + * + * @author + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonPropertyOrder({"zone_ip"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class HuaWeiCreatDivertReq { + /** + * The array zone ip. + */ + private String[] zone_ip; +} diff --git a/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java b/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java index 7476ff9d..bfa772cc 100644 --- a/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java +++ b/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java @@ -1,10 +1,14 @@ package com.huawei.dispose.protocol; import cn.hutool.http.HttpResponse; +import com.dispose.common.ErrorCode; import com.dispose.restful.RestfulInterface; +import com.huawei.dispose.common.HuaWeiCreatDivertReq; import com.huawei.dispose.common.HuaWeiLoginReq; import org.springframework.web.bind.annotation.RequestMethod; +import javax.servlet.http.HttpServletResponse; + /** * The type Hua Wei interface. * @@ -25,4 +29,70 @@ public class HuaWeiInterface { new HuaWeiLoginReq(username, password), RequestMethod.POST); } + + + /** + * create divert protocol resp dto. + * + * @param baseUrlPath the base url path + * @param token the token + * @param zone_ip zone ip + * @return the delete zone status + */ + public ErrorCode createDivert(String baseUrlPath, String token, String[] zone_ip){ + //获取HTTP部分 + HttpResponse response = RestfulInterface.huaWeiProRun(baseUrlPath + "/divert", + token, + new HuaWeiCreatDivertReq(zone_ip), + RequestMethod.POST); + + if (response != null) { + if (response.getStatus() == HttpServletResponse.SC_CREATED) { + return ErrorCode.ERR_OK; + }else if(response.getStatus() == HttpServletResponse.SC_BAD_REQUEST) { + return ErrorCode.ERR_PARAMS; + }else if(response.getStatus() == HttpServletResponse.SC_CONFLICT){ + return ErrorCode.ERR_SPECIFIEDIP_EXISTS; + } else if (response.getStatus() == HttpServletResponse.SC_PRECONDITION_FAILED) { + return ErrorCode.ERR_TOKENNOTFOUND; + }else if(response.getStatus() == HttpServletResponse.SC_INTERNAL_SERVER_ERROR){ + return ErrorCode.ERR_SERVER_PROCESSREQ; + } + } + + return ErrorCode.ERR_UNKNOWNCMD; + } + + + /** + * delete divert protocol resp dto. + * + * @param baseUrlPath the base url path + * @param token the token + * @param zone_ip zone ip + * @return the delete zone status + */ + public ErrorCode deleteZones(String baseUrlPath, String token, String zone_ip) { + //获取HTTP部分 + HttpResponse response = RestfulInterface.huaWeiProRun(baseUrlPath + "/divert/" + zone_ip, + token, + null, + RequestMethod.DELETE); + + if (response != null) { + if (response.getStatus() == HttpServletResponse.SC_OK) { + return ErrorCode.ERR_OK; + }else if(response.getStatus() == HttpServletResponse.SC_BAD_REQUEST){ + return ErrorCode.ERR_PARAMS; + }else if(response.getStatus() == HttpServletResponse.SC_NOT_FOUND){ + return ErrorCode.ERR_SPECIFIEDIP_NOTEXISTS; + } else if (response.getStatus() == HttpServletResponse.SC_PRECONDITION_FAILED) { + return ErrorCode.ERR_TOKENNOTFOUND; + }else if(response.getStatus() == HttpServletResponse.SC_INTERNAL_SERVER_ERROR){ + return ErrorCode.ERR_SERVER_PROCESSREQ; + } + } + + return ErrorCode.ERR_UNKNOWNCMD; + } } From 6781d98a6da8b7f0560c3cf2d2449f8e0f9c852f Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Mon, 16 Nov 2020 17:35:17 +0800 Subject: [PATCH 09/30] =?UTF-8?q?OCT=20REM:=201.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E8=AE=BE=E5=A4=87=E8=83=BD=E5=8A=9B=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=202.=E5=A2=9E=E5=8A=A0=E5=8D=8E=E4=B8=BA=E5=A4=84?= =?UTF-8?q?=E7=BD=AE=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ability/impl/HuaWeiAbilityImpl.java | 214 ++++++++++++++++++ .../com/dispose/common/DisposeDeviceType.java | 6 +- 2 files changed, 218 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java diff --git a/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java b/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java new file mode 100644 index 00000000..99b203c9 --- /dev/null +++ b/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java @@ -0,0 +1,214 @@ +package com.dispose.ability.impl; + +import com.dispose.ability.DisposeAbility; + +import cn.hutool.http.HttpResponse; +import com.dispose.common.DisposeCapacityType; +import com.dispose.common.DisposeObjectType; +import com.dispose.common.ErrorCode; +import com.dispose.common.NetflowDirection; +import com.dispose.pojo.po.MulReturnType; +import com.dispose.pojo.vo.DeviceFirewareInfo; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.huawei.dispose.common.HuaWeiLoginResp; +import com.huawei.dispose.protocol.HuaWeiInterface; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Nullable; +import javax.servlet.http.HttpServletResponse; + +@Component +@Slf4j +public class HuaWeiAbilityImpl implements DisposeAbility { + /** + * The Restful interface. + */ + private final HuaWeiInterface restfulInterface = new HuaWeiInterface(); + + /** + * The constant OBJECT_MAPPER. + */ + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + /** + * The Url root path. + */ + @Getter + @Setter + private String urlRootPath; + + /** + * The Username. + */ + @Getter + @Setter + private String username; + + /** + * The Password. + */ + @Getter + @Setter + private String password; + + /** + * The Token. + */ + private String token; + + /** + * Init device env. + * + * @param urlPath the url path + * @param username the username + * @param password the password + */ + @Override + public void initDeviceEnv(String urlPath, String username, String password) { + this.urlRootPath = urlPath; + this.username = username; + this.password = password; + + upgradeToken(); + } + + /** + * Run dispose mul return type. + * + * @param disposeObject the dispose object + * @param objectType the object type + * @param capType the cap type + * @param nfDirection the nf direction + * @param attackType the attack type + * @param duration the duration + * @return the mul return type + */ + @Override + public MulReturnType runDispose(String disposeObject, DisposeObjectType objectType, + DisposeCapacityType capType, + @Nullable NetflowDirection nfDirection, + @Nullable Integer attackType, + @Nullable Long duration) { + return null; + } + + + /** + * Stop dispose mul return type. + * + * @param disposeObject the dispose object + * @param capType the cap type + * @param nfDirection the nf direction + * @param attackType the attack type + * @param taskId the task id + * @return the mul return type + */ + @Override + public MulReturnType stopDispose(String disposeObject, DisposeCapacityType capType, + @Nullable NetflowDirection nfDirection, + @Nullable Integer attackType, + @Nullable String taskId) { + return null; + } + + /** + * Task status mul return type. + * + * @param taskId the task id + * @return the mul return type + */ + @Override + public MulReturnType taskStatus(String taskId) { + return null; + } + + /** + * Gets ability device fireware. + * + * @return the ability device fireware + */ + @Override + public MulReturnType getAbilityDeviceFireware() { + return new MulReturnType<>(ErrorCode.ERR_OK, + DeviceFirewareInfo.builder() + .vendor("HuaWei") + .model("Unknown") + .firmware("Unknown") + .os("Linux Server") + .kernel("Linux") + .arch("x86_64") + .version("Unknown") + .memory(-1) + .freeMemory(-1) + .cpuUsed(-1) + .build()); + } + + /** + * To device attack type long. + * + * @param ddosAttackTypeMask the ddos attack type mask + * @return the long + */ + @Override + public Long toDeviceAttackType(Long ddosAttackTypeMask) { + return ddosAttackTypeMask; + } + + /** + * Gets device link status. + * + * @return the device link status + */ + @Override + public boolean getDeviceLinkStatus() { + try { + //查询所有的zone接口调用成功认为设备心跳正常 + //return (restfulInterface.queryAllZones(this.urlRootPath, token) != null); + return true; + } catch (Exception ex) { + log.error(ex.getMessage()); + } + + return false; + } + + + /** + * Gets dispose device protect object. + */ + @Override + public void getDisposeDeviceProtectObject() { + } + + /** + * Is carry protect ip boolean. + * + * @param ipAddr the ip addr + * @return the boolean + */ + @Override + public boolean isCarryProtectIp(String ipAddr) { + return true; + } + + /** + * Upgrade token. + */ + private void upgradeToken() { + try { + HttpResponse resp = restfulInterface.auth(this.urlRootPath, username, password); + + if (resp != null) { + if (resp.getStatus() == HttpServletResponse.SC_OK && resp.body() != null) { + HuaWeiLoginResp logInfo = OBJECT_MAPPER.readValue(resp.body(), HuaWeiLoginResp.class); + this.token = logInfo.getToken(); + } + } + } catch (Exception ignored) { + } + } +} diff --git a/src/main/java/com/dispose/common/DisposeDeviceType.java b/src/main/java/com/dispose/common/DisposeDeviceType.java index 9ed73c5f..afa2fbfb 100644 --- a/src/main/java/com/dispose/common/DisposeDeviceType.java +++ b/src/main/java/com/dispose/common/DisposeDeviceType.java @@ -14,12 +14,14 @@ public enum DisposeDeviceType implements BaseEnum { * The Haohan platform. */ HAOHAN_PLATFORM(1, "浩瀚处置设备"), - /** * The Pengxin platform. */ PENGXIN_PLATFORM(2, "鹏信处置设备"), - + /** + * The HuaWei platform. + */ + HUAWEI_PLATFORM(3, "华为处置设备"), /** * The Virtual dispose. */ From 2e47fc9ff820ca33728ae9d417298d642830cbf8 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Tue, 17 Nov 2020 18:22:31 +0800 Subject: [PATCH 10/30] =?UTF-8?q?OCT=20REM:=201.=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E8=AE=BE=E5=A4=87=E8=83=BD=E5=8A=9B=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=202.=E5=A2=9E=E5=8A=A0=E5=8D=8E=E4=B8=BA=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=9F=A5=E8=AF=A2=E6=89=80=E6=9C=89zone=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=203.=E5=A2=9E=E5=8A=A0=E5=8D=8E=E4=B8=BA=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=90=AF=E5=8A=A8=E3=80=81=E5=81=9C=E6=AD=A2=E5=A4=84?= =?UTF-8?q?=E7=BD=AE=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3=204.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=94=99=E8=AF=AF=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ability/impl/HuaWeiAbilityImpl.java | 108 +++++++++- .../java/com/dispose/common/ErrorCode.java | 4 + .../impl/DeviceTaskManagerServiceImpl.java | 188 +++++++++++++----- .../impl/DisposeAbilityRouterServiceImpl.java | 4 + .../dispose/protocol/HuaWeiInterface.java | 37 ++-- 5 files changed, 275 insertions(+), 66 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java b/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java index 99b203c9..ef39eaa0 100644 --- a/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java @@ -92,7 +92,46 @@ public class HuaWeiAbilityImpl implements DisposeAbility { @Nullable NetflowDirection nfDirection, @Nullable Integer attackType, @Nullable Long duration) { - return null; + String url = urlRootPath + "/divert"; + String disposeObj = disposeObject + "/32"; + + if (token == null || token.length() == 0) { + return new MulReturnType<>(ErrorCode.ERR_LOGOUT, ""); + } + + try { + log.info("++++Begging HuaWei Start Cleanup Task: {}", disposeObject); + + if (capType != DisposeCapacityType.CLEANUP) { + log.error("----Error HuaWei don't support dispose capacity type: {}", capType); + return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, null); + } + + ErrorCode resp = restfulInterface.createDivert(url, token, new String[]{disposeObj}); + + // 判断是否token过期 + if (resp == ErrorCode.ERR_TOKENNOTFOUND) { + // 重新登录获取 token + upgradeToken(); + resp = restfulInterface.createDivert(url, token, new String[]{disposeObject}); + } + + if (resp == null) { + log.error("----Error HuaWei start clean {} server return error", disposeObject); + return new MulReturnType<>(ErrorCode.ERR_HUAWEI_ERROR, null); + } + + if (resp != ErrorCode.ERR_OK) { + log.error("----Error HuaWei start clean {} return error: {}, {}", disposeObject, resp.getCode(), resp.getMsg()); + return new MulReturnType<>(ErrorCode.ERR_HUAWEI_ERROR, null); + } + + log.debug("----Finish HuaWei Start Cleanup Task: {}", disposeObject); + return new MulReturnType<>(ErrorCode.ERR_OK, null); + } catch (Exception ex) { + log.error("----Exception HuaWei Start Cleanup Task: {}, {}, {}", disposeObject, nfDirection, duration); + return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, null); + } } @@ -111,7 +150,51 @@ public class HuaWeiAbilityImpl implements DisposeAbility { @Nullable NetflowDirection nfDirection, @Nullable Integer attackType, @Nullable String taskId) { - return null; + + String disposeObj = disposeObject + "-32"; + String url = urlRootPath + "/divert/" + disposeObj; + + if (token == null || token.length() == 0) { + return new MulReturnType<>(ErrorCode.ERR_LOGOUT, null); + } + + try { + log.debug("++++Begging HuaWei Stop Cleanup Task: {}", taskId); + + if (capType != DisposeCapacityType.CLEANUP) { + log.error("----Error HuaWei don't support dispose capacity type: {}", capType); + return new MulReturnType<>(ErrorCode.ERR_UNSUPPORT, null); + } + + if (taskId == null) { + return new MulReturnType<>(ErrorCode.ERR_PARAMS, null); + } + + ErrorCode rspInfo = restfulInterface.deleteZones(url, token); + + // 判断是否token过期 + if (rspInfo == ErrorCode.ERR_TOKENNOTFOUND) { + // 重新登录获取 token + upgradeToken(); + rspInfo = restfulInterface.deleteZones(url, token); + } + + if (rspInfo == null) { + log.error("----Error HuaWei stop task{} server return error", taskId); + return new MulReturnType<>(ErrorCode.ERR_HUAWEI_ERROR, null); + } + + if (rspInfo != ErrorCode.ERR_OK) { + log.error("----Error HuaWei stop task{} server return error", taskId); + return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, null); + } + + log.debug("----Finish HuaWei Stop Cleanup Task: {}", taskId); + return new MulReturnType<>(ErrorCode.ERR_OK, null); + } catch (Exception ex) { + log.error("----Exception HuaWei Stop Cleanup Task: {}, {}, {}", disposeObject, nfDirection, taskId); + return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, null); + } } /** @@ -167,9 +250,23 @@ public class HuaWeiAbilityImpl implements DisposeAbility { public boolean getDeviceLinkStatus() { try { //查询所有的zone接口调用成功认为设备心跳正常 - //return (restfulInterface.queryAllZones(this.urlRootPath, token) != null); - return true; - } catch (Exception ex) { + String url = urlRootPath + "/allzone"; + + if (token == null || token.length() == 0) { + return false; + } + + HttpResponse response = restfulInterface.queryAllZones(url, token); + + if (response.getStatus() == ErrorCode.ERR_TOKENNOTFOUND.getCode()) { + // 重新登录获取 token + upgradeToken(); + response = restfulInterface.queryAllZones(url, token); + } + + return response.getStatus() == ErrorCode.ERR_OK.getCode(); + } catch ( + Exception ex) { log.error(ex.getMessage()); } @@ -212,3 +309,4 @@ public class HuaWeiAbilityImpl implements DisposeAbility { } } } + diff --git a/src/main/java/com/dispose/common/ErrorCode.java b/src/main/java/com/dispose/common/ErrorCode.java index 50b1054a..4928dda4 100644 --- a/src/main/java/com/dispose/common/ErrorCode.java +++ b/src/main/java/com/dispose/common/ErrorCode.java @@ -232,6 +232,10 @@ public enum ErrorCode { * The Err server processing request. */ ERR_SERVER_PROCESSREQ(115, "服务器处理请求错误"), + /** + * The Err huawei error. + */ + ERR_HUAWEI_ERROR(34, "华为设备返回错误"), ; /** diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index ae1ca66e..13efc6b1 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -68,26 +68,26 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING); // 设置启动任务攻击类型状态 deviceTaskManager.setExecAttackType(deviceTask.getId(), NetflowDirection.DIRECTION_BI, - deviceTask.getTaskAttackType()); + deviceTask.getTaskAttackType()); // 调用设备执行处置任务 ret = ai.getDb() .runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(), - disposeTask.getDisposeCapacity(), - null, null, null); + disposeTask.getDisposeCapacity(), + null, null, null); if (ret.getFirstParam() == ErrorCode.ERR_OK) { // 设置攻击类型任务启动结果 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), - disposeTask.getFlowDirection(), deviceTask.getTaskAttackType()); + disposeTask.getFlowDirection(), deviceTask.getTaskAttackType()); // 更改处置任务状态为处置中 deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), - DisposeTaskStatus.TASK_STARTED); + DisposeTaskStatus.TASK_STARTED); log.info("VIRTUAL_DISPOSE setup task succeed: {}", deviceTask); } else { // 任务出错,不在重试,当做失败任务处理 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), - disposeTask.getFlowDirection(), 0L); + disposeTask.getFlowDirection(), 0L); log.error("VIRTUAL_DISPOSE setup task error {}: {}", ret.getFirstParam(), deviceTask); } } @@ -137,17 +137,17 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING); // 设置启动任务攻击类型状态 deviceTaskManager.setExecAttackType(deviceTask.getId(), NetflowDirection.DIRECTION_BI, - deviceTask.getTaskAttackType()); + deviceTask.getTaskAttackType()); ret = ai.getDb() .runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(), - disposeTask.getDisposeCapacity(), null, - null, (long) -(Helper.getTimestampDiffNow(disposeTask.getPlanEndTime()) / 60)); + disposeTask.getDisposeCapacity(), null, + null, (long) -(Helper.getTimestampDiffNow(disposeTask.getPlanEndTime()) / 60)); if (ret.getFirstParam() == ErrorCode.ERR_OK) { // 设置攻击类型任务启动结果 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), - disposeTask.getFlowDirection(), deviceTask.getTaskAttackType()); + disposeTask.getFlowDirection(), deviceTask.getTaskAttackType()); // 更改处置任务状态为处置中 deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTED); @@ -164,11 +164,11 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("HAOHAN_PLATFORM setup task times {} error {}: {}", deviceTask.getErrRetry(), - ret.getSecondParam(), deviceTask); + ret.getSecondParam(), deviceTask); } else { // 任务出错,不在重试,当做失败任务处理 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), - disposeTask.getFlowDirection(), 0L); + disposeTask.getFlowDirection(), 0L); log.error("HAOHAN_PLATFORM setup task error {}: {}", ret.getFirstParam(), deviceTask); } } @@ -185,7 +185,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 停止处置任务 ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null, - deviceTask.getExternId()); + deviceTask.getExternId()); if (ret.getFirstParam() == ErrorCode.ERR_OK) { log.info("HAOHAN_PLATFORM stop task succeed: {}, device taskId {}", deviceTask, ret.getSecondParam()); @@ -197,7 +197,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("HAOHAN_PLATFORM stop task times {} error {}: {}", deviceTask.getErrRetry(), - ret.getSecondParam(), deviceTask); + ret.getSecondParam(), deviceTask); } else { log.error("HAOHAN_PLATFORM stop task error {}: {}", ret.getFirstParam(), deviceTask); } @@ -226,16 +226,16 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { } // 设置启动任务攻击类型状态 deviceTaskManager.execAttackTypeSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT, - t.getValue()); + t.getValue()); // 调用迪普设备启动处置任务 ret = ai.getDb().runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(), - disposeTask.getDisposeCapacity(), NetflowDirection.DIRECTION_OUT, - t.getValue(), null); + disposeTask.getDisposeCapacity(), NetflowDirection.DIRECTION_OUT, + t.getValue(), null); if (ret.getFirstParam() == ErrorCode.ERR_OK) { // 标志启动成功 deviceTaskManager.attackTypeStatusSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT, - t.getValue()); + t.getValue()); log.info("DPTECH_UMC setup task {}, {} succeed: {}", t, NetflowDirection.DIRECTION_OUT, deviceTask); @@ -247,12 +247,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry()); //清除任务攻击类型启动标志 deviceTaskManager.execAttackTypeCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT, - t.getValue()); + t.getValue()); log.error("DPTECH_UMC setup task {}, {} times {} error: {}", t, - NetflowDirection.DIRECTION_OUT, deviceTask.getErrRetry(), deviceTask); + NetflowDirection.DIRECTION_OUT, deviceTask.getErrRetry(), deviceTask); } else { log.error("DPTECH_UMC setup task {}, {} error {}: {}", t, - NetflowDirection.DIRECTION_OUT, ret.getFirstParam(), deviceTask); + NetflowDirection.DIRECTION_OUT, ret.getFirstParam(), deviceTask); } } @@ -264,16 +264,16 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { } // 设置启动任务攻击类型状态 deviceTaskManager.execAttackTypeSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN, - t.getValue()); + t.getValue()); // 调用迪普设备启动处置任务 ret = ai.getDb().runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(), - disposeTask.getDisposeCapacity(), NetflowDirection.DIRECTION_IN, - t.getValue(), null); + disposeTask.getDisposeCapacity(), NetflowDirection.DIRECTION_IN, + t.getValue(), null); if (ret.getFirstParam() == ErrorCode.ERR_OK) { // 标志启动成功 deviceTaskManager.attackTypeStatusSetBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN, - t.getValue()); + t.getValue()); log.info("DPTECH_UMC setup task {}, {} succeed: {}", t, NetflowDirection.DIRECTION_IN, deviceTask); @@ -285,12 +285,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry()); //清除任务攻击类型启动标志 deviceTaskManager.execAttackTypeCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN, - t.getValue()); + t.getValue()); log.error("DPTECH_UMC setup task {}, {} times {} error: {}", t, - NetflowDirection.DIRECTION_IN, deviceTask.getErrRetry(), deviceTask); + NetflowDirection.DIRECTION_IN, deviceTask.getErrRetry(), deviceTask); } else { log.error("DPTECH_UMC setup task {}, {} error {}: {}", t, - NetflowDirection.DIRECTION_IN, ret.getFirstParam(), deviceTask); + NetflowDirection.DIRECTION_IN, ret.getFirstParam(), deviceTask); } } } @@ -343,12 +343,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_IN) { // 调用迪普设备停止处置任务 ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), - NetflowDirection.DIRECTION_OUT, t.getValue(), null); + NetflowDirection.DIRECTION_OUT, t.getValue(), null); if (ret.getFirstParam() == ErrorCode.ERR_OK) { // 标志停止成功 deviceTaskManager.attackTypeStatusCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_OUT, - t.getValue()); + t.getValue()); log.info("DPTECH_UMC stop task {}, {} succeed: {}", t, NetflowDirection.DIRECTION_OUT, deviceTask); @@ -358,10 +358,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTask.setErrRetry(deviceTask.getErrRetry() + 1); deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry()); log.error("DPTECH_UMC stop task {}, {} times {} error: {}", t, - NetflowDirection.DIRECTION_OUT, deviceTask.getErrRetry(), deviceTask); + NetflowDirection.DIRECTION_OUT, deviceTask.getErrRetry(), deviceTask); } else { log.info("DPTECH_UMC stop task {}, {} error {}: {}", t, - NetflowDirection.DIRECTION_OUT, ret.getFirstParam(), deviceTask); + NetflowDirection.DIRECTION_OUT, ret.getFirstParam(), deviceTask); } } @@ -369,15 +369,15 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_OUT) { // 调用迪普设备启动处置任务 ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), - NetflowDirection.DIRECTION_IN, t.getValue(), null); + NetflowDirection.DIRECTION_IN, t.getValue(), null); if (ret.getFirstParam() == ErrorCode.ERR_OK) { // 标志启动成功 deviceTaskManager.attackTypeStatusCleanBit(deviceTask.getId(), NetflowDirection.DIRECTION_IN, - t.getValue()); + t.getValue()); log.info("DPTECH_UMC setup task {}, {} succeed: {}", t, - NetflowDirection.DIRECTION_IN, deviceTask); + NetflowDirection.DIRECTION_IN, deviceTask); deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0); } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES * 10) { @@ -385,10 +385,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTask.setErrRetry(deviceTask.getErrRetry() + 1); deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry()); log.error("DPTECH_UMC stop task {}, {} times {} error: {}", t, - NetflowDirection.DIRECTION_IN, deviceTask.getErrRetry(), deviceTask); + NetflowDirection.DIRECTION_IN, deviceTask.getErrRetry(), deviceTask); } else { log.info("DPTECH_UMC stop task {}, {} error {}: {}", t, - NetflowDirection.DIRECTION_IN, ret.getFirstParam(), deviceTask); + NetflowDirection.DIRECTION_IN, ret.getFirstParam(), deviceTask); } } } @@ -442,17 +442,17 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING); // 设置启动任务攻击类型状态 deviceTaskManager.setExecAttackType(deviceTask.getId(), NetflowDirection.DIRECTION_BI, - deviceTask.getTaskAttackType()); + deviceTask.getTaskAttackType()); ret = ai.getDb() .runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(), - disposeTask.getDisposeCapacity(), null, - null, (long) -(Helper.getTimestampDiffNow(disposeTask.getPlanEndTime()) / 60)); + disposeTask.getDisposeCapacity(), null, + null, (long) -(Helper.getTimestampDiffNow(disposeTask.getPlanEndTime()) / 60)); if (ret.getFirstParam() == ErrorCode.ERR_OK) { // 设置攻击类型任务启动结果 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), - disposeTask.getFlowDirection(), deviceTask.getTaskAttackType()); + disposeTask.getFlowDirection(), deviceTask.getTaskAttackType()); // 更改处置任务状态为处置中 deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTED); @@ -469,11 +469,11 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("PENGXIN_PLATFORM setup task times {} error {}: {}", deviceTask.getErrRetry(), - ret.getSecondParam(), deviceTask); + ret.getSecondParam(), deviceTask); } else { // 任务出错,不在重试,当做失败任务处理 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), - disposeTask.getFlowDirection(), 0L); + disposeTask.getFlowDirection(), 0L); log.error("PENGXIN_PLATFORM setup task error {}: {}", ret.getFirstParam(), deviceTask); } } @@ -490,7 +490,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 停止处置任务 ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null, - deviceTask.getExternId()); + deviceTask.getExternId()); if (ret.getFirstParam() == ErrorCode.ERR_OK) { log.info("PENGXIN_PLATFORM stop task succeed: {}, device taskId {}", deviceTask, ret.getSecondParam()); @@ -502,12 +502,94 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("PENGXIN_PLATFORM stop task times {} error {}: {}", deviceTask.getErrRetry(), - ret.getSecondParam(), deviceTask); + ret.getSecondParam(), deviceTask); } else { log.error("PENGXIN_PLATFORM stop task error {}: {}", ret.getFirstParam(), deviceTask); } } + /** + * Huawei ATIC device task run. + * + * @param ai the ai + * @param deviceTask the device task + * @param disposeTask the dispose task + */ + private void huaWeiDeviceTaskRun(AbilityInfo ai, DeviceTask deviceTask, DisposeTask disposeTask) { + MulReturnType ret; + + // 重试错误次数过多 + if (deviceTask.getErrRetry() >= DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { + return; + } + + // 设置任务状态为启动中 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING); + // 设置启动任务攻击类型状态 + deviceTaskManager.setExecAttackType(deviceTask.getId(), NetflowDirection.DIRECTION_BI, + deviceTask.getTaskAttackType()); + + ret = ai.getDb() + .runDispose(disposeTask.getDisposeObject(), disposeTask.getObjectType(), + disposeTask.getDisposeCapacity(), null, + null, (long) -(Helper.getTimestampDiffNow(disposeTask.getPlanEndTime()) / 60)); + + if (ret.getFirstParam() == ErrorCode.ERR_OK) { + // 设置攻击类型任务启动结果 + deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), + disposeTask.getFlowDirection(), deviceTask.getTaskAttackType()); + // 更改处置任务状态为处置中 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTED); + + log.info("HUAWEI_PLATFORM setup task succeed: {}, device taskId {}", deviceTask, ret.getSecondParam()); + + // 重置错误尝试次数 + deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0); + } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { + // 设置该任务为新任务,待下次重试启动 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_NEW); + // 记录任务出错重试次数 + deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); + log.error("HUAWEI_PLATFORM setup task times {} error {}: {}", deviceTask.getErrRetry(), + ret.getSecondParam(), deviceTask); + } else { + // 任务出错,不在重试,当做失败任务处理 + deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), + disposeTask.getFlowDirection(), 0L); + log.error("HUAWEI_PLATFORM setup task error {}: {}", ret.getFirstParam(), deviceTask); + } + } + + /** + * Huawei ATIC device task stop. + * + * @param ai the ai + * @param deviceTask the device task + * @param disposeTask the dispose task + */ + private void huaWeiDeviceTaskStop(AbilityInfo ai, DeviceTask deviceTask, DisposeTask disposeTask) { + MulReturnType ret; + + // 停止处置任务 + ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null, + deviceTask.getExternId()); + + if (ret.getFirstParam() == ErrorCode.ERR_OK) { + log.info("HUAWEI_PLATFORM stop task succeed: {}, device taskId {}", deviceTask, ret.getSecondParam()); + // 设置任务状态为结束 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_FINISHED); + deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0); + deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L); + } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { + // 记录任务出错重试次数 + deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); + log.error("HUAWEI_PLATFORM stop task times {} error {}: {}", deviceTask.getErrRetry(), + ret.getSecondParam(), deviceTask); + } else { + log.error("HUAWEI_PLATFORM stop task error {}: {}", ret.getFirstParam(), deviceTask); + } + } + /** * Dispose task manager schedule. */ @@ -517,7 +599,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 清理过期任务 for (DisposeTask v : disposeTaskManager.getExpiredTasks()) { log.info("Task {} {} {} is expired, expect finished at {}", - v.getId(), v.getDisposeCapacity(), v.getDisposeObject(), v.getPlanEndTime()); + v.getId(), v.getDisposeCapacity(), v.getDisposeObject(), v.getPlanEndTime()); // 设置任务状态,过期任务不再为设备创建处置任务 disposeTaskManager.changeDisposeTaskStatus(v.getId(), DisposeTaskStatus.TASK_EXPIRED); } @@ -542,8 +624,8 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { log.info("Add dispose task for device: {}", d.getDev()); if (!deviceTaskManager.addDisposeDeviceTaskInfo(v.getId(), d.getDev().getId(), - d.getDb() - .toDeviceAttackType(v.getAttackType()))) { + d.getDb() + .toDeviceAttackType(v.getAttackType()))) { log.error("Add task {} to device {} error", v, d); } }); @@ -601,6 +683,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { pengXinDeviceTaskRun(ai, v, task); break; + case HUAWEI_PLATFORM: + huaWeiDeviceTaskRun(ai, v, task); + break; + default: log.error("Unknown dispose device type: {}", ai.getDev()); break; @@ -672,6 +758,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { pengXinDeviceTaskStop(ai, v, task); break; + case HUAWEI_PLATFORM: + huaWeiDeviceTaskStop(ai, v, task); + break; + default: log.error("Unknown dispose device type: {}", ai.getDev()); break; @@ -722,7 +812,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { if (ret.getFirstParam() == ErrorCode.ERR_OK) { deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(), - ret.getSecondParam()); + ret.getSecondParam()); } } } diff --git a/src/main/java/com/dispose/service/impl/DisposeAbilityRouterServiceImpl.java b/src/main/java/com/dispose/service/impl/DisposeAbilityRouterServiceImpl.java index e6976220..78943217 100644 --- a/src/main/java/com/dispose/service/impl/DisposeAbilityRouterServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DisposeAbilityRouterServiceImpl.java @@ -5,6 +5,7 @@ import com.dispose.ability.impl.DpTechAbilityImpl; import com.dispose.ability.impl.HaoHanAbilityImpl; import com.dispose.ability.impl.PengXinAbilityImpl; import com.dispose.ability.impl.VirtualAbilityImpl; +import com.dispose.ability.impl.HuaWeiAbilityImpl; import com.dispose.common.DisposeCapacityType; import com.dispose.common.ErrorCode; import com.dispose.common.HttpType; @@ -115,6 +116,9 @@ public class DisposeAbilityRouterServiceImpl implements DisposeAbilityRouterServ case PENGXIN_PLATFORM: db = new PengXinAbilityImpl(); break; + case HUAWEI_PLATFORM: + db = new HuaWeiAbilityImpl(); + break; case VIRTUAL_DISPOSE: db = new VirtualAbilityImpl(); break; diff --git a/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java b/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java index bfa772cc..1abc4609 100644 --- a/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java +++ b/src/main/java/com/huawei/dispose/protocol/HuaWeiInterface.java @@ -36,12 +36,12 @@ public class HuaWeiInterface { * * @param baseUrlPath the base url path * @param token the token - * @param zone_ip zone ip + * @param zone_ip zone ip * @return the delete zone status */ - public ErrorCode createDivert(String baseUrlPath, String token, String[] zone_ip){ + public ErrorCode createDivert(String baseUrlPath, String token, String[] zone_ip) { //获取HTTP部分 - HttpResponse response = RestfulInterface.huaWeiProRun(baseUrlPath + "/divert", + HttpResponse response = RestfulInterface.huaWeiProRun(baseUrlPath, token, new HuaWeiCreatDivertReq(zone_ip), RequestMethod.POST); @@ -49,13 +49,13 @@ public class HuaWeiInterface { if (response != null) { if (response.getStatus() == HttpServletResponse.SC_CREATED) { return ErrorCode.ERR_OK; - }else if(response.getStatus() == HttpServletResponse.SC_BAD_REQUEST) { + } else if (response.getStatus() == HttpServletResponse.SC_BAD_REQUEST) { return ErrorCode.ERR_PARAMS; - }else if(response.getStatus() == HttpServletResponse.SC_CONFLICT){ + } else if (response.getStatus() == HttpServletResponse.SC_CONFLICT) { return ErrorCode.ERR_SPECIFIEDIP_EXISTS; } else if (response.getStatus() == HttpServletResponse.SC_PRECONDITION_FAILED) { return ErrorCode.ERR_TOKENNOTFOUND; - }else if(response.getStatus() == HttpServletResponse.SC_INTERNAL_SERVER_ERROR){ + } else if (response.getStatus() == HttpServletResponse.SC_INTERNAL_SERVER_ERROR) { return ErrorCode.ERR_SERVER_PROCESSREQ; } } @@ -69,12 +69,11 @@ public class HuaWeiInterface { * * @param baseUrlPath the base url path * @param token the token - * @param zone_ip zone ip * @return the delete zone status */ - public ErrorCode deleteZones(String baseUrlPath, String token, String zone_ip) { + public ErrorCode deleteZones(String baseUrlPath, String token) { //获取HTTP部分 - HttpResponse response = RestfulInterface.huaWeiProRun(baseUrlPath + "/divert/" + zone_ip, + HttpResponse response = RestfulInterface.huaWeiProRun(baseUrlPath, token, null, RequestMethod.DELETE); @@ -82,17 +81,31 @@ public class HuaWeiInterface { if (response != null) { if (response.getStatus() == HttpServletResponse.SC_OK) { return ErrorCode.ERR_OK; - }else if(response.getStatus() == HttpServletResponse.SC_BAD_REQUEST){ + } else if (response.getStatus() == HttpServletResponse.SC_BAD_REQUEST) { return ErrorCode.ERR_PARAMS; - }else if(response.getStatus() == HttpServletResponse.SC_NOT_FOUND){ + } else if (response.getStatus() == HttpServletResponse.SC_NOT_FOUND) { return ErrorCode.ERR_SPECIFIEDIP_NOTEXISTS; } else if (response.getStatus() == HttpServletResponse.SC_PRECONDITION_FAILED) { return ErrorCode.ERR_TOKENNOTFOUND; - }else if(response.getStatus() == HttpServletResponse.SC_INTERNAL_SERVER_ERROR){ + } else if (response.getStatus() == HttpServletResponse.SC_INTERNAL_SERVER_ERROR) { return ErrorCode.ERR_SERVER_PROCESSREQ; } } return ErrorCode.ERR_UNKNOWNCMD; } + + /** + * query all zones protocol resp dto. + * + * @param baseUrlPath the base url path + * @param token the token + * @return the http resp + */ + public HttpResponse queryAllZones(String baseUrlPath, String token) { + return RestfulInterface.huaWeiProRun(baseUrlPath, + token, + null, + RequestMethod.GET); + } } From e120949e2cea96225ae98b224315dac1e2b7ba39 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Wed, 18 Nov 2020 10:37:21 +0800 Subject: [PATCH 11/30] =?UTF-8?q?OCT=20REM:=201.=E4=BC=98=E5=8C=96Restful?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E6=8E=A5=E5=8F=A3=202.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E8=AE=BE=E5=A4=87=E8=8E=B7=E5=8F=96=E9=98=B2?= =?UTF-8?q?=E6=8A=A4=E5=AF=B9=E8=B1=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ability/impl/HuaWeiAbilityImpl.java | 4 +- .../com/dispose/restful/RestfulInterface.java | 55 +++++-------------- 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java b/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java index ef39eaa0..0a58604f 100644 --- a/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java @@ -258,13 +258,13 @@ public class HuaWeiAbilityImpl implements DisposeAbility { HttpResponse response = restfulInterface.queryAllZones(url, token); - if (response.getStatus() == ErrorCode.ERR_TOKENNOTFOUND.getCode()) { + if (response.getStatus() == HttpServletResponse.SC_PRECONDITION_FAILED) { // 重新登录获取 token upgradeToken(); response = restfulInterface.queryAllZones(url, token); } - return response.getStatus() == ErrorCode.ERR_OK.getCode(); + return response.getStatus() == HttpServletResponse.SC_OK; } catch ( Exception ex) { log.error(ex.getMessage()); diff --git a/src/main/java/com/dispose/restful/RestfulInterface.java b/src/main/java/com/dispose/restful/RestfulInterface.java index 1cd51374..0c61dc6b 100644 --- a/src/main/java/com/dispose/restful/RestfulInterface.java +++ b/src/main/java/com/dispose/restful/RestfulInterface.java @@ -54,12 +54,12 @@ public class RestfulInterface { * @param url the url * @param header the header * @param body the body - * @return the string + * @return the http response */ - private static String postJson(String url, Map header, String body) { + private static HttpResponse postJson(String url, Map header, String body) { HttpRequest.setGlobalTimeout(timeOutValue); return HttpRequest.post(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body) - .execute().body(); + .execute(); } /** @@ -67,55 +67,28 @@ public class RestfulInterface { * * @param url the url * @param header the header - * @return the json - */ - private static String getJson(String url, Map header) { - HttpRequest.setGlobalTimeout(timeOutValue); - return HttpRequest.get(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header) - .execute().body(); - } - - /** - * Gets http response. - * - * @param url the url - * @param header the header * @return the http response */ - private static HttpResponse getHttpResp(String url, Map header) { + private static HttpResponse getJson(String url, Map header) { HttpRequest.setGlobalTimeout(timeOutValue); return HttpRequest.get(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header) .execute(); } /** - * Put http response. + * Put json. * * @param url the url * @param header the header * @param body the body * @return the http response */ - private static HttpResponse putHttpResp(String url, Map header, String body) { + private static HttpResponse putJson(String url, Map header, String body) { HttpRequest.setGlobalTimeout(timeOutValue); return HttpRequest.put(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body) .execute(); } - /** - * Post http response. - * - * @param url the url - * @param header the header - * @param body the body - * @return the http response - */ - private static HttpResponse postHttpResp(String url, Map header, String body) { - HttpRequest.setGlobalTimeout(timeOutValue); - return HttpRequest.post(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body) - .execute(); - } - /** * Deletes http response. * @@ -123,7 +96,7 @@ public class RestfulInterface { * @param header the header * @return the http response */ - private static HttpResponse deleteHttpResp(String url, Map header, String body) { + private static HttpResponse deleteJson(String url, Map header, String body) { HttpRequest.setGlobalTimeout(timeOutValue); return HttpRequest.delete(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body) .execute(); @@ -149,7 +122,7 @@ public class RestfulInterface { log.debug("Restful request: {}: {}", url, reqJson); - String svrResp = postJson(url, httpHeadMap, reqJson); + String svrResp = postJson(url, httpHeadMap, reqJson).body(); if (svrResp == null) { log.debug("Server return null: {}", url); @@ -196,10 +169,10 @@ public class RestfulInterface { switch (reqType) { case GET: - svrResp = getJson(url, httpHeadMap); + svrResp = getJson(url, httpHeadMap).body(); break; case POST: - svrResp = postJson(url, httpHeadMap, reqJson); + svrResp = postJson(url, httpHeadMap, reqJson).body(); break; default: log.error("Unknown method: {}", reqType); @@ -255,16 +228,16 @@ public class RestfulInterface { switch (reqType) { case GET: - svrResp = getHttpResp(url, httpHeadMap); + svrResp = getJson(url, httpHeadMap); break; case POST: - svrResp = postHttpResp(url, httpHeadMap, reqJson); + svrResp = postJson(url, httpHeadMap, reqJson); break; case PUT: - svrResp = putHttpResp(url, httpHeadMap, reqJson); + svrResp = putJson(url, httpHeadMap, reqJson); break; case DELETE: - svrResp = deleteHttpResp(url, httpHeadMap, reqJson); + svrResp = deleteJson(url, httpHeadMap, reqJson); break; default: log.error("Unknown method: {}", reqType); From 0fd832d05c77d16a7d9c678d3245dadbb19461d3 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Wed, 18 Nov 2020 15:43:19 +0800 Subject: [PATCH 12/30] =?UTF-8?q?OCT=20REM:=201.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dispose/test/qa/TestCaseRun.java | 2 + .../dispose/test/qa/impl/JsonTestCaseRun.java | 2 +- .../testcase/qa/v200/P2TaskStartDispose.java | 455 ++++++++++++++++++ 3 files changed, 458 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/dispose/test/testcase/qa/v200/P2TaskStartDispose.java diff --git a/src/test/java/com/dispose/test/qa/TestCaseRun.java b/src/test/java/com/dispose/test/qa/TestCaseRun.java index f1f5a246..d4514314 100644 --- a/src/test/java/com/dispose/test/qa/TestCaseRun.java +++ b/src/test/java/com/dispose/test/qa/TestCaseRun.java @@ -17,6 +17,7 @@ import com.dispose.test.testcase.qa.v200.P2Logout; import com.dispose.test.testcase.qa.v200.P2TaskList; import com.dispose.test.testcase.qa.v200.P2TaskStart; import com.dispose.test.testcase.qa.v200.P2TaskStartMulIp; +import com.dispose.test.testcase.qa.v200.P2TaskStartDispose; import com.dispose.test.testcase.qa.v200.P2TaskStop; import com.dispose.test.testcase.qa.v200.P3All; @@ -73,6 +74,7 @@ public interface TestCaseRun { Collections.addAll(tolTestCase, P2TaskStart.getTestCase()); Collections.addAll(tolTestCase, P2TaskStartMulIp.getTestCase()); + Collections.addAll(tolTestCase, P2TaskStartDispose.getTestCase()); Collections.addAll(tolTestCase, P2TaskStop.getTestCase()); Collections.addAll(tolTestCase, P2TaskList.getTestCase()); diff --git a/src/test/java/com/dispose/test/qa/impl/JsonTestCaseRun.java b/src/test/java/com/dispose/test/qa/impl/JsonTestCaseRun.java index 2f4ef4bd..2a08ef53 100644 --- a/src/test/java/com/dispose/test/qa/impl/JsonTestCaseRun.java +++ b/src/test/java/com/dispose/test/qa/impl/JsonTestCaseRun.java @@ -107,7 +107,7 @@ public class JsonTestCaseRun extends CommonRestfulJson implements TestCaseRun { .filter(k -> k.getCaseJsonValue() != null && k.getCaseJsonValue().length() > 0) .filter(k -> usedId.size() == 0 || usedId.stream().anyMatch(v -> Objects.equals(v, k.getId()))) .filter(k -> Arrays.stream(CommonEnvironment.commonPriorityFilter).anyMatch(v -> k.getPriority() == v)) - //.filter(k -> k.getId() >= 20000) + //.filter(k -> k.getId() >= 1300) .collect(Collectors.toList()); } diff --git a/src/test/java/com/dispose/test/testcase/qa/v200/P2TaskStartDispose.java b/src/test/java/com/dispose/test/testcase/qa/v200/P2TaskStartDispose.java new file mode 100644 index 00000000..affcb741 --- /dev/null +++ b/src/test/java/com/dispose/test/testcase/qa/v200/P2TaskStartDispose.java @@ -0,0 +1,455 @@ +package com.dispose.test.testcase.qa.v200; + +import com.dispose.common.ErrorCode; +import com.dispose.pojo.dto.protocol.base.BaseRespStatus; +import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; +import com.dispose.pojo.dto.protocol.task.DisposeTaskStartRsp; +import com.dispose.pojo.dto.protocol.task.TaskStartMulRsp; +import com.dispose.test.common.QATestItem; +import com.dispose.test.common.TestPriority; +import com.dispose.test.common.VerifyProtoRespCallback; +import com.dispose.test.qa.TestCaseRun; +import org.junit.Assert; +import org.springframework.web.bind.annotation.RequestMethod; + +/** + * The type P 2 task start dispose ip. + * + * @author + */ +public class P2TaskStartDispose { + + /** + * The constant BASE_P2_TASK_START_MUL_ID. + */ + public static final int BASE_P2_TASK_START_MUL_ID = 1300; + /** + * The constant testItemArray. + */ + private static final QATestItem[] testItemArray = new QATestItem[]{ + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID) + .name("对多个IP指定攻击类型进行清洗") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":2,\"attackType\":[1,2,3,4,5]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }).build(), + + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 1) + .name("对多个IP全部攻击类型进行清洗") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":2,\"attackType\":[-1]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 2) + .name("对多个IP全部攻击类型进行清洗") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":2}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 3) + .name("对多个IPV6指定攻击类型进行清洗") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"ABCD:EF01:2345:6789:ABCD:EF01:2345:6789\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"ABCD:EF01:2345:6789:ABCD:EF01:2345:1234\", \"objectType\": 1, \"areaCode\": 0}]," + + "\"disposeTime\":10,\"flowDirection\":2, \"attackType\":[1,2,3,4,5]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 4) + .name("对多个IPV6全部攻击类型进行清洗") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"ABCD:EF01:2345:6789:ABCD:EF01:2345:6789\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"ABCD:EF01:2345:6789:ABCD:EF01:2345:1234\", \"objectType\": 1, \"areaCode\": 0}]," + + "\"disposeTime\":10,\"flowDirection\":2, \"attackType\":[-1]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 5) + .name("对IPV4和IPV6进行清洗") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"ABCD:EF01:2345:6789:ABCD:EF01:2345:1234\", \"objectType\": 1, \"areaCode\": 0}]," + + "\"disposeTime\":10,\"flowDirection\":2, \"attackType\":[-1]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 6) + .name("对多个IP入向进行清洗") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":0,\"attackType\":[-1]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 7) + .name("对多个IP出向进行清洗") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":1,\"attackType\":[-1]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 8) + .name("对多个IP进行高防处置") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":2," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":2,\"attackType\":[-1]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 9) + .name("对多个IP进行压制处置") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":1," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":2,\"attackType\":[1,2,3,4,5]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 10) + .name("对多个IP进行检测处置") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":3," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":2,\"attackType\":[1,2,3,4,5]}}") + .rspClass(DisposeTaskStartRsp.class) + .rspCode(ErrorCode.ERR_OK) + .autoLogin(true) + .verifyCallback((VerifyProtoRespCallback) (v, e, c) -> { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertNotNull(v.getMsgContent().getItems()); + + v.getMsgContent().getItems().forEach(k -> { + Assert.assertNotNull(k.getDisposeObject()); + Assert.assertEquals((long) k.getStatus(), e.getCode()); + Assert.assertNotNull(k.getTaskId()); + Assert.assertNotNull(k.getExpireTime()); + }); + }) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 11) + .name("msgContent为空") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":}") + .rspClass(TaskStartMulRsp.class) + .rspCode(ErrorCode.ERR_PARAMEXCEPTION) + .autoLogin(true) + .verifyCallback(P2TaskStartDispose::verifyJsonExceptionResp) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 12) + .name("type为null") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":null," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":2,\"attackType\":[-1]}}") + .rspClass(TaskStartMulRsp.class) + .rspCode(ErrorCode.ERR_PARAMEXCEPTION) + .autoLogin(true) + .verifyCallback(P2TaskStartDispose::verifyJsonExceptionResp) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 13) + .name("type为字符串") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":\"0\"," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":10," + + "\"flowDirection\":2,\"attackType\":[-1]}}") + .rspClass(TaskStartMulRsp.class) + .rspCode(ErrorCode.ERR_PARAMEXCEPTION) + .autoLogin(true) + .verifyCallback(P2TaskStartDispose::verifyJsonExceptionResp) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 14) + .name("disposeObjects为null") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":null,\"disposeTime\":10," + + "\"flowDirection\":2,\"attackType\":[-1]}}") + .rspClass(TaskStartMulRsp.class) + .rspCode(ErrorCode.ERR_PARAMEXCEPTION) + .autoLogin(true) + .verifyCallback(P2TaskStartDispose::verifyJsonExceptionResp) + .build(), + + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 15) + .name("disposeTime为null") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":null," + + "\"flowDirection\":2,\"attackType\":[-1]}}") + .rspClass(TaskStartMulRsp.class) + .rspCode(ErrorCode.ERR_PARAMEXCEPTION) + .autoLogin(true) + .verifyCallback(P2TaskStartDispose::verifyJsonExceptionResp) + .build(), + + QATestItem.builder() + .id(BASE_P2_TASK_START_MUL_ID + 16) + .name("disposeTime为字符串") + .priority(TestPriority.P2_PRIORITY) + .urlPath("/task/startDispose") + .method(RequestMethod.POST) + .caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598597142580,\"msgContent\":{\"type\":0," + + "\"disposeObjects\":[{\"disposeObject\":\"192.168.50.4\", \"objectType\": 1, \"areaCode\": 0}," + + "{\"disposeObject\":\"192.168.50.3\", \"objectType\": 1, \"areaCode\": 0}],\"disposeTime\":\"10\"," + + "\"flowDirection\":2,\"attackType\":[-1]}}") + .rspClass(TaskStartMulRsp.class) + .rspCode(ErrorCode.ERR_PARAMEXCEPTION) + .autoLogin(true) + .verifyCallback(P2TaskStartDispose::verifyJsonExceptionResp) + .build(), + }; + + /** + * Get test case qa test item [ ]. + * + * @return the qa test item [ ] + */ + public static QATestItem[] getTestCase() { + return testItemArray; + } + + /** + * Verify json exception resp. + * + * @param v the v + * @param e the e + * @param c the c + */ + private static void verifyJsonExceptionResp(ProtocolRespDTO v, ErrorCode e, + TestCaseRun c) { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getMsgContent()); + Assert.assertEquals((long) v.getCode(), e.getHttpCode()); + Assert.assertEquals((long) v.getMsgContent().getStatus(), e.getCode()); + } +} From ee0dbf65259f0c1880881ea539f98921ae3e2ad1 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Thu, 19 Nov 2020 10:26:35 +0800 Subject: [PATCH 13/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=97=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/dispose/controller/DisposeTaskController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/dispose/controller/DisposeTaskController.java b/src/main/java/com/dispose/controller/DisposeTaskController.java index 70a9001a..57bff311 100644 --- a/src/main/java/com/dispose/controller/DisposeTaskController.java +++ b/src/main/java/com/dispose/controller/DisposeTaskController.java @@ -101,7 +101,7 @@ public class DisposeTaskController { Long devId = Long.parseLong(Optional.ofNullable(req.getDeviceId()).orElse("-1")); Long aId = userAccountService.getUserIdByAuthHead(Objects.requireNonNull(headers.get("Authorization")).get(0)); DisposeCapacityType capType = CommonEnumHandler.codeOf(DisposeCapacityType.class, req.getType()); - String endTime = String.valueOf(req.getDisposeTime() == -1 ? 52560000 : req.getDisposeTime()); + String endTime = String.valueOf(req.getDisposeTime() == -1 ? 5256000: req.getDisposeTime()); NetflowDirection netDir = CommonEnumHandler.codeOf(NetflowDirection.class, Optional.ofNullable(req.getFlowDirection()).orElse(2)); Long attackType = DDoSAttackType.getTypeMaskFromAttackType(Optional.ofNullable(req.getAttackType()) From 87ab387a5d5a4fc12baddb54936b8c016fa5710b Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Mon, 23 Nov 2020 11:12:17 +0800 Subject: [PATCH 14/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B5=A9=E7=80=9A=E8=AE=BE=E5=A4=87=E5=90=AF=E5=8A=A8=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dispose/service/impl/DeviceTaskManagerServiceImpl.java | 1 - src/main/java/com/haohan/dispose/protocol/HaoHanInterface.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 13efc6b1..9828342d 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -595,7 +595,6 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { */ @Override public void disposeTaskManagerSchedule() { - // 清理过期任务 for (DisposeTask v : disposeTaskManager.getExpiredTasks()) { log.info("Task {} {} {} is expired, expect finished at {}", diff --git a/src/main/java/com/haohan/dispose/protocol/HaoHanInterface.java b/src/main/java/com/haohan/dispose/protocol/HaoHanInterface.java index 8dde6a85..c7bda709 100644 --- a/src/main/java/com/haohan/dispose/protocol/HaoHanInterface.java +++ b/src/main/java/com/haohan/dispose/protocol/HaoHanInterface.java @@ -83,7 +83,7 @@ public class HaoHanInterface { // 自动停止多余的旧任务 ids.forEach(v -> { log.debug("HAOHAN_PLATFORM automatic stop more task: {}", v); - stopClean(baseUrlPath, Integer.parseInt(maxId), readme); + stopClean(baseUrlPath, Integer.parseInt(v), readme); }); // 更改返回值 From dda7c18a2a3f71849607d738908c1acb7c75521d Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Mon, 23 Nov 2020 17:58:11 +0800 Subject: [PATCH 15/30] =?UTF-8?q?OCT=20REM:=201.=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1=E6=97=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E5=BD=93=E5=89=8D=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/impl/DisposeTaskManagerImpl.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java b/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java index 0239af82..7fdde139 100644 --- a/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java @@ -3,10 +3,13 @@ package com.dispose.manager.impl; import com.dispose.common.DisposeCapacityType; import com.dispose.common.DisposeTaskStatus; import com.dispose.common.ErrorCode; +import com.dispose.manager.DeviceTaskManager; import com.dispose.manager.DisposeTaskManager; import com.dispose.mapper.DisposeTaskMapper; import com.dispose.pojo.entity.DisposeTask; +import com.dispose.pojo.po.AbilityInfo; import com.dispose.pojo.po.MulReturnType; +import com.dispose.service.DisposeAbilityRouterService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -24,12 +27,29 @@ import java.util.List; @Component @Slf4j public class DisposeTaskManagerImpl implements DisposeTaskManager { + /** + * The Device task manager. + */ + @Resource + private DeviceTaskManager deviceTaskManager; + + /** + * The Dispose ability router service. + */ + @Resource + private DisposeAbilityRouterService disposeAbilityRouterService; /** * The Dispose task mapper. */ @Resource private DisposeTaskMapper disposeTaskMapper; + /** + * The Dispose task manager. + */ + @Resource + private DisposeTaskManager disposeTaskManager; + /** * Gets dispose task. * @@ -143,6 +163,29 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager { return new MulReturnType<>(pageInfo, new ArrayList<>()); } + //根据taskId遍历设置处置任务 + for (DisposeTask v : preList) { + DisposeTask task = disposeTaskManager.getDisposeTaskById(v.getId()); + + task.getDeviceTask().forEach(d -> { + // 获取设备 + AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(d.getDeviceId()); + + // 如果设备正常,查询当前设备的任务状态 + if (ai != null) { + if (d.getExternId() != null && d.getExternId().length() > 0) { + log.info("deviceId:{}, taskId:{}", d.getDeviceId(), d.getTaskId()); + MulReturnType ret = ai.getDb().taskStatus(d.getExternId()); + + if (ret.getFirstParam() == ErrorCode.ERR_OK) { + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(d.getExternId(), + ret.getSecondParam()); + } + } + } + }); + } + List taskList = new ArrayList<>(disposeTaskMapper.selectByIdSet(taskId)); return new MulReturnType<>(pageInfo, taskList); From f12ba229fd642fb0ac2bbc8a92ecae944d75cf3f Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Tue, 24 Nov 2020 16:28:22 +0800 Subject: [PATCH 16/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=88=B7=E6=96=B0=E8=AE=BE=E5=A4=87=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E6=8E=A5=E5=8F=A3=202.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=95=B0=E6=8D=AE=E5=BA=93=E3=80=81manager=E5=B1=82?= =?UTF-8?q?=E6=A0=B9=E6=8D=AEid=E8=8E=B7=E5=8F=96=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8A=9F=E8=83=BD=EF=BC=8C=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9B=B4=E6=8E=A5=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E7=AC=A6=E5=90=88=E8=A6=81=E6=B1=82=E7=9A=84=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=203.=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dispose/manager/DeviceTaskManager.java | 7 ++++ .../manager/impl/DeviceTaskManagerImpl.java | 10 ++++++ .../manager/impl/DisposeTaskManagerImpl.java | 24 -------------- .../com/dispose/mapper/DeviceTaskMapper.java | 8 +++++ .../impl/DeviceTaskManagerServiceImpl.java | 32 ++++++++----------- src/main/resources/mappers/DeviceTask.xml | 11 +++++++ 6 files changed, 50 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/dispose/manager/DeviceTaskManager.java b/src/main/java/com/dispose/manager/DeviceTaskManager.java index 571b1cb1..c7feebbd 100644 --- a/src/main/java/com/dispose/manager/DeviceTaskManager.java +++ b/src/main/java/com/dispose/manager/DeviceTaskManager.java @@ -134,4 +134,11 @@ public interface DeviceTaskManager { * @return the task by id */ DeviceTask getTaskById(Long id); + + /** + * Gets PengXin device task info by startId. + * + * @return the minId task info. + */ + List getPengXinTaskById(Long startId); } diff --git a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java index 7abccc58..9373beb2 100644 --- a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java @@ -295,4 +295,14 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager { public DeviceTask getTaskById(Long id) { return deviceTaskMapper.getTaskInfoById(id); } + + /** + * Gets PengXin device task info by startId. + * + * @return the minId task info. + */ + @Override + public List getPengXinTaskById(Long startId){ + return deviceTaskMapper.getPengXinTask(startId); + } } diff --git a/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java b/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java index 7fdde139..c76b1598 100644 --- a/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DisposeTaskManagerImpl.java @@ -7,7 +7,6 @@ import com.dispose.manager.DeviceTaskManager; import com.dispose.manager.DisposeTaskManager; import com.dispose.mapper.DisposeTaskMapper; import com.dispose.pojo.entity.DisposeTask; -import com.dispose.pojo.po.AbilityInfo; import com.dispose.pojo.po.MulReturnType; import com.dispose.service.DisposeAbilityRouterService; import com.github.pagehelper.PageHelper; @@ -163,29 +162,6 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager { return new MulReturnType<>(pageInfo, new ArrayList<>()); } - //根据taskId遍历设置处置任务 - for (DisposeTask v : preList) { - DisposeTask task = disposeTaskManager.getDisposeTaskById(v.getId()); - - task.getDeviceTask().forEach(d -> { - // 获取设备 - AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(d.getDeviceId()); - - // 如果设备正常,查询当前设备的任务状态 - if (ai != null) { - if (d.getExternId() != null && d.getExternId().length() > 0) { - log.info("deviceId:{}, taskId:{}", d.getDeviceId(), d.getTaskId()); - MulReturnType ret = ai.getDb().taskStatus(d.getExternId()); - - if (ret.getFirstParam() == ErrorCode.ERR_OK) { - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(d.getExternId(), - ret.getSecondParam()); - } - } - } - }); - } - List taskList = new ArrayList<>(disposeTaskMapper.selectByIdSet(taskId)); return new MulReturnType<>(pageInfo, taskList); diff --git a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java index dc7e5c6a..f31656ee 100644 --- a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java +++ b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java @@ -154,4 +154,12 @@ public interface DeviceTaskMapper { */ int changeExternId(@Param("id") Long id, @Param("externId") String externId); + + /** + * Gets PengXin device task info. + * + * @param startId the start id + * @return PengXin device task info + */ + List getPengXinTask(Long startId); } diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 9828342d..3f302e47 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -20,6 +20,8 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.ConcurrentHashMap; /** @@ -775,20 +777,20 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { * Device task status schedule. */ public void deviceTaskStatusSchedule() { - // 遍历所有新的设备处置任务 - for (DeviceTask v : deviceTaskManager.getStartedDisposeDeviceTaskInfo()) { - DisposeTask task = disposeTaskManager.getDisposeTaskById(v.getTaskId()); + List taskList = new ArrayList<>(); - // 保护代码,理论上不存在该情况 - assert task != null; + //处置任务设备类型为鹏信设备,任务状态不再变更 + for (Long i = 1L; deviceTaskManager.getPengXinTaskById(i).size() != 0; i = taskList.get(taskList.size() - 1).getId() + 1) { + log.debug("startId:{}", i); + taskList.addAll(deviceTaskManager.getPengXinTaskById(i)); + } + for (DeviceTask v : taskList) { // 获取设备 AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(v.getDeviceId()); // 如果设备已经删除或者禁用,跳过处理 if (ai == null) { - // 设置任务状态为已完成 - deviceTaskManager.changeDisposeDeviceTaskInfoStatus(v.getId(), DisposeTaskStatus.TASK_FINISHED); continue; } @@ -802,18 +804,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 设置标志,避免对同一个IP重复调用停止处置命令 taskCache.put(taskStatusKey, true); - // 任务预计结束5分钟内, - if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 5 * 60) { - if (v.getEndTime() == null || Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) { + if (v.getExternId() != null && v.getExternId().length() > 0) { + MulReturnType ret = ai.getDb().taskStatus(v.getExternId()); - if (v.getExternId() != null && v.getExternId().length() > 0) { - MulReturnType ret = ai.getDb().taskStatus(v.getExternId()); - - if (ret.getFirstParam() == ErrorCode.ERR_OK) { - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(), - ret.getSecondParam()); - } - } + if (ret.getFirstParam() == ErrorCode.ERR_OK) { + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(), + ret.getSecondParam()); } } diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index 7071efb5..5c527b9f 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -130,4 +130,15 @@ WHERE id = #{id} + \ No newline at end of file From c9d48edd1fb688dad4b07b1451352d41d2e5e257 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Tue, 24 Nov 2020 18:43:20 +0800 Subject: [PATCH 17/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/dispose/manager/DeviceTaskManager.java | 2 +- src/main/java/com/dispose/mapper/DeviceTaskMapper.java | 4 ++-- src/main/resources/mappers/DeviceTask.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/dispose/manager/DeviceTaskManager.java b/src/main/java/com/dispose/manager/DeviceTaskManager.java index c7feebbd..8f45abef 100644 --- a/src/main/java/com/dispose/manager/DeviceTaskManager.java +++ b/src/main/java/com/dispose/manager/DeviceTaskManager.java @@ -51,7 +51,7 @@ public interface DeviceTaskManager { * @param id the id * @return the dispose device task status */ - int changeDisposeDeviceTaskInfoDevStatus(String id, Long devStatus); + int changeDisposeDeviceTaskInfoDevStatus(Long id, Long devStatus); /** * Sets exec attack type. diff --git a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java index f31656ee..7e1cec48 100644 --- a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java +++ b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java @@ -88,11 +88,11 @@ public interface DeviceTaskMapper { /** * Change task dev status int. * - * @param externId the extern id + * @param id the id * @param devStatus the dev status * @return the int */ - int changeTaskDevStatus(@Param("externId") String externId, + int changeTaskDevStatus(@Param("id") Long id, @Param("devStatus") Long devStatus); /** diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index 5c527b9f..04c4c88b 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -91,7 +91,7 @@ UPDATE device_task SET devStatus = #{devStatus} - WHERE externId = #{externId} AND devStatus != #{devStatus} + WHERE id = #{id} AND devStatus != #{devStatus} From 119008860f3b7968c332886d9bd1a6a474080ef0 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Tue, 24 Nov 2020 18:46:25 +0800 Subject: [PATCH 18/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dispose/manager/impl/DeviceTaskManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java index 9373beb2..1615e20f 100644 --- a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java @@ -87,7 +87,7 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager { * @return the long */ @Override - public int changeDisposeDeviceTaskInfoDevStatus(String id, Long devStatus) { + public int changeDisposeDeviceTaskInfoDevStatus(Long id, Long devStatus) { return deviceTaskMapper.changeTaskDevStatus(id, devStatus); } From d42467968ade1d9c9848b7ccbc68936463fa15c1 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Wed, 25 Nov 2020 09:25:35 +0800 Subject: [PATCH 19/30] =?UTF-8?q?OCT=20REM:=201.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E4=BB=BB=E5=8A=A1=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=A0=81=202.=E5=90=AF=E5=8A=A8=E3=80=81=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1=E6=97=B6=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E8=AE=BE=E5=A4=87=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DeviceTaskManagerServiceImpl.java | 21 ++++- .../dispose/common/PengXinTaskStatus.java | 92 +++++++++++++++++++ 2 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/pengxin/dispose/common/PengXinTaskStatus.java diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 3f302e47..b929ec4a 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -14,6 +14,7 @@ import com.dispose.pojo.po.AbilityInfo; import com.dispose.pojo.po.MulReturnType; import com.dispose.service.DeviceTaskManagerService; import com.dispose.service.DisposeAbilityRouterService; +import com.pengxin.dispose.common.PengXinTaskStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; @@ -442,6 +443,8 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 设置任务状态为启动中 deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING); + // 设置设备任务状态为启动中 + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), (long) PengXinTaskStatus.TASK_STARTING.getValue()); // 设置启动任务攻击类型状态 deviceTaskManager.setExecAttackType(deviceTask.getId(), NetflowDirection.DIRECTION_BI, deviceTask.getTaskAttackType()); @@ -468,6 +471,9 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { // 设置该任务为新任务,待下次重试启动 deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_NEW); + // 设置设备任务状态为启动处置任务失败 + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), + (long) PengXinTaskStatus.TASK_STARTED_FAILED.getValue()); // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("PENGXIN_PLATFORM setup task times {} error {}: {}", deviceTask.getErrRetry(), @@ -476,6 +482,9 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 任务出错,不在重试,当做失败任务处理 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L); + // 设置设备任务状态为启动处置任务失败 + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), + (long) PengXinTaskStatus.TASK_STARTED_FAILED.getValue()); log.error("PENGXIN_PLATFORM setup task error {}: {}", ret.getFirstParam(), deviceTask); } } @@ -490,6 +499,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { private void pengXinDeviceTaskStop(AbilityInfo ai, DeviceTask deviceTask, DisposeTask disposeTask) { MulReturnType ret; + // 设置设备任务状态为解封中 + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), + (long) PengXinTaskStatus.TASK_UNBLOCKING.getValue()); + // 停止处置任务 ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null, deviceTask.getExternId()); @@ -501,11 +514,17 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0); deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L); } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { + // 设置设备任务状态为解封失败 + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), + (long) PengXinTaskStatus.TASK_UNBLOCKED_FAILED.getValue()); // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("PENGXIN_PLATFORM stop task times {} error {}: {}", deviceTask.getErrRetry(), ret.getSecondParam(), deviceTask); } else { + // 设置设备任务状态为解封失败 + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), + (long) PengXinTaskStatus.TASK_UNBLOCKED_FAILED.getValue()); log.error("PENGXIN_PLATFORM stop task error {}: {}", ret.getFirstParam(), deviceTask); } } @@ -808,7 +827,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { MulReturnType ret = ai.getDb().taskStatus(v.getExternId()); if (ret.getFirstParam() == ErrorCode.ERR_OK) { - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(), + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getId(), ret.getSecondParam()); } } diff --git a/src/main/java/com/pengxin/dispose/common/PengXinTaskStatus.java b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatus.java new file mode 100644 index 00000000..179068aa --- /dev/null +++ b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatus.java @@ -0,0 +1,92 @@ +package com.pengxin.dispose.common; + +import com.dispose.common.BaseEnum; + +/** + * The enum Dispose task status. + * + * @author + */ +public enum PengXinTaskStatus implements BaseEnum { + /** + * The Task starting. + */ + TASK_STARTING(0, "启动中"), + /** + * The Task started. + */ + TASK_STARTED(1, "封堵中"), + /** + * The user aborted Task finished . + */ + TASK_FINISHED_USER(2, "用户中止"), + /** + * The Task finished automatically when the scheduled time is reached. + */ + TASK_FINISHED_TIME(3, "已结束"), + /** + * The Task started failed. + */ + TASK_STARTED_FAILED(4, "设备启动处置任务失败"), + /** + * The Task reviewing. + */ + TASK_REVIEWING(5, "待审核"), + /** + * The Task reviewed failed. + */ + TASK_REVIEWED_FAILED(6, "审核失败"), + /** + * The Task unblocked failed. + */ + TASK_UNBLOCKED_FAILED(7, "解封失败"), + /** + * The Task unblocked. + */ + TASK_UNBLOCKED(8, "解封成功"), + /** + * The Task unblocking. + */ + TASK_UNBLOCKING(9, "解封中"), + ; + + /** + * The Code. + */ + private final Integer code; + /** + * The Readme. + */ + private final String readme; + + /** + * Instantiates a new Dispose task status. + * + * @param code the code + * @param readme the readme + */ + PengXinTaskStatus(int code, String readme) { + this.code = code; + this.readme = readme; + } + + /** + * Gets value. + * + * @return the value + */ + @Override + public Integer getValue() { + return this.code; + } + + /** + * Gets description. + * + * @return the description + */ + @Override + public String getDescription() { + return this.readme; + } +} From 57979598b6b72a6cadf80c5cf184c7c5c4313dcd Mon Sep 17 00:00:00 2001 From: HuangXin Date: Wed, 25 Nov 2020 14:35:36 +0800 Subject: [PATCH 20/30] =?UTF-8?q?OCT=20REM:=201.=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=83=A8=E5=88=86CheckStyle=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dispose/manager/DeviceTaskManager.java | 12 +++++++----- .../huawei/dispose/common/HuaWeiCreatDivertReq.java | 4 +++- .../dispose/common/PengXinTaskStatusItem.java | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/dispose/manager/DeviceTaskManager.java b/src/main/java/com/dispose/manager/DeviceTaskManager.java index 8f45abef..9f313ad2 100644 --- a/src/main/java/com/dispose/manager/DeviceTaskManager.java +++ b/src/main/java/com/dispose/manager/DeviceTaskManager.java @@ -46,10 +46,11 @@ public interface DeviceTaskManager { boolean changeDisposeDeviceTaskInfoStatus(Long id, DisposeTaskStatus status); /** - * Gets dispose device task status. + * Change dispose device task info dev status int. * - * @param id the id - * @return the dispose device task status + * @param id the id + * @param devStatus the dev status + * @return the int */ int changeDisposeDeviceTaskInfoDevStatus(Long id, Long devStatus); @@ -136,9 +137,10 @@ public interface DeviceTaskManager { DeviceTask getTaskById(Long id); /** - * Gets PengXin device task info by startId. + * Gets peng xin task by id. * - * @return the minId task info. + * @param startId the start id + * @return the peng xin task by id */ List getPengXinTaskById(Long startId); } diff --git a/src/main/java/com/huawei/dispose/common/HuaWeiCreatDivertReq.java b/src/main/java/com/huawei/dispose/common/HuaWeiCreatDivertReq.java index 1805a67f..f1d41965 100644 --- a/src/main/java/com/huawei/dispose/common/HuaWeiCreatDivertReq.java +++ b/src/main/java/com/huawei/dispose/common/HuaWeiCreatDivertReq.java @@ -1,6 +1,7 @@ package com.huawei.dispose.common; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import lombok.AllArgsConstructor; import lombok.Builder; @@ -22,5 +23,6 @@ public class HuaWeiCreatDivertReq { /** * The array zone ip. */ - private String[] zone_ip; + @JsonProperty("zone_ip") + private String[] zoneIp; } diff --git a/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusItem.java b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusItem.java index 2abebcf4..6ab93c42 100644 --- a/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusItem.java +++ b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatusItem.java @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; /** - * The type Peng xin tast status item. + * The type Peng xin task status item. * * @author */ From 1d157e2d548808373dd0ea8812694dd72249d50e Mon Sep 17 00:00:00 2001 From: HuangXin Date: Wed, 25 Nov 2020 15:19:24 +0800 Subject: [PATCH 21/30] =?UTF-8?q?OCT=20REM:=201.=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E4=B8=8B=E5=8F=91=E5=A4=84?= =?UTF-8?q?=E7=BD=AE=E3=80=81=E5=81=9C=E6=AD=A2=E5=A4=84=E7=BD=AE=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E9=94=99=E8=AF=AF=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 --- .../ability/impl/PengXinAbilityImpl.java | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java index c4d90511..29577d18 100644 --- a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java @@ -7,8 +7,6 @@ import com.dispose.common.ErrorCode; import com.dispose.common.Helper; import com.dispose.common.IpAddrType; import com.dispose.common.NetflowDirection; -import com.dispose.manager.DisposeTaskManager; -import com.dispose.mapper.DisposeDeviceMapper; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; import com.dispose.pojo.po.MulReturnType; import com.dispose.pojo.vo.DeviceFirewareInfo; @@ -26,7 +24,6 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; import javax.annotation.Nullable; -import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; @@ -54,16 +51,6 @@ public class PengXinAbilityImpl implements DisposeAbility { * The Peng xin dispose type. */ private final Integer[] pengXinDisposeType = new Integer[]{0, 4, 1, 3}; - /** - * The Dispose task manager. - */ - @Resource - private DisposeTaskManager disposeTaskManager; - /** - * The Dispose device mapper. - */ - @Resource - private DisposeDeviceMapper disposeDeviceMapper; /** * The Task req id. */ @@ -195,8 +182,20 @@ public class PengXinAbilityImpl implements DisposeAbility { return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); } - log.debug("----Finish PengXin Start Cleanup Task: {}", disposeObject); - return new MulReturnType<>(ErrorCode.ERR_OK, rspInfo.getMsgContent().getItems().get(0).getTaskId()); + if (rspInfo.getMsgContent().getItems().size() == 0) { + log.error("----Error PengXin start clean {} server return nothing", disposeObject); + return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + } else { + int errCode = rspInfo.getMsgContent().getItems().get(0).getStatus(); + + if (errCode != ErrorCode.ERR_OK.getCode()) { + log.error("----Error PengXin start clean {} server return error: {}", disposeObject, errCode); + return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + } + + log.debug("----Finish PengXin Start Cleanup Task: {}", disposeObject); + return new MulReturnType<>(ErrorCode.ERR_OK, rspInfo.getMsgContent().getItems().get(0).getTaskId()); + } } catch (Exception ex) { log.error("----Exception PengXin Start Cleanup Task: {}, {}, {}", disposeObject, nfDirection, duration); return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, null); @@ -251,8 +250,20 @@ public class PengXinAbilityImpl implements DisposeAbility { return new MulReturnType<>(ErrorCode.ERR_CALLDEVICE, null); } - log.debug("----Finish PengXin Stop Cleanup Task: {}", taskId); - return new MulReturnType<>(ErrorCode.ERR_OK, null); + if (rspInfo.getMsgContent().getItems().size() == 0) { + log.error("----Error PengXin stop clean {} server return nothing", disposeObject); + return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + } else { + int errCode = rspInfo.getMsgContent().getItems().get(0).getStatus(); + + if (errCode != ErrorCode.ERR_OK.getCode()) { + log.error("----Error PengXin stop clean {} server return error: {}", disposeObject, errCode); + return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + } + + log.debug("----Finish PengXin Stop Cleanup Task: {}", taskId); + return new MulReturnType<>(ErrorCode.ERR_OK, null); + } } catch (Exception ex) { log.error("----Exception PengXin Stop Cleanup Task: {}, {}, {}", disposeObject, nfDirection, taskId); return new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, null); From 37bd4aacb6d631d45a7d402417e461097b1504e6 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Wed, 25 Nov 2020 17:28:54 +0800 Subject: [PATCH 22/30] =?UTF-8?q?OCT=20REM:=201.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=202.=E4=BF=AE=E6=94=B9=E9=B9=8F?= =?UTF-8?q?=E4=BF=A1=E8=AE=BE=E5=A4=87=E6=89=A7=E8=A1=8C=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E9=94=99=E8=AF=AF=E7=A0=81=203.=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E3=80=81=E5=81=9C=E6=AD=A2=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=204.=E4=BF=AE=E6=94=B9=E5=AE=9A=E6=97=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=A4=84=E7=BD=AE=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ability/impl/PengXinAbilityImpl.java | 10 +++--- .../java/com/dispose/common/ErrorCode.java | 6 +++- .../dispose/manager/DeviceTaskManager.java | 7 ++-- .../manager/impl/DeviceTaskManagerImpl.java | 6 ++-- .../com/dispose/mapper/DeviceTaskMapper.java | 3 +- .../impl/DeviceTaskManagerServiceImpl.java | 34 +++---------------- src/main/resources/mappers/DeviceTask.xml | 11 +++--- 7 files changed, 26 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java index 29577d18..a86c66d5 100644 --- a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java @@ -179,18 +179,18 @@ public class PengXinAbilityImpl implements DisposeAbility { if (rspInfo == null || rspInfo.getCode() != ErrorCode.ERR_OK.getHttpCode()) { log.error("----Error PengXin start clean {} server return error", disposeObject); - return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + return new MulReturnType<>(ErrorCode.ERR_PENGXIN_ERROR, null); } if (rspInfo.getMsgContent().getItems().size() == 0) { log.error("----Error PengXin start clean {} server return nothing", disposeObject); - return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + return new MulReturnType<>(ErrorCode.ERR_PENGXIN_ERROR, null); } else { int errCode = rspInfo.getMsgContent().getItems().get(0).getStatus(); if (errCode != ErrorCode.ERR_OK.getCode()) { log.error("----Error PengXin start clean {} server return error: {}", disposeObject, errCode); - return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + return new MulReturnType<>(ErrorCode.ERR_PENGXIN_ERROR, null); } log.debug("----Finish PengXin Start Cleanup Task: {}", disposeObject); @@ -252,13 +252,13 @@ public class PengXinAbilityImpl implements DisposeAbility { if (rspInfo.getMsgContent().getItems().size() == 0) { log.error("----Error PengXin stop clean {} server return nothing", disposeObject); - return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + return new MulReturnType<>(ErrorCode.ERR_PENGXIN_ERROR, null); } else { int errCode = rspInfo.getMsgContent().getItems().get(0).getStatus(); if (errCode != ErrorCode.ERR_OK.getCode()) { log.error("----Error PengXin stop clean {} server return error: {}", disposeObject, errCode); - return new MulReturnType<>(ErrorCode.ERR_HAOHAN_ERROR, null); + return new MulReturnType<>(ErrorCode.ERR_PENGXIN_ERROR, null); } log.debug("----Finish PengXin Stop Cleanup Task: {}", taskId); diff --git a/src/main/java/com/dispose/common/ErrorCode.java b/src/main/java/com/dispose/common/ErrorCode.java index 4928dda4..4880b744 100644 --- a/src/main/java/com/dispose/common/ErrorCode.java +++ b/src/main/java/com/dispose/common/ErrorCode.java @@ -235,7 +235,11 @@ public enum ErrorCode { /** * The Err huawei error. */ - ERR_HUAWEI_ERROR(34, "华为设备返回错误"), + ERR_HUAWEI_ERROR(116, "华为设备返回错误"), + /** + * The Err pengxin error. + */ + ERR_PENGXIN_ERROR(117, "鹏信设备返回错误"), ; /** diff --git a/src/main/java/com/dispose/manager/DeviceTaskManager.java b/src/main/java/com/dispose/manager/DeviceTaskManager.java index 9f313ad2..1e9f555b 100644 --- a/src/main/java/com/dispose/manager/DeviceTaskManager.java +++ b/src/main/java/com/dispose/manager/DeviceTaskManager.java @@ -137,10 +137,9 @@ public interface DeviceTaskManager { DeviceTask getTaskById(Long id); /** - * Gets peng xin task by id. + * Gets peng xin task. * - * @param startId the start id - * @return the peng xin task by id + * @return the peng xin task */ - List getPengXinTaskById(Long startId); + List getPengXinTask(); } diff --git a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java index 1615e20f..608040c6 100644 --- a/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DeviceTaskManagerImpl.java @@ -297,12 +297,12 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager { } /** - * Gets PengXin device task info by startId. + * Gets PengXin device task info. * * @return the minId task info. */ @Override - public List getPengXinTaskById(Long startId){ - return deviceTaskMapper.getPengXinTask(startId); + public List getPengXinTask(){ + return deviceTaskMapper.getPengXinTask(); } } diff --git a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java index 7e1cec48..35602485 100644 --- a/src/main/java/com/dispose/mapper/DeviceTaskMapper.java +++ b/src/main/java/com/dispose/mapper/DeviceTaskMapper.java @@ -158,8 +158,7 @@ public interface DeviceTaskMapper { /** * Gets PengXin device task info. * - * @param startId the start id * @return PengXin device task info */ - List getPengXinTask(Long startId); + List getPengXinTask(); } diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index b929ec4a..67b12001 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -14,15 +14,12 @@ import com.dispose.pojo.po.AbilityInfo; import com.dispose.pojo.po.MulReturnType; import com.dispose.service.DeviceTaskManagerService; import com.dispose.service.DisposeAbilityRouterService; -import com.pengxin.dispose.common.PengXinTaskStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; import java.util.concurrent.ConcurrentHashMap; /** @@ -443,8 +440,6 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 设置任务状态为启动中 deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING); - // 设置设备任务状态为启动中 - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), (long) PengXinTaskStatus.TASK_STARTING.getValue()); // 设置启动任务攻击类型状态 deviceTaskManager.setExecAttackType(deviceTask.getId(), NetflowDirection.DIRECTION_BI, deviceTask.getTaskAttackType()); @@ -471,9 +466,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { // 设置该任务为新任务,待下次重试启动 deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_NEW); - // 设置设备任务状态为启动处置任务失败 - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), - (long) PengXinTaskStatus.TASK_STARTED_FAILED.getValue()); + // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("PENGXIN_PLATFORM setup task times {} error {}: {}", deviceTask.getErrRetry(), @@ -482,9 +475,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 任务出错,不在重试,当做失败任务处理 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L); - // 设置设备任务状态为启动处置任务失败 - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), - (long) PengXinTaskStatus.TASK_STARTED_FAILED.getValue()); + log.error("PENGXIN_PLATFORM setup task error {}: {}", ret.getFirstParam(), deviceTask); } } @@ -499,10 +490,6 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { private void pengXinDeviceTaskStop(AbilityInfo ai, DeviceTask deviceTask, DisposeTask disposeTask) { MulReturnType ret; - // 设置设备任务状态为解封中 - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), - (long) PengXinTaskStatus.TASK_UNBLOCKING.getValue()); - // 停止处置任务 ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null, deviceTask.getExternId()); @@ -514,17 +501,11 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0); deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L); } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { - // 设置设备任务状态为解封失败 - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), - (long) PengXinTaskStatus.TASK_UNBLOCKED_FAILED.getValue()); // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("PENGXIN_PLATFORM stop task times {} error {}: {}", deviceTask.getErrRetry(), ret.getSecondParam(), deviceTask); } else { - // 设置设备任务状态为解封失败 - deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), - (long) PengXinTaskStatus.TASK_UNBLOCKED_FAILED.getValue()); log.error("PENGXIN_PLATFORM stop task error {}: {}", ret.getFirstParam(), deviceTask); } } @@ -796,15 +777,8 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { * Device task status schedule. */ public void deviceTaskStatusSchedule() { - List taskList = new ArrayList<>(); - //处置任务设备类型为鹏信设备,任务状态不再变更 - for (Long i = 1L; deviceTaskManager.getPengXinTaskById(i).size() != 0; i = taskList.get(taskList.size() - 1).getId() + 1) { - log.debug("startId:{}", i); - taskList.addAll(deviceTaskManager.getPengXinTaskById(i)); - } - - for (DeviceTask v : taskList) { + for (DeviceTask v : deviceTaskManager.getPengXinTask()) { // 获取设备 AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(v.getDeviceId()); @@ -827,6 +801,8 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { MulReturnType ret = ai.getDb().taskStatus(v.getExternId()); if (ret.getFirstParam() == ErrorCode.ERR_OK) { + log.debug("id:{}, before devStatus:{}, after devStatus:{}", v.getId(), + v.getDevStatus(), ret.getSecondParam()); deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getId(), ret.getSecondParam()); } diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index 04c4c88b..b161b379 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -29,15 +29,15 @@ VALUES (#{task.taskId}, #{task.deviceId}, #{task.taskAttackType}, - ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()}, 0) + ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()}, -1) - INSERT IGNORE INTO device_task(taskId, deviceId, taskAttackType, status) + INSERT IGNORE INTO device_task(taskId, deviceId, taskAttackType, status, devStatus) VALUES (#{taskId}, #{deviceId}, #{taskAttackType}, - ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()}) + ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()}, -1) \ No newline at end of file From 54c2837f7ff5fd3b9f504f296dabcdb45899299a Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Thu, 26 Nov 2020 17:11:26 +0800 Subject: [PATCH 23/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E5=90=AF=E5=8A=A8=E3=80=81?= =?UTF-8?q?=E5=81=9C=E6=AD=A2=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E9=80=BB=E8=BE=91=202.=E5=A2=9E=E5=8A=A0=E9=B9=8F?= =?UTF-8?q?=E4=BF=A1=E8=AE=BE=E5=A4=87=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=A0=81=203.=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=AC=A6=E5=90=88=E6=9D=A1=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E9=B9=8F=E4=BF=A1=E8=AE=BE=E5=A4=87=E5=A4=84=E7=BD=AE=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1SQL=E8=AF=AD=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DeviceTaskManagerServiceImpl.java | 25 +++++++++++++++++-- .../dispose/common/PengXinTaskStatus.java | 4 +++ src/main/resources/mappers/DeviceTask.xml | 2 +- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 67b12001..41b8bfcc 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -14,6 +14,7 @@ import com.dispose.pojo.po.AbilityInfo; import com.dispose.pojo.po.MulReturnType; import com.dispose.service.DeviceTaskManagerService; import com.dispose.service.DisposeAbilityRouterService; +import com.pengxin.dispose.common.PengXinTaskStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; @@ -434,7 +435,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { MulReturnType ret; // 重试错误次数过多 - if (deviceTask.getErrRetry() >= DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { + if (deviceTask.getErrRetry() > DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { return; } @@ -476,6 +477,14 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L); + // 设置该任务为启动失败 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_NEW); + //任务出错,设备任务状态为启动处置任务失败 + deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(deviceTask.getId(), + (long) PengXinTaskStatus.TASK_STARTED_FAILED.getValue()); + // 记录任务出错重试次数 + deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); + log.error("PENGXIN_PLATFORM setup task error {}: {}", ret.getFirstParam(), deviceTask); } } @@ -490,6 +499,11 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { private void pengXinDeviceTaskStop(AbilityInfo ai, DeviceTask deviceTask, DisposeTask disposeTask) { MulReturnType ret; + // 重试错误次数过多 + if (deviceTask.getErrRetry() > DisposeConfigValue.CALL_ERROR_RETRY_TIMES * 2) { + return; + } + // 停止处置任务 ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null, deviceTask.getExternId()); @@ -500,12 +514,19 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_FINISHED); deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0); deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L); - } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { + } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES * 2) { // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); + // 设置任务状态为启动中 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING); log.error("PENGXIN_PLATFORM stop task times {} error {}: {}", deviceTask.getErrRetry(), ret.getSecondParam(), deviceTask); } else { + // 记录任务出错重试次数 + deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); + // 设置该任务为停止失败 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_FINISHED); + log.error("PENGXIN_PLATFORM stop task error {}: {}", ret.getFirstParam(), deviceTask); } } diff --git a/src/main/java/com/pengxin/dispose/common/PengXinTaskStatus.java b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatus.java index 179068aa..ac00e250 100644 --- a/src/main/java/com/pengxin/dispose/common/PengXinTaskStatus.java +++ b/src/main/java/com/pengxin/dispose/common/PengXinTaskStatus.java @@ -48,6 +48,10 @@ public enum PengXinTaskStatus implements BaseEnum { * The Task unblocking. */ TASK_UNBLOCKING(9, "解封中"), + /** + * The Task unknown. + */ + TASK_UNKNOWN(-1, "未知状态"), ; /** diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index b161b379..d1631748 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -136,6 +136,6 @@ WHERE dd.deviceType = 2 AND - dt.devStatus != 8 AND dt.devStatus != 7 AND dt.devStatus != -1 + dt.devStatus != 2 AND dt.devStatus != 3 AND dt.devStatus != 6 \ No newline at end of file From b061b6d6ecd2da8c3512731643fa0f2b7eca4d98 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Thu, 26 Nov 2020 17:30:57 +0800 Subject: [PATCH 24/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dispose/service/impl/DeviceTaskManagerServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 41b8bfcc..fcea7aac 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -517,8 +517,8 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES * 2) { // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); - // 设置任务状态为启动中 - deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTING); + // 设置任务状态为处置中,待下次重试停止 + deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTED); log.error("PENGXIN_PLATFORM stop task times {} error {}: {}", deviceTask.getErrRetry(), ret.getSecondParam(), deviceTask); } else { From d76a627f2c18d5ad7e4779a91d9cb389244dd68b Mon Sep 17 00:00:00 2001 From: HuangXin Date: Thu, 26 Nov 2020 18:34:34 +0800 Subject: [PATCH 25/30] =?UTF-8?q?OCT=20REM:=201.=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=90=AF=E5=8A=A8=E3=80=81=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=8A=B6=E6=80=81=202.=20=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dispose/common/DisposeTaskStatus.java | 10 ++++++++++ src/main/resources/mappers/DeviceTask.xml | 4 ++++ src/main/resources/mappers/DisposeTask.xml | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/src/main/java/com/dispose/common/DisposeTaskStatus.java b/src/main/java/com/dispose/common/DisposeTaskStatus.java index ffbd07cb..273940f5 100644 --- a/src/main/java/com/dispose/common/DisposeTaskStatus.java +++ b/src/main/java/com/dispose/common/DisposeTaskStatus.java @@ -30,6 +30,16 @@ public enum DisposeTaskStatus implements BaseEnum { * The Task expired. */ TASK_EXPIRED(5, "过期"), + + /** + * Task start failed dispose task status. + */ + TASK_START_FAILED(6, "启动失败"), + + /** + * Task stop failed dispose task status. + */ + TASK_STOP_FAILED(7, "停止失败"), ; /** diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index 04c4c88b..0badf1c0 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -57,6 +57,7 @@ FROM device_task WHERE status = ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()} OR status = ${@com.dispose.common.DisposeTaskStatus@TASK_STARTING.getValue()} + OR status = ${@com.dispose.common.DisposeTaskStatus@TASK_START_FAILED.getValue()} SELECT * FROM device_task - WHERE status = ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()} - OR status = ${@com.dispose.common.DisposeTaskStatus@TASK_STARTING.getValue()} - OR status = ${@com.dispose.common.DisposeTaskStatus@TASK_START_FAILED.getValue()} + + + WHERE CURRENT_TIMESTAMP - endTime > 300 + + + WHERE status = ${@com.dispose.common.DisposeTaskStatus@TASK_NEW.getValue()} + + - SELECT dt.*, dd.* - FROM device_task dt LEFT JOIN dispose_device dd ON dt.deviceId = dd.id - WHERE - dd.deviceType = 2 - AND - dt.devStatus != 2 AND dt.devStatus != 3 AND dt.devStatus != 6 + SELECT dt.*, dd.* + FROM device_task dt + LEFT JOIN dispose_device dd ON dt.deviceId = dd.id + WHERE dd.deviceType = 2 + AND dt.devStatus != 2 + AND dt.devStatus != 3 + AND dt.devStatus != 6 \ No newline at end of file From 69a4031034e7e78d5f123fba48249429e59824ec Mon Sep 17 00:00:00 2001 From: HuangXin Date: Fri, 27 Nov 2020 15:40:51 +0800 Subject: [PATCH 27/30] =?UTF-8?q?OCT=20REM:=201.=20=E8=AE=BE=E7=BD=AEexter?= =?UTF-8?q?nId=E5=89=8D=E8=BF=9B=E8=A1=8C=E5=8F=82=E6=95=B0=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceTaskManagerServiceImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 82b546c2..b18e9887 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -649,9 +649,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_STARTED); // 记录设备返回的任务ID - deviceTaskManager.setTaskExternId(deviceTask.getId(), ret.getSecondParam()); - - log.info("{} setup task succeed: {}, device taskId {}", deviceType, deviceTask, ret.getSecondParam()); + if (ret.getSecondParam() != null && ret.getSecondParam().length() > 0) { + deviceTaskManager.setTaskExternId(deviceTask.getId(), ret.getSecondParam()); + log.info("{} setup task succeed: {}, device taskId {}", deviceType, deviceTask, ret.getSecondParam()); + } else { + log.info("{} setup task succeed: {}, unnecessary device taskId", deviceType, deviceTask); + } // 重置错误尝试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0); @@ -662,8 +665,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 记录任务出错重试次数 deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); log.error("{} setup task times {} error {}: {}", deviceType, deviceTask.getErrRetry(), - ret.getSecondParam(), - deviceTask); + ret.getSecondParam(), deviceTask); } else { // 任务出错,不在重试,当做失败任务处理 deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L); @@ -692,7 +694,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { * @param deviceType the device type */ private void restfulDeviceTaskStop(AbilityInfo ai, DeviceTask deviceTask, DisposeTask disposeTask, - DisposeDeviceType deviceType) { + DisposeDeviceType deviceType) { MulReturnType ret; // 重试错误次数过多 From 1d50a3c069a0e09d02bb81f137baa73cfbd5c1f9 Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Mon, 30 Nov 2020 17:34:08 +0800 Subject: [PATCH 28/30] =?UTF-8?q?OCT=20REM:=201.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9F=A5=E8=AF=A2=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=202.=E4=BF=AE=E6=94=B9=E6=B5=A9=E7=80=9A?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=90=AF=E5=8A=A8=E3=80=81=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dispose/ability/impl/PengXinAbilityImpl.java | 2 +- .../service/impl/DeviceTaskManagerServiceImpl.java | 4 ++-- src/main/resources/mappers/DeviceTask.xml | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java index a86c66d5..b40b55cd 100644 --- a/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/PengXinAbilityImpl.java @@ -224,7 +224,7 @@ public class PengXinAbilityImpl implements DisposeAbility { } try { - log.debug("++++Begging PengXin Stop Cleanup Task: {}", taskId); + log.info("++++Begging PengXin Stop Cleanup Task: {}", taskId); if (capType != DisposeCapacityType.BLACKHOOL) { log.error("----Error PengXin don't support dispose capacity type: {}", capType); diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index b18e9887..6a6aaaa8 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -808,7 +808,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { break; case HAOHAN_PLATFORM: - haoHanDeviceTaskRun(ai, v, task); + restfulDeviceTaskRun(ai, v, task, DisposeDeviceType.HAOHAN_PLATFORM); break; case VIRTUAL_DISPOSE: @@ -884,7 +884,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { break; case HAOHAN_PLATFORM: - haoHanDeviceTaskStop(ai, v, task); + restfulDeviceTaskStop(ai, v, task, DisposeDeviceType.HAOHAN_PLATFORM); break; case VIRTUAL_DISPOSE: diff --git a/src/main/resources/mappers/DeviceTask.xml b/src/main/resources/mappers/DeviceTask.xml index 871b9963..03cdeb05 100644 --- a/src/main/resources/mappers/DeviceTask.xml +++ b/src/main/resources/mappers/DeviceTask.xml @@ -150,9 +150,9 @@ SELECT dt.*, dd.* FROM device_task dt LEFT JOIN dispose_device dd ON dt.deviceId = dd.id - WHERE dd.deviceType = 2 - AND dt.devStatus != 2 - AND dt.devStatus != 3 - AND dt.devStatus != 6 + WHERE dd.deviceType = ${@com.dispose.common.DisposeDeviceType@PENGXIN_PLATFORM.getValue()} + AND dt.devStatus != ${@com.pengxin.dispose.common.PengXinTaskStatus@TASK_FINISHED_USER.getValue()} + AND dt.devStatus != ${@com.pengxin.dispose.common.PengXinTaskStatus@TASK_FINISHED_TIME.getValue()} + AND dt.devStatus != ${@com.pengxin.dispose.common.PengXinTaskStatus@TASK_REVIEWED_FAILED.getValue()} \ No newline at end of file From cc35b50dcba75bbe8811030b5ed4761fb406336c Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Tue, 1 Dec 2020 09:47:12 +0800 Subject: [PATCH 29/30] =?UTF-8?q?OCT=20REM:=201.=E5=8D=8E=E4=B8=BA?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=90=AF=E5=8A=A8=E3=80=81=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E5=A4=84=E7=BD=AE=E4=BB=BB=E5=8A=A1=E6=97=B6=E9=87=87=E7=94=A8?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E5=90=AF=E5=8A=A8=E3=80=81=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3=202.=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=97=A0=E7=94=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceTaskManagerServiceImpl.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java index 6a6aaaa8..775bd9bf 100644 --- a/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/DeviceTaskManagerServiceImpl.java @@ -816,12 +816,11 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { break; case PENGXIN_PLATFORM: - //pengXinDeviceTaskRun(ai, v, task); restfulDeviceTaskRun(ai, v, task, DisposeDeviceType.PENGXIN_PLATFORM); break; case HUAWEI_PLATFORM: - huaWeiDeviceTaskRun(ai, v, task); + restfulDeviceTaskRun(ai, v, task, DisposeDeviceType.HUAWEI_PLATFORM); break; default: @@ -876,8 +875,6 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { // 设置标志,避免对同一个IP重复调用停止处置命令 taskCache.put(taskStopKey, true); - //deviceTaskManager.changeDisposeDeviceTaskInfoStatus(v.getId(), DisposeTaskStatus.TASK_EXPIRED); - switch (ai.getDev().getDeviceType()) { case DPTECH_UMC: dpTechDeviceTaskStop(ai, v, task); @@ -892,12 +889,11 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService { break; case PENGXIN_PLATFORM: - //pengXinDeviceTaskStop(ai, v, task); restfulDeviceTaskStop(ai, v, task, DisposeDeviceType.PENGXIN_PLATFORM); break; case HUAWEI_PLATFORM: - huaWeiDeviceTaskStop(ai, v, task); + restfulDeviceTaskStop(ai, v, task, DisposeDeviceType.HUAWEI_PLATFORM); break; default: From fea3f7d971107b0373916945f335b04603ae64dd Mon Sep 17 00:00:00 2001 From: chenlinghy Date: Tue, 8 Dec 2020 14:51:19 +0800 Subject: [PATCH 30/30] =?UTF-8?q?OCT=20REM:=201.=E5=8D=8E=E4=B8=BA?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=90=AF=E5=8A=A8=E5=92=8C=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=97=B6=E5=A2=9E=E5=8A=A0Ipv6=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ability/impl/HuaWeiAbilityImpl.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java b/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java index 0a58604f..8f422494 100644 --- a/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java +++ b/src/main/java/com/dispose/ability/impl/HuaWeiAbilityImpl.java @@ -12,6 +12,8 @@ import com.dispose.pojo.vo.DeviceFirewareInfo; import com.fasterxml.jackson.databind.ObjectMapper; import com.huawei.dispose.common.HuaWeiLoginResp; import com.huawei.dispose.protocol.HuaWeiInterface; +import inet.ipaddr.IPAddress; +import inet.ipaddr.IPAddressString; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -93,7 +95,15 @@ public class HuaWeiAbilityImpl implements DisposeAbility { @Nullable Integer attackType, @Nullable Long duration) { String url = urlRootPath + "/divert"; - String disposeObj = disposeObject + "/32"; + String disposeObj = null; + + IPAddress addr = new IPAddressString(disposeObject).getAddress(); + + if (addr.isIPv4()) { + disposeObj = disposeObject + "/32"; + }else if(addr.isIPv6()) { + disposeObj = disposeObject + "/128"; + } if (token == null || token.length() == 0) { return new MulReturnType<>(ErrorCode.ERR_LOGOUT, ""); @@ -151,7 +161,15 @@ public class HuaWeiAbilityImpl implements DisposeAbility { @Nullable Integer attackType, @Nullable String taskId) { - String disposeObj = disposeObject + "-32"; + IPAddress addr = new IPAddressString(disposeObject).getAddress(); + String disposeObj = null; + + if (addr.isIPv4()) { + disposeObj = disposeObject + "-32"; + }else if(addr.isIPv6()) { + disposeObj = disposeObject + "-128"; + } + String url = urlRootPath + "/divert/" + disposeObj; if (token == null || token.length() == 0) {