From ff02e0c793fe2e6253f18ae737a886fa581a80db Mon Sep 17 00:00:00 2001 From: huangxin Date: Tue, 21 Apr 2020 20:33:46 +0800 Subject: [PATCH] =?UTF-8?q?OCT=20REM:=201.=20=E6=B7=BB=E5=8A=A0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DisposeTaskController.java | 242 ++++++++++++++++++ .../dispose/pojo/vo/common/IDArrayReq.java | 3 + .../dispose/pojo/vo/task/StartTaskReq.java | 25 ++ .../dispose/pojo/vo/task/StartTaskRsp.java | 20 ++ .../dispose/pojo/vo/task/StopTaskData.java | 18 ++ .../com/dispose/pojo/vo/task/StopTaskReq.java | 17 ++ .../dispose/pojo/vo/task/TaskInfoData.java | 29 +++ .../com/dispose/pojo/vo/task/TaskInfoRsp.java | 27 ++ 8 files changed, 381 insertions(+) create mode 100644 src/main/java/com/dispose/controller/DisposeTaskController.java create mode 100644 src/main/java/com/dispose/pojo/vo/task/StartTaskReq.java create mode 100644 src/main/java/com/dispose/pojo/vo/task/StartTaskRsp.java create mode 100644 src/main/java/com/dispose/pojo/vo/task/StopTaskData.java create mode 100644 src/main/java/com/dispose/pojo/vo/task/StopTaskReq.java create mode 100644 src/main/java/com/dispose/pojo/vo/task/TaskInfoData.java create mode 100644 src/main/java/com/dispose/pojo/vo/task/TaskInfoRsp.java diff --git a/src/main/java/com/dispose/controller/DisposeTaskController.java b/src/main/java/com/dispose/controller/DisposeTaskController.java new file mode 100644 index 00000000..b0e8086b --- /dev/null +++ b/src/main/java/com/dispose/controller/DisposeTaskController.java @@ -0,0 +1,242 @@ +package com.dispose.controller; + +import com.dispose.common.ErrorCode; +import com.dispose.pojo.dto.ProtocolReqDTO; +import com.dispose.pojo.dto.ProtocolRespDTO; +import com.dispose.pojo.vo.common.IDArrayReq; +import com.dispose.pojo.vo.task.StartTaskReq; +import com.dispose.pojo.vo.task.StartTaskRsp; +import com.dispose.pojo.vo.task.StopTaskReq; +import com.dispose.pojo.vo.task.TaskInfoRsp; +import com.dispose.pojo.vo.task.TaskInfoData; +import com.fasterxml.jackson.core.JsonProcessingException; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.Builder; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * The type Dispose task controller. + */ +@Controller +@RequestMapping(value = "/task") +@Slf4j +@Api(value = "抗DDoS处置平台处置任务接口", tags = "抗DDoS处置平台处置任务接口") +@Component +public class DisposeTaskController { + /** + * Task start protocol resp dto. + * + * @param mr the mr + * @param headers the headers + * @return the protocol resp dto + * @throws JsonProcessingException the json processing exception + */ + @PostMapping("/start") + @ResponseBody + @ApiOperation("启动处置任务") + @Builder + public ProtocolRespDTO taskStart(@RequestBody ProtocolReqDTO mr, + @RequestHeader HttpHeaders headers) + throws JsonProcessingException { + ErrorCode err = mr.verifyRequest(headers); + + if (err != ErrorCode.ERR_OK) { + return ProtocolRespDTO.result(err); + } + + StartTaskReq reqInfo = mr.getRequestObject(StartTaskReq.class); + StartTaskRsp rspInfo = new StartTaskRsp(); + + rspInfo.setTaskId(String.valueOf(reqInfo.getId())); + rspInfo.setStatus(err.getCode()); + rspInfo.setMessage(err.getMsg()); + + return ProtocolRespDTO.result(err, rspInfo); + } + + /** + * Task stop protocol resp dto. + * + * @param mr the mr + * @param headers the headers + * @return the protocol resp dto + * @throws JsonProcessingException the json processing exception + */ + @PostMapping("/stop") + @ResponseBody + @ApiOperation("启动处置任务") + @Builder + public ProtocolRespDTO taskStop(@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); + TaskInfoRsp rspInfo = new TaskInfoRsp(); + + if(reqInfo.getTaskId() == null + || reqInfo.getTaskId().length == 0) { + return ProtocolRespDTO.result(ErrorCode.ERR_INPUTMISS); + } + + for(String v : reqInfo.getTaskId()) { + TaskInfoData taskData = TaskInfoData.builder() + .taskId(v) + .build(); + + taskData.setStatus(err.getCode()); + taskData.setMessage(err.getMsg()); + + rspInfo.getResult().add(taskData); + } + + return ProtocolRespDTO.result(err, rspInfo); + } + + /** + * Task stop by ip protocol resp dto. + * + * @param mr the mr + * @param headers the headers + * @return the protocol resp dto + * @throws JsonProcessingException the json processing exception + */ + @PostMapping("/stop_ip") + @ResponseBody + @ApiOperation("启动处置任务") + @Builder + public ProtocolRespDTO taskStopByIp(@RequestBody ProtocolReqDTO mr, + @RequestHeader HttpHeaders headers) + throws JsonProcessingException { + ErrorCode err = mr.verifyRequest(headers); + + if (err != ErrorCode.ERR_OK) { + return ProtocolRespDTO.result(err); + } + + StopTaskReq reqInfo = mr.getRequestObject(StopTaskReq.class); + TaskInfoRsp rspInfo = new TaskInfoRsp(); + + reqInfo.getItems().forEach(v -> { + TaskInfoData taskData = TaskInfoData.builder() + .type(v.getType()) + .build(); + + taskData.setId(v.getId()); + taskData.setStatus(err.getCode()); + taskData.setMessage(err.getMsg()); + + rspInfo.getResult().add(taskData); + }); + + return ProtocolRespDTO.result(err, rspInfo); + } + + /** + * Task stop all of dispose node protocol resp dto. + * + * @param mr the mr + * @param headers the headers + * @return the protocol resp dto + * @throws JsonProcessingException the json processing exception + */ + @PostMapping("/stop_node") + @ResponseBody + @ApiOperation("启动处置任务") + @Builder + public ProtocolRespDTO taskStopAllOfDisposeNode(@RequestBody ProtocolReqDTO mr, + @RequestHeader HttpHeaders headers) + throws JsonProcessingException { + return taskStopByIp(mr, headers); + } + + /** + * Task stop all protocol resp dto. + * + * @param mr the mr + * @param headers the headers + * @return the protocol resp dto + * @throws JsonProcessingException the json processing exception + */ + @PostMapping("/stop_all") + @ResponseBody + @ApiOperation("启动处置任务") + @Builder + public ProtocolRespDTO taskStopAll(@RequestBody ProtocolReqDTO mr, + @RequestHeader HttpHeaders headers) + throws JsonProcessingException { + return taskStopByIp(mr, headers); + } + + /** + * Gets node task. + * + * @param mr the mr + * @param headers the headers + * @return the node task + */ + @PostMapping("/get_node") + @ResponseBody + @ApiOperation("启动处置任务") + @Builder + public ProtocolRespDTO getNodeTask(@RequestBody ProtocolReqDTO mr, + @RequestHeader HttpHeaders headers) throws JsonProcessingException { + return getAllTask(mr, headers); + } + + /** + * Gets all task. + * + * @param mr the mr + * @param headers the headers + * @return the all task + * @throws JsonProcessingException the json processing exception + */ + @PostMapping("/get") + @ResponseBody + @ApiOperation("启动处置任务") + @Builder + public ProtocolRespDTO getAllTask(@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); + TaskInfoRsp rspInfo = new TaskInfoRsp(); + + if(reqInfo.getTaskId() == null + || reqInfo.getTaskId().length == 0) { + return ProtocolRespDTO.result(ErrorCode.ERR_INPUTMISS); + } + + for(String v : reqInfo.getTaskId()) { + TaskInfoData taskData = TaskInfoData.builder() + .taskId(v) + .build(); + + taskData.setStatus(err.getCode()); + taskData.setMessage(err.getMsg()); + + rspInfo.getResult().add(taskData); + } + + return ProtocolRespDTO.result(err, rspInfo); + } +} diff --git a/src/main/java/com/dispose/pojo/vo/common/IDArrayReq.java b/src/main/java/com/dispose/pojo/vo/common/IDArrayReq.java index fbf07bac..faa57870 100644 --- a/src/main/java/com/dispose/pojo/vo/common/IDArrayReq.java +++ b/src/main/java/com/dispose/pojo/vo/common/IDArrayReq.java @@ -1,5 +1,6 @@ package com.dispose.pojo.vo.common; +import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -12,6 +13,8 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) public class IDArrayReq { private String[] id; + private String[] taskId; } diff --git a/src/main/java/com/dispose/pojo/vo/task/StartTaskReq.java b/src/main/java/com/dispose/pojo/vo/task/StartTaskReq.java new file mode 100644 index 00000000..ccf2295b --- /dev/null +++ b/src/main/java/com/dispose/pojo/vo/task/StartTaskReq.java @@ -0,0 +1,25 @@ +package com.dispose.pojo.vo.task; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * The type Start task req. + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StartTaskReq { + private int id; + private int type; + private String disposeId; + private int disposeTime; + private Integer flowDirection; + private Integer[] attackType; + private Integer flowBandWidth; +} diff --git a/src/main/java/com/dispose/pojo/vo/task/StartTaskRsp.java b/src/main/java/com/dispose/pojo/vo/task/StartTaskRsp.java new file mode 100644 index 00000000..45abc664 --- /dev/null +++ b/src/main/java/com/dispose/pojo/vo/task/StartTaskRsp.java @@ -0,0 +1,20 @@ +package com.dispose.pojo.vo.task; + +import com.dispose.pojo.vo.common.IDReturnStatus; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@EqualsAndHashCode(callSuper = true) +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonPropertyOrder({"id", "taskId", "expireTime", "status", "message"}) +public class StartTaskRsp extends IDReturnStatus { + private String taskId; + private int expireTime; +} diff --git a/src/main/java/com/dispose/pojo/vo/task/StopTaskData.java b/src/main/java/com/dispose/pojo/vo/task/StopTaskData.java new file mode 100644 index 00000000..99db9637 --- /dev/null +++ b/src/main/java/com/dispose/pojo/vo/task/StopTaskData.java @@ -0,0 +1,18 @@ +package com.dispose.pojo.vo.task; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StopTaskData { + private String id; + private int type; + private String disposeIp; +} diff --git a/src/main/java/com/dispose/pojo/vo/task/StopTaskReq.java b/src/main/java/com/dispose/pojo/vo/task/StopTaskReq.java new file mode 100644 index 00000000..188cdf1e --- /dev/null +++ b/src/main/java/com/dispose/pojo/vo/task/StopTaskReq.java @@ -0,0 +1,17 @@ +package com.dispose.pojo.vo.task; + +import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class StopTaskReq { + List items; +} diff --git a/src/main/java/com/dispose/pojo/vo/task/TaskInfoData.java b/src/main/java/com/dispose/pojo/vo/task/TaskInfoData.java new file mode 100644 index 00000000..0b4c3ad3 --- /dev/null +++ b/src/main/java/com/dispose/pojo/vo/task/TaskInfoData.java @@ -0,0 +1,29 @@ +package com.dispose.pojo.vo.task; + +import com.dispose.pojo.vo.common.IDReturnStatus; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@EqualsAndHashCode(callSuper = true) +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonPropertyOrder({"id", "taskId", "type", "disposeIp", "leftTime", "status", "message"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class TaskInfoData extends IDReturnStatus { + private String taskId; + private Integer type; + private String disposeIp; + private Integer leftTime; + private Integer startTime; + private Integer disposeTime; + private Integer flowDirection; + private Integer[] attackType; + private Integer flowBandWidth; +} diff --git a/src/main/java/com/dispose/pojo/vo/task/TaskInfoRsp.java b/src/main/java/com/dispose/pojo/vo/task/TaskInfoRsp.java new file mode 100644 index 00000000..7c5edf21 --- /dev/null +++ b/src/main/java/com/dispose/pojo/vo/task/TaskInfoRsp.java @@ -0,0 +1,27 @@ +package com.dispose.pojo.vo.task; + +import java.util.ArrayList; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +/** + * The type Task info rsp. + */ +@Data +@Builder +@AllArgsConstructor +public class TaskInfoRsp { + /** + * The Result. + */ + List result; + + /** + * Instantiates a new Task info rsp. + */ + public TaskInfoRsp() { + this.result = new ArrayList<>(); + } +}