From a04b83e4c3f801e651b3b9d21989714b5299e78f Mon Sep 17 00:00:00 2001 From: EnderByEndera <707475564@qq.com> Date: Tue, 9 Jan 2024 09:20:13 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0doris=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=202.=20=E6=B7=BB=E5=8A=A0StateMapper=EF=BC=8C?= =?UTF-8?q?=E5=87=86=E5=A4=87=E8=BF=9B=E8=A1=8Coracle=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../configuration/entity/task/Command.java | 25 ++++++++++++++++ .../utils/status/state/PauseState.java | 16 ---------- .../utils/status/state/State.java | 6 ---- .../status => server/task}/StatusChanger.java | 4 +-- .../server/task/TaskController.java | 9 +++++- .../protection/server/task/TaskService.java | 30 ++++++++++++++++++- .../server/task/state/PauseState.java | 19 ++++++++++++ .../task}/state/RunningState.java | 2 +- .../protection/server/task/state/State.java | 6 ++++ .../server/task/state/StateMapper.java | 8 +++++ .../task}/state/StopState.java | 8 ++--- src/main/resources/config/application.yml | 6 ++++ src/main/resources/mappers/StateMapper.xml | 9 ++++++ .../defense/template/TemplateServiceTest.java | 23 +++++++++----- 15 files changed, 134 insertions(+), 39 deletions(-) create mode 100644 src/main/java/com/realtime/protection/configuration/entity/task/Command.java delete mode 100644 src/main/java/com/realtime/protection/configuration/utils/status/state/PauseState.java delete mode 100644 src/main/java/com/realtime/protection/configuration/utils/status/state/State.java rename src/main/java/com/realtime/protection/{configuration/utils/status => server/task}/StatusChanger.java (72%) create mode 100644 src/main/java/com/realtime/protection/server/task/state/PauseState.java rename src/main/java/com/realtime/protection/{configuration/utils/status => server/task}/state/RunningState.java (88%) create mode 100644 src/main/java/com/realtime/protection/server/task/state/State.java create mode 100644 src/main/java/com/realtime/protection/server/task/state/StateMapper.java rename src/main/java/com/realtime/protection/{configuration/utils/status => server/task}/state/StopState.java (51%) create mode 100644 src/main/resources/mappers/StateMapper.xml diff --git a/build.gradle b/build.gradle index 6b7ffd3..f5ff0ab 100644 --- a/build.gradle +++ b/build.gradle @@ -46,4 +46,4 @@ dependencies { tasks.named('test') { useJUnitPlatform() -} +} \ No newline at end of file diff --git a/src/main/java/com/realtime/protection/configuration/entity/task/Command.java b/src/main/java/com/realtime/protection/configuration/entity/task/Command.java new file mode 100644 index 0000000..8c6725a --- /dev/null +++ b/src/main/java/com/realtime/protection/configuration/entity/task/Command.java @@ -0,0 +1,25 @@ +package com.realtime.protection.configuration.entity.task; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class Command { + private Integer id; + + private Integer type; + private String sourceIP; + private String sourcePort; + private String destinationIP; + private String destinationPort; + private Integer protocol; + + private String maskSourceIP; + private String maskSourcePort; + private String maskDestinationIP; + private String maskDestinationPort; + private Integer direction; + + private LocalDateTime datetime; +} diff --git a/src/main/java/com/realtime/protection/configuration/utils/status/state/PauseState.java b/src/main/java/com/realtime/protection/configuration/utils/status/state/PauseState.java deleted file mode 100644 index 0b37d33..0000000 --- a/src/main/java/com/realtime/protection/configuration/utils/status/state/PauseState.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.realtime.protection.configuration.utils.status.state; - -public class PauseState implements State { - @Override - public Boolean handle(State newState) { - if (!(newState instanceof RunningState)) { - return false; - } - - return handleRun(); - } - - private Boolean handleRun() { - return true; - } -} diff --git a/src/main/java/com/realtime/protection/configuration/utils/status/state/State.java b/src/main/java/com/realtime/protection/configuration/utils/status/state/State.java deleted file mode 100644 index 6e931c1..0000000 --- a/src/main/java/com/realtime/protection/configuration/utils/status/state/State.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.realtime.protection.configuration.utils.status.state; - -public interface State { - - Boolean handle(State newState); -} diff --git a/src/main/java/com/realtime/protection/configuration/utils/status/StatusChanger.java b/src/main/java/com/realtime/protection/server/task/StatusChanger.java similarity index 72% rename from src/main/java/com/realtime/protection/configuration/utils/status/StatusChanger.java rename to src/main/java/com/realtime/protection/server/task/StatusChanger.java index 34b3d9d..06295bd 100644 --- a/src/main/java/com/realtime/protection/configuration/utils/status/StatusChanger.java +++ b/src/main/java/com/realtime/protection/server/task/StatusChanger.java @@ -1,6 +1,6 @@ -package com.realtime.protection.configuration.utils.status; +package com.realtime.protection.server.task; -import com.realtime.protection.configuration.utils.status.state.State; +import com.realtime.protection.server.task.state.State; public class StatusChanger { diff --git a/src/main/java/com/realtime/protection/server/task/TaskController.java b/src/main/java/com/realtime/protection/server/task/TaskController.java index 29c2a9e..deb8d93 100644 --- a/src/main/java/com/realtime/protection/server/task/TaskController.java +++ b/src/main/java/com/realtime/protection/server/task/TaskController.java @@ -76,7 +76,7 @@ public class TaskController { .setData("success", taskService.updateTask(task)); } - @GetMapping("/{taskId}/{auditStatus}/audit") + @GetMapping("/{taskId}/audit/{auditStatus}") public ResponseResult changeTaskAuditStatus(@PathVariable Integer auditStatus, @PathVariable Integer taskId) { return ResponseResult.ok() .setData("task_id", taskId) @@ -89,4 +89,11 @@ public class TaskController { .setData("task_id", taskId) .setData("success", taskService.deleteTask(taskId)); } + + @GetMapping("/{taskId}/running/{state}") + public ResponseResult changeTaskStatus(@PathVariable Integer state, @PathVariable Integer taskId) { + return ResponseResult.ok() + .setData("task_id", taskId) + .setData("success", taskService.changeTaskStatus(taskId, state)); + } } diff --git a/src/main/java/com/realtime/protection/server/task/TaskService.java b/src/main/java/com/realtime/protection/server/task/TaskService.java index 3d10c44..1035330 100644 --- a/src/main/java/com/realtime/protection/server/task/TaskService.java +++ b/src/main/java/com/realtime/protection/server/task/TaskService.java @@ -1,8 +1,11 @@ package com.realtime.protection.server.task; -import com.baomidou.dynamic.datasource.annotation.DS; import com.realtime.protection.configuration.entity.task.Task; import com.realtime.protection.configuration.utils.status.AuditStatusValidator; +import com.realtime.protection.server.task.state.PauseState; +import com.realtime.protection.server.task.state.RunningState; +import com.realtime.protection.server.task.state.State; +import com.realtime.protection.server.task.state.StopState; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -61,4 +64,29 @@ public class TaskService { public Boolean deleteTask(Integer taskId) { return taskMapper.deleteTask(taskId); } + + @Transactional + public Boolean changeTaskStatus(Integer taskId, Integer stateNum) { + State originalState = switch (taskMapper.queryTask(taskId).getTaskStatus()) { + // 运行中 + case 1 -> new RunningState(); + // 暂停中 + case 2 -> new PauseState(); + // 停止中 + case 3 -> new StopState(); + default -> throw new IllegalArgumentException(); + }; + + State newState = switch (stateNum) { + // 运行中 + case 1 -> new RunningState(); + // 暂停中 + case 2 -> new PauseState(); + // 停止中 + case 3 -> new StopState(); + default -> throw new IllegalArgumentException(); + }; + + return StatusChanger.setOriginal(originalState).changeState(newState); + } } diff --git a/src/main/java/com/realtime/protection/server/task/state/PauseState.java b/src/main/java/com/realtime/protection/server/task/state/PauseState.java new file mode 100644 index 0000000..26ab1bd --- /dev/null +++ b/src/main/java/com/realtime/protection/server/task/state/PauseState.java @@ -0,0 +1,19 @@ +package com.realtime.protection.server.task.state; + +import com.baomidou.dynamic.datasource.annotation.DS; + +public class PauseState implements State { + @Override + public Boolean handle(State newState) { + if (newState instanceof RunningState) { + return handleRun(); + } + + return false; + } + + @DS("oracle") + private Boolean handleRun() { + return true; + } +} diff --git a/src/main/java/com/realtime/protection/configuration/utils/status/state/RunningState.java b/src/main/java/com/realtime/protection/server/task/state/RunningState.java similarity index 88% rename from src/main/java/com/realtime/protection/configuration/utils/status/state/RunningState.java rename to src/main/java/com/realtime/protection/server/task/state/RunningState.java index ca21331..d47cefd 100644 --- a/src/main/java/com/realtime/protection/configuration/utils/status/state/RunningState.java +++ b/src/main/java/com/realtime/protection/server/task/state/RunningState.java @@ -1,4 +1,4 @@ -package com.realtime.protection.configuration.utils.status.state; +package com.realtime.protection.server.task.state; public class RunningState implements State { @Override diff --git a/src/main/java/com/realtime/protection/server/task/state/State.java b/src/main/java/com/realtime/protection/server/task/state/State.java new file mode 100644 index 0000000..fbfd5f7 --- /dev/null +++ b/src/main/java/com/realtime/protection/server/task/state/State.java @@ -0,0 +1,6 @@ +package com.realtime.protection.server.task.state; + +public interface State { + + Boolean handle(State newState); +} diff --git a/src/main/java/com/realtime/protection/server/task/state/StateMapper.java b/src/main/java/com/realtime/protection/server/task/state/StateMapper.java new file mode 100644 index 0000000..557c9d0 --- /dev/null +++ b/src/main/java/com/realtime/protection/server/task/state/StateMapper.java @@ -0,0 +1,8 @@ +package com.realtime.protection.server.task.state; + +import com.realtime.protection.configuration.entity.task.Command; +import org.apache.ibatis.annotations.Param; + +public interface StateMapper { + Boolean sendCommand(@Param("command") Command command); +} diff --git a/src/main/java/com/realtime/protection/configuration/utils/status/state/StopState.java b/src/main/java/com/realtime/protection/server/task/state/StopState.java similarity index 51% rename from src/main/java/com/realtime/protection/configuration/utils/status/state/StopState.java rename to src/main/java/com/realtime/protection/server/task/state/StopState.java index 3ec30fd..fb83db5 100644 --- a/src/main/java/com/realtime/protection/configuration/utils/status/state/StopState.java +++ b/src/main/java/com/realtime/protection/server/task/state/StopState.java @@ -1,14 +1,14 @@ -package com.realtime.protection.configuration.utils.status.state; +package com.realtime.protection.server.task.state; public class StopState implements State { @Override public Boolean handle(State newState) { - if (!(newState instanceof RunningState)) { - return false; + if (newState instanceof RunningState) { + return handleRun(); } - return handleRun(); + return false; } public Boolean handleRun() { diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml index 08ad647..8adf6e5 100644 --- a/src/main/resources/config/application.yml +++ b/src/main/resources/config/application.yml @@ -19,6 +19,12 @@ spring: url: jdbc:oracle:thin:@//10.26.22.45:1521/ORCL hikari: is-auto-commit: false + doris: + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + url: jdbc:mysql://10.26.22.133:9030 + hikari: + is-auto-commit: false aop: enabled: true primary: mysql diff --git a/src/main/resources/mappers/StateMapper.xml b/src/main/resources/mappers/StateMapper.xml new file mode 100644 index 0000000..9d215e7 --- /dev/null +++ b/src/main/resources/mappers/StateMapper.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/src/test/java/com/realtime/protection/server/defense/template/TemplateServiceTest.java b/src/test/java/com/realtime/protection/server/defense/template/TemplateServiceTest.java index ee9c16f..cfa4e7e 100644 --- a/src/test/java/com/realtime/protection/server/defense/template/TemplateServiceTest.java +++ b/src/test/java/com/realtime/protection/server/defense/template/TemplateServiceTest.java @@ -53,22 +53,31 @@ class TemplateServiceTest { @Test void testQueryTemplate() { List