From 06886de3282532d20f7b8b0187439259de1997be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E5=B2=B3=20=E9=99=88?= Date: Wed, 3 Jan 2024 22:53:02 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=A2=9E=E5=8A=A0jackson=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E7=BC=A9=E5=87=8Fjson=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=95=BF=E5=BA=A6=202.=20ExceptionHandler=E6=B7=BB=E5=8A=A0SaT?= =?UTF-8?q?okenException=E6=A3=80=E6=9F=A5=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E7=99=BB=E9=99=86=203.=20ResponseResult?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0invalid=E5=92=8Cunauthorized=E9=9D=99?= =?UTF-8?q?=E6=80=81=E6=96=B9=E6=B3=95=204.=20Task=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=95=E6=9F=A5=E8=AF=A2=EF=BC=8C=E5=A4=9A?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=9B=B4=E6=96=B0=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=205.=20Template=E6=B7=BB=E5=8A=A0=E4=B8=A4=E4=B8=AAJsonPropert?= =?UTF-8?q?y=206.=20Template=E6=A8=A1=E5=9D=97=E6=B7=BB=E5=8A=A0query?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=207.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../protection/ProtectionApplication.java | 1 + .../entity/defense/template/Template.java | 20 +-- .../configuration/entity/task/Task.java | 7 +- .../exception/GlobalExceptionHandler.java | 18 ++- .../response/ResponseResult.java | 10 +- .../defense/template/TemplateController.java | 21 +++- .../defense/template/TemplateMapper.java | 7 +- .../defense/template/TemplateService.java | 5 + .../server/task/TaskController.java | 57 ++++++++- .../protection/server/task/TaskMapper.java | 32 ++++- .../protection/server/task/TaskService.java | 82 ++++++++++--- src/main/resources/config/application.yml | 2 + src/main/resources/mappers/TaskMapper.xml | 116 +++++++++++++++--- src/main/resources/mappers/TemplateMapper.xml | 17 +++ .../server/task/TaskControllerTest.java | 10 -- .../server/task/TaskServiceTest.java | 10 +- 16 files changed, 342 insertions(+), 73 deletions(-) delete mode 100644 src/test/java/com/realtime/protection/server/task/TaskControllerTest.java diff --git a/src/main/java/com/realtime/protection/ProtectionApplication.java b/src/main/java/com/realtime/protection/ProtectionApplication.java index 4effcda..c54ab37 100644 --- a/src/main/java/com/realtime/protection/ProtectionApplication.java +++ b/src/main/java/com/realtime/protection/ProtectionApplication.java @@ -1,5 +1,6 @@ package com.realtime.protection; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java b/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java index 80dd2ee..91f832a 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java +++ b/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java @@ -20,17 +20,23 @@ public class Template { @NotNull(message = "default_op should not be empty") private String defaultOp; - private boolean hasProtectObjectIP; + @JsonProperty("template_running_tasks") + private Integer templateRunningTasks; - private boolean hasProtectObjectPort; + @JsonProperty("template_used") + private Integer templateUsedTimes; - private boolean hasPeerIP; + private Boolean hasProtectObjectIP; - private boolean hasPeerPort; + private Boolean hasProtectObjectPort; - private boolean hasProtocol; + private Boolean hasPeerIP; - private boolean hasURL; + private Boolean hasPeerPort; - private boolean hasDNS; + private Boolean hasProtocol; + + private Boolean hasURL; + + private Boolean hasDNS; } diff --git a/src/main/java/com/realtime/protection/configuration/entity/task/Task.java b/src/main/java/com/realtime/protection/configuration/entity/task/Task.java index 6952169..ea5fd00 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/task/Task.java +++ b/src/main/java/com/realtime/protection/configuration/entity/task/Task.java @@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; @Data public class Task { @@ -53,13 +54,13 @@ public class Task { // ----------------------------------------------------------- @JsonProperty("static_rule_ids") - private Integer[] staticRuleIds; + private List staticRuleIds; @JsonProperty("dynamic_rule_ids") - private Integer[] dynamicRuleIds; + private List dynamicRuleIds; @JsonProperty("protect_object_ids") - private Integer[] protectObjectIds; + private List protectObjectIds; @JsonProperty("task_status") private Integer taskStatus; diff --git a/src/main/java/com/realtime/protection/configuration/exception/GlobalExceptionHandler.java b/src/main/java/com/realtime/protection/configuration/exception/GlobalExceptionHandler.java index 26ecf6a..77ceb74 100644 --- a/src/main/java/com/realtime/protection/configuration/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/realtime/protection/configuration/exception/GlobalExceptionHandler.java @@ -1,7 +1,9 @@ package com.realtime.protection.configuration.exception; import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.exception.SaTokenException; import com.realtime.protection.configuration.response.ResponseResult; +import io.swagger.v3.oas.annotations.ExternalDocumentation; import org.apache.ibatis.exceptions.PersistenceException; import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.core.annotation.Order; @@ -24,26 +26,30 @@ public class GlobalExceptionHandler { @ExceptionHandler(value = NotLoginException.class) public ResponseResult handleNotLoginException(NotLoginException e) { return new ResponseResult( - 400, + 401, e.getMessage() ); } @Order(2) @ExceptionHandler(value = PersistenceException.class) - public ResponseResult handleSQLException() { - return new ResponseResult( - 400, + public ResponseResult handleSQLException(PersistenceException e) { + return ResponseResult.invalid().setMessage( "please check the integrity of the data. check if the json data exists in the database"); } @Order(2) @ExceptionHandler(value = MethodArgumentNotValidException.class) public ResponseResult handleBindException(MethodArgumentNotValidException e) { - return new ResponseResult( - 400, + return ResponseResult.invalid().setMessage( e.getBindingResult().getAllErrors().stream() .map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining()) ); } + + @Order(2) + @ExceptionHandler(value = SaTokenException.class) + public ResponseResult handleSaTokenException(SaTokenException e) { + return ResponseResult.unAuthorized().setMessage(e.getMessage()); + } } diff --git a/src/main/java/com/realtime/protection/configuration/response/ResponseResult.java b/src/main/java/com/realtime/protection/configuration/response/ResponseResult.java index ed0f742..e327b99 100644 --- a/src/main/java/com/realtime/protection/configuration/response/ResponseResult.java +++ b/src/main/java/com/realtime/protection/configuration/response/ResponseResult.java @@ -30,7 +30,7 @@ public class ResponseResult implements Serializable { } public static ResponseResult ok() { - return new ResponseResult(200, "request succeeded"); + return new ResponseResult(200, "request succeed"); } public static ResponseResult ok(String message) { @@ -41,6 +41,14 @@ public class ResponseResult implements Serializable { return new ResponseResult(500, "request failed"); } + public static ResponseResult invalid() { + return new ResponseResult(400, "invalid request"); + } + + public static ResponseResult unAuthorized() { + return new ResponseResult(401, "UnAuthorized User"); + } + public static ResponseResult error(String message) { return new ResponseResult(500, message); } diff --git a/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java b/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java index c843abb..d9a789b 100644 --- a/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java +++ b/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java @@ -3,10 +3,9 @@ package com.realtime.protection.server.defense.template; import com.realtime.protection.configuration.entity.defense.template.Template; import com.realtime.protection.configuration.response.ResponseResult; import jakarta.validation.Valid; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController @RequestMapping("/deftac") @@ -40,4 +39,18 @@ public class TemplateController { .setData("template_id", null) .setData("success", false); } + + @GetMapping("/query") + public ResponseResult queryTemplate(@RequestParam(value = "template_name", required = false) String templateName, + @RequestParam("page") Integer page, + @RequestParam("page_size") Integer pageSize) { + if (page <= 0 || pageSize <= 0) { + return ResponseResult.invalid() + .setData("template_list", null); + } + List