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 templates = templateService.queryTemplates("DDOS", 1, 5);
- System.out.println(templates);
+ assertEquals(5, templates.size());
+ for (Template template : templates) {
+ assertTrue(template.getTemplateId() > 0);
+ }
}
@Test
void testUpdateTemplateSuccess() {
- template.setTemplateName("洪泛型DDOS攻击");
- assertTrue(templateService.updateTemplate(3, template));
+ List templates = templateService.queryTemplates("反射", 1, 6);
+ Template testTemplate = templates.get(0);
+ testTemplate.setTemplateName("洪泛型DDOS攻击");
+
+ assertTrue(templateService.updateTemplate(testTemplate.getTemplateId(), testTemplate));
}
@Test
void testAddTemplateUsedTimes() {
- List templates = templateService.queryTemplates("洪泛型DDOS攻击", 1, 1);
+ template.setTemplateName("add test");
+ templateService.newTemplate(template);
+
+ List templates = templateService.queryTemplates("add", 1, 1);
Template originalTemplate = templates.get(0);
- Boolean success = templateService.addTemplateUsedTimes(3, 4);
- templates = templateService.queryTemplates("洪泛型DDOS攻击", 1, 1);
- assertEquals(templates.get(0).getTemplateUsedTimes(), originalTemplate.getTemplateUsedTimes() + 4);
+ Boolean success = templateService.addTemplateUsedTimes(originalTemplate.getTemplateId(), 4);
+ templates = templateService.queryTemplates("add", 1, 1);
+ assertEquals(originalTemplate.getTemplateUsedTimes() + 4, templates.get(0).getTemplateUsedTimes());
assertTrue(success);
}
}
\ No newline at end of file