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