1、AlertMessage类移动位置
2、动态规则增加删除判断,如果使用任务处于运行、暂停,不允许删除动态规则。(静态规则不需要删除判断,因为指令已经下发。但动态规则配置不能删除,告警信息过来会找不到动态规则)
This commit is contained in:
@@ -1,11 +1,13 @@
|
|||||||
package com.realtime.protection.configuration.entity.rule.dynamicrule;
|
package com.realtime.protection.configuration.entity.alert;
|
||||||
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
|
import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
|
||||||
|
import com.realtime.protection.configuration.kafka.KafkaMessage;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class AlertMessage {
|
public class AlertMessage implements KafkaMessage {
|
||||||
|
|
||||||
@JsonProperty("task_id")
|
@JsonProperty("task_id")
|
||||||
private Long taskId;
|
private Long taskId;
|
||||||
@@ -31,4 +33,3 @@ public class AlertMessage {
|
|||||||
private String alertMessageUUID;
|
private String alertMessageUUID;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ public class DynamicRuleObject {
|
|||||||
private Integer dynamicRuleCreateUserId;
|
private Integer dynamicRuleCreateUserId;
|
||||||
@JsonProperty("dynamic_rule_used_task_id")
|
@JsonProperty("dynamic_rule_used_task_id")
|
||||||
@Schema(description = "使用该动态规则的任务ID", accessMode = Schema.AccessMode.READ_ONLY)
|
@Schema(description = "使用该动态规则的任务ID", accessMode = Schema.AccessMode.READ_ONLY)
|
||||||
private Integer dynamicRuleUsedTaskId;
|
private Long dynamicRuleUsedTaskId;
|
||||||
|
|
||||||
//前端不发送事件类型和来源系统了,而是根据事件类型和来源系统确定策略模板id,发过来template_id
|
//前端不发送事件类型和来源系统了,而是根据事件类型和来源系统确定策略模板id,发过来template_id
|
||||||
@JsonProperty("dynamic_rule_source_system")
|
@JsonProperty("dynamic_rule_source_system")
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.realtime.protection.server.alertmessage;
|
package com.realtime.protection.server.alertmessage;
|
||||||
|
|
||||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage;
|
import com.realtime.protection.configuration.entity.alert.AlertMessage;
|
||||||
import com.realtime.protection.configuration.response.ResponseResult;
|
import com.realtime.protection.configuration.response.ResponseResult;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.realtime.protection.server.alertmessage;
|
|||||||
|
|
||||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||||
import com.realtime.protection.configuration.entity.defense.template.ProtectLevel;
|
import com.realtime.protection.configuration.entity.defense.template.ProtectLevel;
|
||||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage;
|
import com.realtime.protection.configuration.entity.alert.AlertMessage;
|
||||||
import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
|
import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.realtime.protection.server.alertmessage;
|
|||||||
|
|
||||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||||
import com.realtime.protection.configuration.entity.defense.template.ProtectLevel;
|
import com.realtime.protection.configuration.entity.defense.template.ProtectLevel;
|
||||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage;
|
import com.realtime.protection.configuration.entity.alert.AlertMessage;
|
||||||
import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
|
import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
|
||||||
import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
|
import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
|
||||||
import com.realtime.protection.configuration.utils.enums.StateEnum;
|
import com.realtime.protection.configuration.utils.enums.StateEnum;
|
||||||
|
|||||||
@@ -45,4 +45,6 @@ public interface DynamicRuleMapper {
|
|||||||
String sourceSystem, String creator);
|
String sourceSystem, String creator);
|
||||||
|
|
||||||
List<DynamicRuleObject> queryDynamicRuleByIds(List<Integer> ids);
|
List<DynamicRuleObject> queryDynamicRuleByIds(List<Integer> ids);
|
||||||
|
|
||||||
|
Integer queryTaskStatusBydynamicRuleId(Integer dynamicRuleId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.alibaba.excel.util.ListUtils;
|
|||||||
import com.realtime.protection.configuration.entity.defense.template.Template;
|
import com.realtime.protection.configuration.entity.defense.template.Template;
|
||||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject;
|
import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject;
|
||||||
import com.realtime.protection.configuration.utils.SqlSessionWrapper;
|
import com.realtime.protection.configuration.utils.SqlSessionWrapper;
|
||||||
|
import com.realtime.protection.configuration.utils.enums.StateEnum;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@@ -72,8 +73,17 @@ public class DynamicRuleService {
|
|||||||
|
|
||||||
|
|
||||||
public void deleteDynamicRuleObject(Integer dynamicRuleId) {
|
public void deleteDynamicRuleObject(Integer dynamicRuleId) {
|
||||||
//不需要使用 join
|
//根据任务状态判断能否删除
|
||||||
//在数据库中设置了级联删除 ON DELETE CASCADE,在删除在从父表中删除数据时自动删除子表中的数据
|
Integer taskStatus = dynamicRuleMapper.queryTaskStatusBydynamicRuleId(dynamicRuleId);
|
||||||
|
switch (StateEnum.getStateEnumByNum(taskStatus)){
|
||||||
|
case RUNNING:
|
||||||
|
throw new IllegalArgumentException("使用该动态规则的任务处于运行状态");
|
||||||
|
case PAUSED:
|
||||||
|
throw new IllegalArgumentException("使用该动态规则的任务处于暂停状态");
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//不需要使用 join,在数据库中设置了级联删除 ON DELETE CASCADE,在删除在从父表中删除数据时自动删除子表中的数据
|
||||||
dynamicRuleMapper.deleteDynamicRuleObject(dynamicRuleId);
|
dynamicRuleMapper.deleteDynamicRuleObject(dynamicRuleId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
<result column="has_dns" property="hasDNS"/>
|
<result column="has_dns" property="hasDNS"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<resultMap id="alertMessageMap" type="com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage">
|
<resultMap id="alertMessageMap" type="com.realtime.protection.configuration.entity.alert.AlertMessage">
|
||||||
<id column="ALERT_MESSAGE_ID" property="alertMessageUUID"/>
|
<id column="ALERT_MESSAGE_ID" property="alertMessageUUID"/>
|
||||||
<result column="TASK_ID" property="taskId"/>
|
<result column="TASK_ID" property="taskId"/>
|
||||||
<result column="DYNAMIC_RULE_ID" property="dynamicRuleId"/>
|
<result column="DYNAMIC_RULE_ID" property="dynamicRuleId"/>
|
||||||
|
|||||||
@@ -237,5 +237,13 @@
|
|||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="queryTaskStatusBydynamicRuleId" resultType="java.lang.Integer">
|
||||||
|
select t_task.task_status
|
||||||
|
from t_dynamic_rule
|
||||||
|
left join realtime_protection.t_task
|
||||||
|
on t_task.task_id = t_dynamic_rule.dynamic_rule_used_task_id
|
||||||
|
where dynamic_rule_id = #{dynamicRuleId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -1,8 +1,5 @@
|
|||||||
package com.realtime.protection.server.alertmessage;
|
package com.realtime.protection.server.alertmessage;
|
||||||
|
|
||||||
import com.github.xiaoymin.knife4j.annotations.Ignore;
|
|
||||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage;
|
|
||||||
import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|||||||
@@ -1,21 +1,36 @@
|
|||||||
package com.realtime.protection.server.rule.dynamic;
|
package com.realtime.protection.server.rule.dynamic;
|
||||||
|
|
||||||
import com.github.xiaoymin.knife4j.annotations.Ignore;
|
|
||||||
import com.realtime.protection.ProtectionApplicationTests;
|
import com.realtime.protection.ProtectionApplicationTests;
|
||||||
|
import com.realtime.protection.configuration.entity.defense.object.ProtectObject;
|
||||||
|
import com.realtime.protection.configuration.entity.defense.template.Template;
|
||||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject;
|
import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject;
|
||||||
|
import com.realtime.protection.configuration.entity.task.Task;
|
||||||
|
import com.realtime.protection.server.defense.object.ProtectObjectService;
|
||||||
|
import com.realtime.protection.server.defense.template.TemplateService;
|
||||||
import com.realtime.protection.server.rule.dynamicrule.DynamicRuleService;
|
import com.realtime.protection.server.rule.dynamicrule.DynamicRuleService;
|
||||||
|
import com.realtime.protection.server.task.TaskService;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@SpringBootTest
|
@SpringBootTest
|
||||||
public class DynamicRuleServiceTest extends ProtectionApplicationTests {
|
public class DynamicRuleServiceTest extends ProtectionApplicationTests {
|
||||||
private final DynamicRuleService dynamicRuleService;
|
private final DynamicRuleService dynamicRuleService;
|
||||||
|
private final TaskService taskService;
|
||||||
|
|
||||||
|
private final ProtectObjectService protectObjectService;
|
||||||
|
|
||||||
|
private final TemplateService templateService;
|
||||||
@Autowired
|
@Autowired
|
||||||
public DynamicRuleServiceTest(DynamicRuleService dynamicRuleService) {
|
public DynamicRuleServiceTest(DynamicRuleService dynamicRuleService,TaskService taskService,
|
||||||
|
ProtectObjectService protectObjectService,TemplateService templateService) {
|
||||||
this.dynamicRuleService = dynamicRuleService;
|
this.dynamicRuleService = dynamicRuleService;
|
||||||
|
this.taskService = taskService;
|
||||||
|
this.protectObjectService = protectObjectService;
|
||||||
|
this.templateService = templateService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -36,7 +51,38 @@ public class DynamicRuleServiceTest extends ProtectionApplicationTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testDeleteDynamicRule() {
|
void testDeleteDynamicRule() {
|
||||||
// dynamicRuleService.deleteDynamicRuleObject(8);
|
List<ProtectObject> protectObject = protectObjectService.queryProtectObjects(null, null, 1, 1);
|
||||||
|
List<Template> templates = templateService.queryTemplates(null, 1, 1);
|
||||||
|
|
||||||
|
DynamicRuleObject object = new DynamicRuleObject();
|
||||||
|
object.setDynamicRuleName("UpdateDynamicRule2");
|
||||||
|
object.setDynamicRuleFrequency(1);
|
||||||
|
object.setDynamicRulePriority(1);
|
||||||
|
object.setDynamicRuleRange("北京");
|
||||||
|
object.setDynamicRuleProtectLevel(2);
|
||||||
|
object.setTemplateId(templates.get(0).getTemplateId());
|
||||||
|
object.setProtectObjectIds(List.of(new Integer[]{protectObject.get(0).getProtectObjectId()}));
|
||||||
|
Integer dynamicRuleId = dynamicRuleService.newDynamicRuleObject(object);
|
||||||
|
|
||||||
|
|
||||||
|
Task task = new Task();
|
||||||
|
task.setTaskName("dong态测试");
|
||||||
|
LocalDateTime taskStartTime = LocalDateTime.now().plusMinutes(1);
|
||||||
|
LocalDateTime taskEndTime = LocalDateTime.now().plusYears(5);
|
||||||
|
task.setTaskStartTime(taskStartTime);
|
||||||
|
task.setTaskEndTime(taskEndTime);
|
||||||
|
task.setTaskAct("阻断");
|
||||||
|
task.setTaskType(1);
|
||||||
|
task.setTaskCreateUserId(1);
|
||||||
|
task.setTaskCreateUsername("xxx");
|
||||||
|
task.setTaskCreateDepart("xxx");
|
||||||
|
task.setDynamicRuleIds(List.of(new Integer[]{dynamicRuleId}));
|
||||||
|
|
||||||
|
Long taskId = taskService.newTask(task);
|
||||||
|
|
||||||
|
taskService.changeTaskStatus(taskId, 2);
|
||||||
|
|
||||||
|
// dynamicRuleService.deleteDynamicRuleObject(dynamicRuleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user