From f5bd8cd02cea072853840adf51abe443f3c06c59 Mon Sep 17 00:00:00 2001 From: huangxin Date: Mon, 27 Apr 2020 14:00:01 +0800 Subject: [PATCH] =?UTF-8?q?OCT=20REM:=201.=20=E5=A2=9E=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=83=BD=E5=8A=9B=E8=8A=82=E7=82=B9=E5=A4=84=E7=BD=AE?= =?UTF-8?q?=E4=B8=AD=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3=E5=92=8C=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=202.=20=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E8=83=BD?= =?UTF-8?q?=E5=8A=9B=E8=8A=82=E7=82=B9=E6=89=80=E6=9C=89=E5=A4=84=E7=BD=AE?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3=E5=92=8C=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=203.=20=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E4=B8=BA=E5=8C=85=E8=A3=85?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=EF=BC=8C=E6=94=AF=E6=8C=81=E9=BB=98=E8=AE=A4?= =?UTF-8?q?Mapper=E6=8E=A5=E5=8F=A3=204.=20=E6=89=A7=E8=A1=8C=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3=E7=A0=81=205.=20?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E6=B8=85=E7=90=86=E4=BB=A3=E7=A0=81=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=206.=20=E6=89=A7=E8=A1=8CJavaDoc=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 65 ++++++- .../SoapPasswordCallbackHandler.java | 6 +- .../com/dispose/common/DisposeTaskStatus.java | 10 +- .../java/com/dispose/common/ErrorCode.java | 8 +- .../com/dispose/common/FlowDirection.java | 6 +- .../controller/DisposeNodeInfoController.java | 158 +++++++++++++++++- .../controller/DisposeTaskController.java | 16 +- .../com/dispose/dispose/impl/DPTechImpl.java | 8 +- .../dispose/impl/VirtualDeviceImpl.java | 8 +- .../com/dispose/dispose/po/DeviceInfo.java | 9 +- .../pojo/po/DisposeDeviceCapacity.java | 8 +- .../com/dispose/pojo/po/ReturnStatus.java | 2 +- .../pojo/vo/common/DisposeCapacity.java | 6 +- .../dispose/pojo/vo/common/TaskInfoData.java | 10 ++ .../pojo/vo/common/TaskInfoDetail.java | 8 +- .../pojo/vo/information/NodeTaskData.java | 35 ++++ .../pojo/vo/information/NodeTaskRsp.java | 27 +++ .../com/dispose/pojo/vo/task/TaskInfoRsp.java | 6 +- .../java/com/dispose/service/TaskService.java | 17 ++ .../dispose/service/impl/TaskServiceImpl.java | 34 ++++ src/main/resources/mappers/DisposeTask.xml | 2 +- .../DeviceNodeInfoControllerTest.java | 97 +++++++++++ .../dispose/mapper/DisposeTaskMapperTest.java | 9 +- 23 files changed, 502 insertions(+), 53 deletions(-) create mode 100644 src/main/java/com/dispose/pojo/vo/information/NodeTaskData.java create mode 100644 src/main/java/com/dispose/pojo/vo/information/NodeTaskRsp.java diff --git a/Readme.md b/Readme.md index e2216e2e..8a0e72e9 100644 --- a/Readme.md +++ b/Readme.md @@ -286,11 +286,72 @@ } ``` +## 获取能力节点处置中任务 ++ 请求命令 + 字段|内容 + ----|---- + Request URI|dispose/information/run_task + Content type|application/json;charset=UTF-8 + Authorization|"Bearer b8f01b8303cd9fcb7d3c9ed1b1c54d4a6e04bac3a66ab7df6ba81f690882ca2e" + Body|{"ver":2,"cryptoType":0,"timeStamp":1587604330447,"msgContent":"{\"id\":[\"242\",\"123\"]}"} +```json +{ + "ver": 2, + "cryptoType": 0, + "timeStamp": 1587604330447, + "msgContent": "{\"id\":[\"242\",\"123\"]}" +} +``` ++ 响应消息 + 字段|内容 + ----|---- + Content type|application/json;charset=UTF-8 + Body|{"ver":2,"cryptoType":0,"timeStamp":1587959081368,"code":200,"msgContent":"{\"items\":[{\"id\":\"242\",\"taskArray\":[{\"taskId\":\"180\",\"type\":0,\"disposeIp\":\"192.168.0.1\",\"startTime\":1587890555,\"disposeTime\":3596,\"flowAttack\":0,\"flowClean\":0}],\"status\":0,\"message\":\"成功\"},{\"id\":\"123\",\"taskArray\":[],\"status\":19,\"message\":\"没有这个设备\"}]}"} +```json +{ + "ver": 2, + "cryptoType": 0, + "timeStamp": 1587959081368, + "code": 200, + "msgContent": "{\"items\":[{\"id\":\"242\",\"taskArray\":[{\"taskId\":\"180\",\"type\":0,\"disposeIp\":\"192.168.0.1\",\"startTime\":1587890555,\"disposeTime\":3596,\"flowAttack\":0,\"flowClean\":0}],\"status\":0,\"message\":\"成功\"},{\"id\":\"123\",\"taskArray\":[],\"status\":19,\"message\":\"没有这个设备\"}]}" +} +``` + +## 获取能力节点所有处置任务 ++ 请求命令 + 字段|内容 + ----|---- + Request URI|dispose/information/all_task + Content type|application/json;charset=UTF-8 + Authorization|"Bearer b8f01b8303cd9fcb7d3c9ed1b1c54d4a6e04bac3a66ab7df6ba81f690882ca2e" + Body|{"ver":2,"cryptoType":0,"timeStamp":1587604330447,"msgContent":"{\"id\":[\"242\",\"123\"]}"} +```json +{ + "ver": 2, + "cryptoType": 0, + "timeStamp": 1587604330447, + "msgContent": "{\"id\":[\"242\",\"123\"]}" +} +``` ++ 响应消息 + 字段|内容 + ----|---- + Content type|application/json;charset=UTF-8 + Body|{"ver":2,"cryptoType":0,"timeStamp":1587959355300,"code":200,"msgContent":"{\"items\":[{\"id\":\"242\",\"taskArray\":[{\"taskId\":\"180\",\"type\":0,\"disposeIp\":\"192.168.0.1\",\"startTime\":1587890555,\"disposeTime\":3596,\"flowAttack\":0,\"flowClean\":0}],\"status\":0,\"message\":\"成功\"},{\"id\":\"123\",\"taskArray\":[],\"status\":19,\"message\":\"没有这个设备\"}]}"} +```json +{ + "ver": 2, + "cryptoType": 0, + "timeStamp": 1587959355300, + "code": 200, + "msgContent": "{\"items\":[{\"id\":\"242\",\"taskArray\":[{\"taskId\":\"180\",\"type\":0,\"disposeIp\":\"192.168.0.1\",\"startTime\":1587890555,\"disposeTime\":3596,\"flowAttack\":0,\"flowClean\":0}],\"status\":0,\"message\":\"成功\"},{\"id\":\"123\",\"taskArray\":[],\"status\":19,\"message\":\"没有这个设备\"}]}" +} +``` + ## 获取能力节点列表 + 请求命令 字段|内容 - ----|---- - Request URI|dispose/information/node_list + ----|---- Request URI|dispose/information/node_list Content type|application/json;charset=UTF-8 Authorization|"Bearer b8f01b8303cd9fcb7d3c9ed1b1c54d4a6e04bac3a66ab7df6ba81f690882ca2e" diff --git a/src/main/java/com/dispose/Interceptor/SoapPasswordCallbackHandler.java b/src/main/java/com/dispose/Interceptor/SoapPasswordCallbackHandler.java index 5878bdb1..387de331 100644 --- a/src/main/java/com/dispose/Interceptor/SoapPasswordCallbackHandler.java +++ b/src/main/java/com/dispose/Interceptor/SoapPasswordCallbackHandler.java @@ -1,10 +1,8 @@ package com.dispose.Interceptor; import com.dispose.common.ConstValue; -import java.io.IOException; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; -import javax.security.auth.callback.UnsupportedCallbackException; import org.apache.wss4j.common.ext.WSPasswordCallback; /** @@ -15,11 +13,9 @@ public class SoapPasswordCallbackHandler implements CallbackHandler { * Handle. * * @param callbacks the callbacks - * @throws IOException the io exception - * @throws UnsupportedCallbackException the unsupported callback exception */ @Override - public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { + public void handle(Callback[] callbacks) { WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; pc.setPassword(ConstValue.SOAPWrapperConst.PASSWORD); } diff --git a/src/main/java/com/dispose/common/DisposeTaskStatus.java b/src/main/java/com/dispose/common/DisposeTaskStatus.java index 6042d25b..fdc3c65d 100644 --- a/src/main/java/com/dispose/common/DisposeTaskStatus.java +++ b/src/main/java/com/dispose/common/DisposeTaskStatus.java @@ -5,23 +5,23 @@ package com.dispose.common; */ public enum DisposeTaskStatus { /** - * Task new dispose task status. + * The Task new. */ TASK_NEW(0, "新建"), /** - * Task running dispose task status. + * The Task running. */ TASK_RUNNING(1, "运行中"), /** - * Task stop dispose task status. + * The Task stop. */ TASK_STOP(2, "停止"), /** - * Task finish dispose task status. + * The Task finish. */ TASK_FINISH(3, "结束"), /** - * Task delete dispose task status. + * The Task delete. */ TASK_DELETE(4, "删除"); diff --git a/src/main/java/com/dispose/common/ErrorCode.java b/src/main/java/com/dispose/common/ErrorCode.java index c2f2b454..c278949c 100644 --- a/src/main/java/com/dispose/common/ErrorCode.java +++ b/src/main/java/com/dispose/common/ErrorCode.java @@ -111,12 +111,18 @@ public enum ErrorCode { ERR_TASKRUNNING(26, "同类任务正在运行"), /** - * Err nosupport error code. + * The Err unsupport. */ ERR_UNSUPPORT(27, "不支持的操作"), + /** + * Err interrupt error code. + */ ERR_INTERRUPT(28, "操作中断"), + /** + * Err calldevice error code. + */ ERR_CALLDEVICE(29, "调用设备失败"), ; diff --git a/src/main/java/com/dispose/common/FlowDirection.java b/src/main/java/com/dispose/common/FlowDirection.java index c7615021..b013ac09 100644 --- a/src/main/java/com/dispose/common/FlowDirection.java +++ b/src/main/java/com/dispose/common/FlowDirection.java @@ -5,15 +5,15 @@ package com.dispose.common; */ public enum FlowDirection { /** - * Direction input flow direction. + * The Direction input. */ DIRECTION_INPUT(0, "流入"), /** - * Direction output flow direction. + * The Direction output. */ DIRECTION_OUTPUT(1, "流出"), /** - * Direction twoway flow direction. + * The Direction twoway. */ DIRECTION_TWOWAY(2, "双向"); diff --git a/src/main/java/com/dispose/controller/DisposeNodeInfoController.java b/src/main/java/com/dispose/controller/DisposeNodeInfoController.java index 35edca24..9f500e10 100644 --- a/src/main/java/com/dispose/controller/DisposeNodeInfoController.java +++ b/src/main/java/com/dispose/controller/DisposeNodeInfoController.java @@ -7,6 +7,7 @@ import com.dispose.pojo.dto.ProtocolRespDTO; import com.dispose.pojo.entity.DisposeDevice; import com.dispose.pojo.vo.common.DisposeCapacity; import com.dispose.pojo.vo.common.IDArrayReq; +import com.dispose.pojo.vo.common.TaskInfoData; import com.dispose.pojo.vo.information.DeviceCapacityData; import com.dispose.pojo.vo.information.DeviceCapacityRsp; import com.dispose.pojo.vo.information.DeviceInfoData; @@ -14,14 +15,20 @@ import com.dispose.pojo.vo.information.DeviceInfoRsp; import com.dispose.pojo.vo.information.DisposeNodeData; import com.dispose.pojo.vo.information.DisposeNodeListRsp; import com.dispose.pojo.vo.information.LinkStatusRsp; +import com.dispose.pojo.vo.information.NodeTaskData; +import com.dispose.pojo.vo.information.NodeTaskRsp; import com.dispose.pojo.vo.information.VersionRsp; import com.dispose.service.DisposeNodeManager; +import com.dispose.service.TaskService; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; @@ -42,6 +49,12 @@ import org.springframework.web.bind.annotation.ResponseBody; @Api(value = "抗DDoS处置平台能力节点信息接口", tags = "抗DDoS处置平台能力节点信息接口") @Component public class DisposeNodeInfoController { + /** + * The Task service. + */ + @Resource + private TaskService taskService; + /** * The Object mapper. */ @@ -468,7 +481,6 @@ public class DisposeNodeInfoController { @PostMapping("/node_details") @ResponseBody @ApiOperation("处置节点详细信息") - //@JsonView(DisposeCapacity.CapacityView.class) public ProtocolRespDTO getDisposeNodeDetails(@RequestBody ProtocolReqDTO mr, @RequestHeader HttpHeaders headers) throws JsonProcessingException { @@ -535,4 +547,148 @@ public class DisposeNodeInfoController { } return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo); } + + /** + * Gets running dispose task list. + * + * @param mr the mr + * @param headers the headers + * @return the running dispose task list + * @throws JsonProcessingException the json processing exception + */ + @PostMapping("/run_task") + @ResponseBody + @ApiOperation("获取正在进行的处置任务") + public ProtocolRespDTO getRunningDisposeTaskList(@RequestBody ProtocolReqDTO mr, + @RequestHeader HttpHeaders headers) + throws JsonProcessingException { + ErrorCode err = mr.verifyRequest(headers); + + if (err != ErrorCode.ERR_OK) { + return ProtocolRespDTO.result(err); + } + + IDArrayReq reqInfo = mr.getRequestObject(IDArrayReq.class); + NodeTaskRsp rspInfo = new NodeTaskRsp(); + + List valuableData = disposeNodeManager.getAllDisposeDevice() + .parallelStream() + .filter(v -> reqInfo.getId().length == 0 + || Arrays.stream(reqInfo.getId()).anyMatch(s -> s.equals(v.getId().toString()))) + .collect(Collectors.toList()); + + valuableData.parallelStream().forEach(v -> { + NodeTaskData taskData = new NodeTaskData(); + rspInfo.getItems().add(taskData); + taskData.setId(v.getId().toString()); + taskData.setStatus(ErrorCode.ERR_OK.getCode()); + taskData.setMessage(ErrorCode.ERR_OK.getMsg()); + + taskService.getNodeAllRunningTask(v.getId()).parallelStream().forEach(k -> { + Long tmLong = Timestamp.valueOf(k.getBeginTime()).toInstant().toEpochMilli() / 1000; + Long endTm = Timestamp.valueOf(k.getPlanEndTime()).toInstant().toEpochMilli() / 1000; + Long diff = endTm - tmLong; + + TaskInfoData taskInfoData = TaskInfoData.builder() + .taskId(k.getId().toString()) + .type(k.getType()) + .startTime(tmLong.intValue()) + .disposeTime(diff.intValue()) + .disposeIp(k.getDisposeIp()) + .flowAttack(0) + .flowClean(0) + .build(); + + taskData.getTaskArray().add(taskInfoData); + }); + }); + + if (reqInfo.getId().length != 0) { + List unExists = Arrays.stream(reqInfo.getId()) + .filter(v -> valuableData.parallelStream().noneMatch(k -> k.getId() == Long.parseLong(v))) + .collect(Collectors.toList()); + + unExists.parallelStream().forEach(v -> { + NodeTaskData taskData = new NodeTaskData(); + rspInfo.getItems().add(taskData); + taskData.setId(v); + taskData.setStatus(ErrorCode.ERR_NOSUCHDEVICE.getCode()); + taskData.setMessage(ErrorCode.ERR_NOSUCHDEVICE.getMsg()); + }); + } + + return ProtocolRespDTO.result(err, rspInfo); + } + + /** + * Gets all dispose task list. + * + * @param mr the mr + * @param headers the headers + * @return the all dispose task list + * @throws JsonProcessingException the json processing exception + */ + @PostMapping("/all_task") + @ResponseBody + @ApiOperation("获取所有处置任务") + public ProtocolRespDTO getAllDisposeTaskList(@RequestBody ProtocolReqDTO mr, + @RequestHeader HttpHeaders headers) + throws JsonProcessingException { + ErrorCode err = mr.verifyRequest(headers); + + if (err != ErrorCode.ERR_OK) { + return ProtocolRespDTO.result(err); + } + + IDArrayReq reqInfo = mr.getRequestObject(IDArrayReq.class); + NodeTaskRsp rspInfo = new NodeTaskRsp(); + + List valuableData = disposeNodeManager.getAllDisposeDevice() + .parallelStream() + .filter(v -> reqInfo.getId().length == 0 + || Arrays.stream(reqInfo.getId()).anyMatch(s -> s.equals(v.getId().toString()))) + .collect(Collectors.toList()); + + valuableData.parallelStream().forEach(v -> { + NodeTaskData taskData = new NodeTaskData(); + rspInfo.getItems().add(taskData); + taskData.setId(v.getId().toString()); + taskData.setStatus(ErrorCode.ERR_OK.getCode()); + taskData.setMessage(ErrorCode.ERR_OK.getMsg()); + + taskService.getNodeAllTask(v.getId()).parallelStream().forEach(k -> { + Long tmLong = Timestamp.valueOf(k.getBeginTime()).toInstant().toEpochMilli() / 1000; + Long endTm = Timestamp.valueOf(k.getPlanEndTime()).toInstant().toEpochMilli() / 1000; + Long diff = endTm - tmLong; + + TaskInfoData taskInfoData = TaskInfoData.builder() + .taskId(k.getId().toString()) + .type(k.getType()) + .startTime(tmLong.intValue()) + .disposeTime(diff.intValue()) + .disposeIp(k.getDisposeIp()) + .flowAttack(0) + .flowClean(0) + .build(); + + taskData.getTaskArray().add(taskInfoData); + }); + }); + + if (reqInfo.getId().length != 0) { + List unExists = Arrays.stream(reqInfo.getId()) + .filter(v -> valuableData.parallelStream().noneMatch(k -> k.getId() == Long.parseLong(v))) + .collect(Collectors.toList()); + + unExists.parallelStream().forEach(v -> { + NodeTaskData taskData = new NodeTaskData(); + rspInfo.getItems().add(taskData); + taskData.setId(v); + taskData.setStatus(ErrorCode.ERR_NOSUCHDEVICE.getCode()); + taskData.setMessage(ErrorCode.ERR_NOSUCHDEVICE.getMsg()); + }); + } + + return ProtocolRespDTO.result(err, rspInfo); + } } diff --git a/src/main/java/com/dispose/controller/DisposeTaskController.java b/src/main/java/com/dispose/controller/DisposeTaskController.java index dfa0fac8..14643632 100644 --- a/src/main/java/com/dispose/controller/DisposeTaskController.java +++ b/src/main/java/com/dispose/controller/DisposeTaskController.java @@ -71,7 +71,7 @@ public class DisposeTaskController { */ @PostMapping("/stop") @ResponseBody - @ApiOperation("启动处置任务") + @ApiOperation("停止处置任务") public ProtocolRespDTO taskStop(@RequestBody ProtocolReqDTO mr, @RequestHeader HttpHeaders headers) throws JsonProcessingException { @@ -97,7 +97,7 @@ public class DisposeTaskController { taskData.setStatus(err.getCode()); taskData.setMessage(err.getMsg()); - rspInfo.getResult().add(taskData); + rspInfo.getItems().add(taskData); } return ProtocolRespDTO.result(err, rspInfo); @@ -113,7 +113,7 @@ public class DisposeTaskController { */ @PostMapping("/stop_ip") @ResponseBody - @ApiOperation("启动处置任务") + @ApiOperation("根据处置IP停止处置任务") public ProtocolRespDTO taskStopByIp(@RequestBody ProtocolReqDTO mr, @RequestHeader HttpHeaders headers) throws JsonProcessingException { @@ -135,7 +135,7 @@ public class DisposeTaskController { taskData.setStatus(err.getCode()); taskData.setMessage(err.getMsg()); - rspInfo.getResult().add(taskData); + rspInfo.getItems().add(taskData); }); return ProtocolRespDTO.result(err, rspInfo); @@ -151,7 +151,7 @@ public class DisposeTaskController { */ @PostMapping("/stop_node") @ResponseBody - @ApiOperation("启动处置任务") + @ApiOperation("停止处置节点处置任务") public ProtocolRespDTO taskStopAllOfDisposeNode(@RequestBody ProtocolReqDTO mr, @RequestHeader HttpHeaders headers) throws JsonProcessingException { @@ -185,7 +185,7 @@ public class DisposeTaskController { */ @PostMapping("/get_node") @ResponseBody - @ApiOperation("启动处置任务") + @ApiOperation("获取节点处置任务") public ProtocolRespDTO getNodeTask(@RequestBody ProtocolReqDTO mr, @RequestHeader HttpHeaders headers) throws JsonProcessingException { return getAllTask(mr, headers); @@ -201,7 +201,7 @@ public class DisposeTaskController { */ @PostMapping("/get") @ResponseBody - @ApiOperation("启动处置任务") + @ApiOperation("获取全部处置任务") public ProtocolRespDTO getAllTask(@RequestBody ProtocolReqDTO mr, @RequestHeader HttpHeaders headers) throws JsonProcessingException { @@ -227,7 +227,7 @@ public class DisposeTaskController { taskData.setStatus(err.getCode()); taskData.setMessage(err.getMsg()); - rspInfo.getResult().add(taskData); + rspInfo.getItems().add(taskData); } return ProtocolRespDTO.result(err, rspInfo); diff --git a/src/main/java/com/dispose/dispose/impl/DPTechImpl.java b/src/main/java/com/dispose/dispose/impl/DPTechImpl.java index 94241fb0..9d10fb85 100644 --- a/src/main/java/com/dispose/dispose/impl/DPTechImpl.java +++ b/src/main/java/com/dispose/dispose/impl/DPTechImpl.java @@ -188,11 +188,11 @@ public class DPTechImpl implements DisposeEntryManager { } /** - * Run dispose boolean. + * Run dispose error code. * * @param ip the ip * @param type the type - * @return the boolean + * @return the error code */ @Override public ErrorCode runDispose(String ip, DeviceCapacity type) { @@ -225,11 +225,11 @@ public class DPTechImpl implements DisposeEntryManager { } /** - * Stop dispose boolean. + * Stop dispose error code. * * @param ipAddr the ip addr * @param type the type - * @return the boolean + * @return the error code */ @Override public ErrorCode stopDispose(String ipAddr, DeviceCapacity type) { diff --git a/src/main/java/com/dispose/dispose/impl/VirtualDeviceImpl.java b/src/main/java/com/dispose/dispose/impl/VirtualDeviceImpl.java index b7e7d058..b2a91cfb 100644 --- a/src/main/java/com/dispose/dispose/impl/VirtualDeviceImpl.java +++ b/src/main/java/com/dispose/dispose/impl/VirtualDeviceImpl.java @@ -33,11 +33,11 @@ public class VirtualDeviceImpl implements DisposeEntryManager { } /** - * Run dispose boolean. + * Run dispose error code. * * @param ip the ip * @param type the type - * @return the boolean + * @return the error code */ @Override public ErrorCode runDispose(String ip, DeviceCapacity type) { @@ -45,11 +45,11 @@ public class VirtualDeviceImpl implements DisposeEntryManager { } /** - * Stop dispose boolean. + * Stop dispose error code. * * @param ipAddr the ip addr * @param type the type - * @return the boolean + * @return the error code */ @Override public ErrorCode stopDispose(String ipAddr, DeviceCapacity type) { diff --git a/src/main/java/com/dispose/dispose/po/DeviceInfo.java b/src/main/java/com/dispose/dispose/po/DeviceInfo.java index acbe3dce..4c4c30cf 100644 --- a/src/main/java/com/dispose/dispose/po/DeviceInfo.java +++ b/src/main/java/com/dispose/dispose/po/DeviceInfo.java @@ -1,5 +1,6 @@ package com.dispose.dispose.po; +import java.io.Serializable; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,7 +11,13 @@ import lombok.NoArgsConstructor; @Data @Builder @NoArgsConstructor -public class DeviceInfo { +public class DeviceInfo implements Serializable { + + /** + * The constant serialVersionUID. + */ + private static final long serialVersionUID = 1L; + /** * The Vendor. */ diff --git a/src/main/java/com/dispose/pojo/po/DisposeDeviceCapacity.java b/src/main/java/com/dispose/pojo/po/DisposeDeviceCapacity.java index 4f1949c1..4d8b6234 100644 --- a/src/main/java/com/dispose/pojo/po/DisposeDeviceCapacity.java +++ b/src/main/java/com/dispose/pojo/po/DisposeDeviceCapacity.java @@ -1,5 +1,6 @@ package com.dispose.pojo.po; +import java.io.Serializable; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -16,7 +17,12 @@ import lombok.ToString; @NoArgsConstructor @AllArgsConstructor @Builder -public class DisposeDeviceCapacity { +public class DisposeDeviceCapacity implements Serializable { + + /** + * The constant serialVersionUID. + */ + private static final long serialVersionUID = 1L; /** * The Capacity. diff --git a/src/main/java/com/dispose/pojo/po/ReturnStatus.java b/src/main/java/com/dispose/pojo/po/ReturnStatus.java index d11f88a8..e2f7fedf 100644 --- a/src/main/java/com/dispose/pojo/po/ReturnStatus.java +++ b/src/main/java/com/dispose/pojo/po/ReturnStatus.java @@ -14,7 +14,7 @@ public class ReturnStatus { /** * The Status. */ - private int status; + private Integer status; /** * The Message. */ diff --git a/src/main/java/com/dispose/pojo/vo/common/DisposeCapacity.java b/src/main/java/com/dispose/pojo/vo/common/DisposeCapacity.java index 394c122e..2281b36b 100644 --- a/src/main/java/com/dispose/pojo/vo/common/DisposeCapacity.java +++ b/src/main/java/com/dispose/pojo/vo/common/DisposeCapacity.java @@ -22,7 +22,7 @@ public class DisposeCapacity { * The Type. */ @JsonView(BaseView.class) - private int type; + private Integer type; /** * The Dispose ip. */ @@ -32,12 +32,12 @@ public class DisposeCapacity { * The Tol capacity. */ @JsonView(CapacityView.class) - private int tolCapacity; + private Integer tolCapacity; /** * The Used capacity. */ @JsonView(CapacityView.class) - private int usedCapacity; + private Integer usedCapacity; /** * The interface Base view. diff --git a/src/main/java/com/dispose/pojo/vo/common/TaskInfoData.java b/src/main/java/com/dispose/pojo/vo/common/TaskInfoData.java index fd14d6f4..5c9f0681 100644 --- a/src/main/java/com/dispose/pojo/vo/common/TaskInfoData.java +++ b/src/main/java/com/dispose/pojo/vo/common/TaskInfoData.java @@ -55,4 +55,14 @@ public class TaskInfoData extends IDReturnStatus { * The Flow band width. */ private Integer flowBandWidth; + + /** + * The Flow attack. + */ + private Integer flowAttack; + + /** + * The Flow clean. + */ + private Integer flowClean; } diff --git a/src/main/java/com/dispose/pojo/vo/common/TaskInfoDetail.java b/src/main/java/com/dispose/pojo/vo/common/TaskInfoDetail.java index 7e4c4316..2a86a458 100644 --- a/src/main/java/com/dispose/pojo/vo/common/TaskInfoDetail.java +++ b/src/main/java/com/dispose/pojo/vo/common/TaskInfoDetail.java @@ -41,7 +41,7 @@ public class TaskInfoDetail implements Serializable { /** * The Type. */ - private int type; + private Integer type; /** * The Dispose ip. */ @@ -61,7 +61,7 @@ public class TaskInfoDetail implements Serializable { /** * The Flow direction. */ - private int flowDirection; + private Integer flowDirection; /** * The Attack type. */ @@ -69,9 +69,9 @@ public class TaskInfoDetail implements Serializable { /** * The Flow band width. */ - private int flowBandWidth; + private Integer flowBandWidth; /** * The Current status. */ - private int currentStatus; + private Integer currentStatus; } diff --git a/src/main/java/com/dispose/pojo/vo/information/NodeTaskData.java b/src/main/java/com/dispose/pojo/vo/information/NodeTaskData.java new file mode 100644 index 00000000..d3297a3b --- /dev/null +++ b/src/main/java/com/dispose/pojo/vo/information/NodeTaskData.java @@ -0,0 +1,35 @@ +package com.dispose.pojo.vo.information; + +import com.dispose.pojo.vo.common.IDReturnStatus; +import com.dispose.pojo.vo.common.TaskInfoData; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * The type Node task data. + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Builder +@AllArgsConstructor +@JsonPropertyOrder({"id", "taskArray", "status", "message"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class NodeTaskData extends IDReturnStatus { + /** + * The Task array. + */ + private List taskArray; + + /** + * Instantiates a new Node task data. + */ + public NodeTaskData() { + this.taskArray = new ArrayList<>(); + } +} diff --git a/src/main/java/com/dispose/pojo/vo/information/NodeTaskRsp.java b/src/main/java/com/dispose/pojo/vo/information/NodeTaskRsp.java new file mode 100644 index 00000000..8b54cbf2 --- /dev/null +++ b/src/main/java/com/dispose/pojo/vo/information/NodeTaskRsp.java @@ -0,0 +1,27 @@ +package com.dispose.pojo.vo.information; + +import java.util.ArrayList; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +/** + * The type Node task rsp. + */ +@Data +@Builder +@AllArgsConstructor +public class NodeTaskRsp { + /** + * The Items. + */ + private List items; + + /** + * Instantiates a new Node task rsp. + */ + public NodeTaskRsp() { + this.items = new ArrayList<>(); + } +} diff --git a/src/main/java/com/dispose/pojo/vo/task/TaskInfoRsp.java b/src/main/java/com/dispose/pojo/vo/task/TaskInfoRsp.java index 94251aca..9c5e312d 100644 --- a/src/main/java/com/dispose/pojo/vo/task/TaskInfoRsp.java +++ b/src/main/java/com/dispose/pojo/vo/task/TaskInfoRsp.java @@ -15,14 +15,14 @@ import lombok.Data; @AllArgsConstructor public class TaskInfoRsp { /** - * The Result. + * The Items. */ - List result; + List items; /** * Instantiates a new Task info rsp. */ public TaskInfoRsp() { - this.result = new ArrayList<>(); + this.items = new ArrayList<>(); } } diff --git a/src/main/java/com/dispose/service/TaskService.java b/src/main/java/com/dispose/service/TaskService.java index f6d40fde..6efb1b31 100644 --- a/src/main/java/com/dispose/service/TaskService.java +++ b/src/main/java/com/dispose/service/TaskService.java @@ -2,6 +2,7 @@ package com.dispose.service; import com.dispose.common.ErrorCode; import com.dispose.pojo.vo.common.TaskInfoDetail; +import java.util.List; /** * The interface Task service. @@ -59,4 +60,20 @@ public interface TaskService { * @return the boolean */ boolean taskIsExpired(TaskInfoDetail task); + + /** + * Gets node all running task. + * + * @param devId the dev id + * @return the node all running task + */ + List getNodeAllRunningTask(Long devId); + + /** + * Gets node all task. + * + * @param devId the dev id + * @return the node all task + */ + List getNodeAllTask(Long devId); } diff --git a/src/main/java/com/dispose/service/impl/TaskServiceImpl.java b/src/main/java/com/dispose/service/impl/TaskServiceImpl.java index e596d270..2fbd6d50 100644 --- a/src/main/java/com/dispose/service/impl/TaskServiceImpl.java +++ b/src/main/java/com/dispose/service/impl/TaskServiceImpl.java @@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -170,4 +171,37 @@ public class TaskServiceImpl implements TaskService { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) .isBefore(LocalDateTime.now()); } + + /** + * Gets node all running task. + * + * @param devId the dev id + * @return the node all running task + */ + @Override + public List getNodeAllRunningTask(Long devId) { + List taskList = taskCacheManager + .getAllTask() + .stream() + .filter(v -> v.getCurrentStatus() == DisposeTaskStatus.TASK_RUNNING.getCode() + && v.getDeviceId().equals(devId)) + .collect(Collectors.toList()); + + if(taskList.size() > 0) { + return taskList; + } + + return null; + } + + /** + * Gets node all task. + * + * @param devId the dev id + * @return the node all task + */ + @Override + public List getNodeAllTask(Long devId) { + return taskCacheManager.getAllTask(); + } } diff --git a/src/main/resources/mappers/DisposeTask.xml b/src/main/resources/mappers/DisposeTask.xml index d5967d03..e59be54c 100644 --- a/src/main/resources/mappers/DisposeTask.xml +++ b/src/main/resources/mappers/DisposeTask.xml @@ -8,7 +8,7 @@ currentStatus) VALUES (#{deviceId}, #{accountId}, #{type}, #{disposeIp}, - #{planEndTime}, #{flowDirection}, #{attackType}, + date_add(now(), interval #{planEndTime} MINUTE), #{flowDirection}, #{attackType}, #{flowBandWidth}, #{currentStatus} ) diff --git a/src/test/java/com/dispose/controller/DeviceNodeInfoControllerTest.java b/src/test/java/com/dispose/controller/DeviceNodeInfoControllerTest.java index b2000da4..459fa4d5 100644 --- a/src/test/java/com/dispose/controller/DeviceNodeInfoControllerTest.java +++ b/src/test/java/com/dispose/controller/DeviceNodeInfoControllerTest.java @@ -478,4 +478,101 @@ public class DeviceNodeInfoControllerTest extends InitTestEnvironment { .getResponse() .getContentAsString(); } + + @Test + public void t8_getNodeAllRunTask() throws Exception { + IDArrayReq reqData = IDArrayReq.builder() + .id(new String[]{String.valueOf(getExistsDeviceId()), "123"}) + .build(); + + ProtocolReqDTO reqInfo = new ProtocolReqDTO(); + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ConstValue.Protocol.CRYPTO_NONE); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(objectMapper.writeValueAsString(reqData)); + + mockMvc.perform(MockMvcRequestBuilders + .post("/information/run_task") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(200)) + .andReturn() + .getResponse() + .getContentAsString(); + } + + @Test + public void t8_getNodeAllRunTaskAll() throws Exception { + IDArrayReq reqData = IDArrayReq.builder() + .id(new String[]{}) + .build(); + + ProtocolReqDTO reqInfo = new ProtocolReqDTO(); + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ConstValue.Protocol.CRYPTO_NONE); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(objectMapper.writeValueAsString(reqData)); + + mockMvc.perform(MockMvcRequestBuilders + .post("/information/run_task") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(200)) + .andReturn() + .getResponse() + .getContentAsString(); + } + + @Test + public void t9_getNodeAllTask() throws Exception { + IDArrayReq reqData = IDArrayReq.builder() + .id(new String[]{String.valueOf(getExistsDeviceId()), "123"}) + .build(); + + ProtocolReqDTO reqInfo = new ProtocolReqDTO(); + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ConstValue.Protocol.CRYPTO_NONE); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(objectMapper.writeValueAsString(reqData)); + + mockMvc.perform(MockMvcRequestBuilders + .post("/information/all_task") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(200)) + .andReturn() + .getResponse() + .getContentAsString(); + } + + @Test + public void t9_getNodeAllTaskAll() throws Exception { + IDArrayReq reqData = IDArrayReq.builder() + .id(new String[]{}) + .build(); + + ProtocolReqDTO reqInfo = new ProtocolReqDTO(); + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ConstValue.Protocol.CRYPTO_NONE); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(objectMapper.writeValueAsString(reqData)); + + mockMvc.perform(MockMvcRequestBuilders + .post("/information/all_task") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(200)) + .andReturn() + .getResponse() + .getContentAsString(); + } + } diff --git a/src/test/java/com/dispose/mapper/DisposeTaskMapperTest.java b/src/test/java/com/dispose/mapper/DisposeTaskMapperTest.java index 3e7bc206..5511ba72 100644 --- a/src/test/java/com/dispose/mapper/DisposeTaskMapperTest.java +++ b/src/test/java/com/dispose/mapper/DisposeTaskMapperTest.java @@ -7,8 +7,6 @@ import com.dispose.common.FlowDirection; import com.dispose.pojo.vo.common.TaskInfoDetail; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.Assert; @@ -79,7 +77,7 @@ public class DisposeTaskMapperTest extends InitTestEnvironment { * Add new task test. */ @Test - public void addNewTaskTest() { + public void t1_addNewTaskTest() { TaskInfoDetail taskData = TaskInfoDetail.builder() .id(-1L) .deviceId(deviceId) @@ -89,8 +87,7 @@ public class DisposeTaskMapperTest extends InitTestEnvironment { .attackType("0") .flowDirection(FlowDirection.DIRECTION_TWOWAY.getCode()) .currentStatus(DisposeTaskStatus.TASK_NEW.getCode()) - .planEndTime(LocalDateTime.now().plusMinutes(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd " + - "HH:mm:ss"))) + .planEndTime("60") .build(); disposeTaskMapper.addNewTask(taskData); @@ -103,7 +100,7 @@ public class DisposeTaskMapperTest extends InitTestEnvironment { * Remove task test. */ @Test - public void removeTaskTest() { + public void t99_removeTaskTest() { disposeTaskMapper.selectAll().forEach(v -> { disposeTaskMapper.removeTaskById(v.getId()); Assert.assertNull(disposeTaskMapper.getTaskInfoById(v.getId()));