diff --git a/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/AlertMessage.java b/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/AlertMessage.java
index 9267d03..dacfe32 100644
--- a/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/AlertMessage.java
+++ b/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/AlertMessage.java
@@ -12,4 +12,7 @@ public class AlertMessage {
@JsonProperty("five_tuple_with_mask")
private FiveTupleWithMask fiveTupleWithMask;
+ @JsonProperty("dynamic_rule_id")
+ private Integer dynamicRuleId;
+
}
diff --git a/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/DynamicRuleObject.java b/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/DynamicRuleObject.java
index 8b5f762..42771c8 100644
--- a/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/DynamicRuleObject.java
+++ b/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/DynamicRuleObject.java
@@ -3,6 +3,8 @@ package com.realtime.protection.configuration.entity.rule.dynamicrule;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.realtime.protection.configuration.entity.defense.object.ProtectObject;
import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -71,7 +73,9 @@ public class DynamicRuleObject {
private Integer templateId;
@NotNull
@JsonProperty("dynamic_rule_protect_level")
- @Schema(description = "防护等级", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
+ @Max(value = 3)
+ @Min(value = 1)
+ @Schema(description = "防护等级:1代表日常态、2代表应急态、3代表紧急态", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer dynamicRuleProtectLevel;
@NotNull
diff --git a/src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java b/src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java
index 18f65db..fbbcb98 100644
--- a/src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java
+++ b/src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java
@@ -65,4 +65,9 @@ public class TaskCommandInfo {
@Schema(description = "最新下发时间", accessMode = Schema.AccessMode.READ_ONLY)
private LocalDateTime latestSendTime;
+
+ @Schema(description = "防御策略模板ID", accessMode = Schema.AccessMode.READ_ONLY)
+ private Integer templateId;
+ @Schema(description = "防护等级", accessMode = Schema.AccessMode.READ_ONLY)
+ private Integer protectLevel;
}
diff --git a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageController.java b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageController.java
index 44e0661..726ed8a 100644
--- a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageController.java
+++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageController.java
@@ -21,7 +21,7 @@ public class AlertMessageController
@PostMapping("/new")
public ResponseResult receiveAlertMessage(@RequestBody @Valid AlertMessage alertMessage){
- alertMessageService.receiveAlertMessage(alertMessage);
+ alertMessageService.processAlertMessage(alertMessage);
return ResponseResult.ok();
}
diff --git a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageMapper.java b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageMapper.java
new file mode 100644
index 0000000..2e8a918
--- /dev/null
+++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageMapper.java
@@ -0,0 +1,16 @@
+package com.realtime.protection.server.alertmessage;
+
+import com.realtime.protection.configuration.entity.defense.template.ProtectLevel;
+import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
+import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+
+@Mapper
+public interface AlertMessageMapper {
+
+ TaskCommandInfo getDynamicTaskInfos(Long taskId) ;
+
+
+ ProtectLevel queryTemplateProtectLevel(Integer templateId, Integer protectLevel, FiveTupleWithMask fiveTupleWithMask);
+}
diff --git a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java
index da8dda1..1caadc1 100644
--- a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java
+++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java
@@ -1,7 +1,8 @@
package com.realtime.protection.server.alertmessage;
+import com.realtime.protection.configuration.entity.defense.template.ProtectLevel;
import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage;
-import com.realtime.protection.configuration.entity.task.Task;
+import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
import com.realtime.protection.server.task.TaskService;
import org.springframework.stereotype.Service;
@@ -11,28 +12,62 @@ import com.realtime.protection.configuration.utils.enums.StateEnum;
@Service
public class AlertMessageService {
private final CommandService commandService;
+ private final AlertMessageMapper alertMessageMapper;
private final TaskService taskService;
- public AlertMessageService(CommandService commandService,TaskService taskService) {
+ public AlertMessageService(CommandService commandService,TaskService taskService,
+ AlertMessageMapper alertMessageMapper) {
this.commandService = commandService;
this.taskService = taskService;
+ this.alertMessageMapper = alertMessageMapper;
}
- public void receiveAlertMessage(AlertMessage alertMessage) {
+ public void processAlertMessage(AlertMessage alertMessage) {
Long taskId = alertMessage.getTaskId();
- //查task信息
- Task task = taskService.queryTask(taskId);
//检查task status是否为running?
-// if (task.getTaskStatus() != StateEnum.RUNNING.getStateNum()) {
+ Integer taskStatus = taskService.queryTaskStatus(taskId);
+ Integer temp = StateEnum.RUNNING.getStateNum();
+// if (taskStatus != StateEnum.RUNNING.getStateNum()) {
// return;
// }
- //task信息和alertMessage中的fiveTuple信息 合并成 TaskCommandInfo
- TaskCommandInfo dynamicTaskCommandInfo = new TaskCommandInfo();
+ //查task信息,和alertMessage中的fiveTuple信息 合并成 TaskCommandInfo
+ TaskCommandInfo dynamicTaskCommandInfo = alertMessageMapper.getDynamicTaskInfos(taskId);
+ //根据策略模板更新五元组
+ ProtectLevel templateProtectLevel = alertMessageMapper.queryTemplateProtectLevel(
+ dynamicTaskCommandInfo.getTemplateId(),
+ dynamicTaskCommandInfo.getProtectLevel(),
+ alertMessage.getFiveTupleWithMask());
+ updateFiveTupleWithMask(alertMessage.getFiveTupleWithMask(), templateProtectLevel);
+ dynamicTaskCommandInfo.setFiveTupleWithMask(alertMessage.getFiveTupleWithMask());
- //command入库
- //commandService.createCommand(staticTaskCommandInfo);
+// command入库
+ commandService.createCommand(dynamicTaskCommandInfo);
}
+
+ private void updateFiveTupleWithMask(FiveTupleWithMask alertMessageFiveTupleW, ProtectLevel templateProtectLevel) {
+ if(!templateProtectLevel.getHasProtectObjectIP()){
+ alertMessageFiveTupleW.setDestinationIP(null);
+ alertMessageFiveTupleW.setMaskDestinationIP(null);
+ }
+ if(!templateProtectLevel.getHasProtectObjectPort()){
+ alertMessageFiveTupleW.setDestinationPort(null);
+ alertMessageFiveTupleW.setMaskDestinationPort(null);
+ }
+ if(!templateProtectLevel.getHasPeerIP()){
+ alertMessageFiveTupleW.setSourceIP(null);
+ alertMessageFiveTupleW.setMaskSourceIP(null);
+ }
+ if(!templateProtectLevel.getHasPeerPort()){
+ alertMessageFiveTupleW.setSourcePort(null);
+ alertMessageFiveTupleW.setMaskSourcePort(null);
+ }
+ if (!templateProtectLevel.getHasProtocol()) {
+ alertMessageFiveTupleW.setProtocol(null);
+ alertMessageFiveTupleW.setMaskProtocol(null);
+ }
+ //目前告警信息还只是五元组,没有url、dns
+ }
}
diff --git a/src/main/resources/mappers/AlertMessageMapper.xml b/src/main/resources/mappers/AlertMessageMapper.xml
new file mode 100644
index 0000000..2ee28d4
--- /dev/null
+++ b/src/main/resources/mappers/AlertMessageMapper.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mappers/StaticRuleMapper.xml b/src/main/resources/mappers/StaticRuleMapper.xml
index a5323be..da3d9d3 100644
--- a/src/main/resources/mappers/StaticRuleMapper.xml
+++ b/src/main/resources/mappers/StaticRuleMapper.xml
@@ -104,12 +104,12 @@
-
-
+
+
-
-
+
+
@@ -122,7 +122,12 @@