summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEnderByEndera <[email protected]>2024-04-22 15:08:01 +0800
committerEnderByEndera <[email protected]>2024-04-22 15:08:01 +0800
commit05c2fa068c30bb6bd0d5d21cfea4026667b4c2cf (patch)
treeaf951a15a4cffe299b61d47a33e5186588bd4d3e
parente5e2e4d72fc6b794a2c0176c98c05f7239c3219b (diff)
parent234564f62861d7eee85a0b03fddb661acfd257ab (diff)
Merge remote-tracking branch 'origin/master'
-rw-r--r--src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java3
-rw-r--r--src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java6
-rw-r--r--src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java29
-rw-r--r--src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java3
-rw-r--r--src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java29
-rw-r--r--src/main/resources/mappers/AlertMessageMapper.xml11
-rw-r--r--src/main/resources/mappers/CommandMapper.xml2
-rw-r--r--src/main/resources/mappers/StaticRuleMapper.xml14
-rw-r--r--src/main/resources/mappers/TaskMapper.xml2
-rw-r--r--src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java3
-rw-r--r--src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java10
11 files changed, 102 insertions, 10 deletions
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 1218dbc..d6b060e 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
@@ -50,7 +50,7 @@ public class TaskCommandInfo {
@Schema(description = "局点", example = "123456")
@JsonProperty("distribute_point")
- private Integer distributePoint;
+ private String distributePoint;
@Schema(description = "事件类型(策略模板名称)", example = "DDOS")
@JsonProperty("event_type")
@@ -123,6 +123,7 @@ public class TaskCommandInfo {
this.taskType = original.taskType;
this.taskAct = original.taskAct;
this.distributePoint = original.distributePoint;
+ this.eventType = original.eventType;
this.frequency = original.frequency;
this.startTime = original.startTime;
this.endTime = original.endTime;
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 c93897d..cb6cbcf 100644
--- a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java
+++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java
@@ -32,7 +32,7 @@ public class AlertMessageService {
public void processAlertMessage(AlertMessage alertMessage) {
//根据告警信息——>生成指令
List<TaskCommandInfo> dynamicTaskCommandInfoList = generateDynamicCommand(alertMessage);
- //获取任务状态,设置指令的isValid字段,且是否生成指令入库(除了RUNING\PAUSED状态,其他都不入库)。
+ //获取任务状态,设置指令的isValid字段,且是否生成指令入库(除了RUNING\PAUSED状态,其他都不入command库)。
Integer taskStatus = dynamicTaskCommandInfoList.get(0).getTaskStatus();
//获取任务类型,设置指令的isJudged字段。
Integer taskType = dynamicTaskCommandInfoList.get(0).getTaskType();
@@ -89,7 +89,7 @@ public class AlertMessageService {
alertMessage.getProtectIsSrcOrDst(), templateProtectLevel);
//根据fiveTuple生成动态指令信息
- List<TaskCommandInfo> dynamicCommandInfoList = new ArrayList<TaskCommandInfo>();
+ List<TaskCommandInfo> dynamicCommandInfoList = new ArrayList<>();
if (fiveTupleWithMaskNew.size() == 2){
TaskCommandInfo dynamicCommandInfo_bi = new TaskCommandInfo();
dynamicCommandInfo_bi.copyTaskCommandInfo(dynamicCommandInfo);
@@ -203,7 +203,7 @@ public class AlertMessageService {
peer.setPort(null);
peer.setMaskPort(null);
}
- List<FiveTupleWithMask> newFiveTupleWithMask = new ArrayList<FiveTupleWithMask>();
+ List<FiveTupleWithMask> newFiveTupleWithMask = new ArrayList<>();
//生成指令
FiveTupleWithMask command1 = new FiveTupleWithMask();
command1.setSourceIP(peer.getIP());
diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java
index 9d6ff73..0a95937 100644
--- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java
+++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java
@@ -14,7 +14,9 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
@RestController
@@ -163,7 +165,7 @@ public class StaticRuleController implements StaticRuleControllerApi {
public ResponseResult updateStaticRuleAuditStatus(@PathVariable Integer id, @PathVariable Integer auditStatus) {
if (id <= 0 || auditStatus < 0 || auditStatus > 2) {
return new ResponseResult(400, "id or status is invalid")
- .setData("whiteobj_id", id)
+ .setData("staticRule_id", id)
.setData("success", false);
}
return ResponseResult.ok()
@@ -173,4 +175,29 @@ public class StaticRuleController implements StaticRuleControllerApi {
}
+ /**
+ * 批量修改审核状态
+ */
+ @PostMapping("/auditbatch")
+ public ResponseResult updateStaticRuleAuditStatusBatch(@RequestBody Map<Integer, Integer> idsWithAuditStatusMap) {
+ List<Integer> errorIds = new ArrayList<>();
+ for (Map.Entry<Integer, Integer> entry: idsWithAuditStatusMap.entrySet()) {
+ Integer id = entry.getKey();
+ Integer auditStatus = entry.getValue();
+ if (id <= 0 || auditStatus < 0 || auditStatus > 2) {
+ errorIds.add(id);
+ }
+ }
+ if (!errorIds.isEmpty()){
+ return new ResponseResult(400, "id or status is invalid")
+ .setData("staticRule_id", errorIds)
+ .setData("success", false);
+ }
+
+ return ResponseResult.ok()
+ .setData("success", staticRuleService.updateAuditStatusBatch(idsWithAuditStatusMap));
+ }
+
+
+
}
diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java
index d0d71c0..8cdc9e1 100644
--- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java
+++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java
@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
+import java.util.Map;
@Mapper
public interface StaticRuleMapper {
@@ -43,4 +44,6 @@ public interface StaticRuleMapper {
String static_rule_create_username, String ip);
List<StaticRuleObject> queryStaticRuleByIds(List<Integer> ids);
+
+ void updateAuditStatusByIdBatch(@Param("idWithAuditStatusBatch")Map<Integer, Integer> idWithAuditStatusBatch);
}
diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java
index 5cb2477..2d51188 100644
--- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java
+++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java
@@ -155,7 +155,7 @@ public class StaticRuleService {
}
List<StaticRuleObject> StaticRuleBatch = ListUtils.newArrayListWithExpectedSize(100);
- for (StaticRuleObject staticRule : staticRuleList) {
+ for (StaticRuleObject staticRule : list) {
staticRule.setStaticRuleCreateTime(LocalDateTime.now());
StaticRuleBatch.add(staticRule);
if (StaticRuleBatch.size() < 100) {
@@ -215,4 +215,31 @@ public class StaticRuleService {
public List<StaticRuleObject> queryStaticRuleByIds(List<Integer> ids) {
return staticRuleMapper.queryStaticRuleByIds(ids);
}
+
+ public Object updateAuditStatusBatch(Map<Integer, Integer> idsWithAuditStatusMap) {
+
+ Function<StaticRuleMapper, Function<Map<Integer, Integer>, Boolean>> updateStaticRuleAuditStatusFunction =
+ mapper -> map -> {
+ if (map == null || map.isEmpty()) {
+ return false;
+ }
+
+ Map<Integer, Integer> idWithAuditStatusBatch = new HashMap<>();
+ for (Map.Entry<Integer, Integer> item : map.entrySet()) {
+ idWithAuditStatusBatch.put(item.getKey(), item.getValue());
+ if (idWithAuditStatusBatch.size() < 100) {
+ continue;
+ }
+ //mapper指的就是外层函数输入的参数,也就是WhiteListMapper
+ mapper.updateAuditStatusByIdBatch(idWithAuditStatusBatch);
+ idWithAuditStatusBatch.clear();
+ }
+ if (!idWithAuditStatusBatch.isEmpty()) {
+ mapper.updateAuditStatusByIdBatch(idWithAuditStatusBatch);
+ }
+ return true;
+ };
+ //实现事务操作
+ return sqlSessionWrapper.startBatchSession(StaticRuleMapper.class, updateStaticRuleAuditStatusFunction, idsWithAuditStatusMap);
+ }
}
diff --git a/src/main/resources/mappers/AlertMessageMapper.xml b/src/main/resources/mappers/AlertMessageMapper.xml
index 39f68d3..e4376d2 100644
--- a/src/main/resources/mappers/AlertMessageMapper.xml
+++ b/src/main/resources/mappers/AlertMessageMapper.xml
@@ -20,6 +20,10 @@
<result column="task_end_time" property="endTime"/>
<result column="template_id" property="templateId"/>
+
+ <result column="dynamic_rule_range" property="distributePoint"/>
+ <result column="strategy_template_name" property="eventType"/>
+
<result column="dynamic_rule_protect_level" property="protectLevel"/>
<result column="task_status" property="taskStatus"/>
</resultMap>
@@ -149,12 +153,17 @@
t_task.task_end_time,
t_dr.template_id,
+ t_dr.dynamic_rule_range,
t_dr.dynamic_rule_protect_level,
- t_task.task_status
+ t_task.task_status,
+
+ t_tmplate.strategy_template_name
from t_task
left join realtime_protection.t_dynamic_rule t_dr on
(t_task.task_id = t_dr.dynamic_rule_used_task_id and t_dr.dynamic_rule_id = #{dynamicRuleId})
+ left join realtime_protection.t_strategy_template t_tmplate on
+ ( t_dr.template_id = t_tmplate.strategy_template_id )
where
t_task.task_id = #{taskId}
</select>
diff --git a/src/main/resources/mappers/CommandMapper.xml b/src/main/resources/mappers/CommandMapper.xml
index 092d9fe..d65fa20 100644
--- a/src/main/resources/mappers/CommandMapper.xml
+++ b/src/main/resources/mappers/CommandMapper.xml
@@ -9,7 +9,7 @@
MASK_SRC_IP, MASK_SRC_PORT, MASK_DST_IP, MASK_DST_PORT, MASK_PROTOCOL, VALID_TIME,
INVALID_TIME, IS_VALID, IS_JUDGED,
SEND_TIMES, SUCCESS_TIMES, CREATE_TIME, LAST_UPDATE, IS_DELETED)
- values (#{info.UUID}, #{info.taskId}, #{info.taskAct}, #{info.taskName}, #{info.eventType}, #{info.department}, #{info.distributePoint},
+ values (#{info.UUID}, #{info.taskId}, #{info.taskAct}, #{info.taskName}, #{info.eventType}, #{info.taskCreateDepart}, #{info.distributePoint},
#{info.frequency},
DEFAULT,
#{info.fiveTupleWithMask.sourceIP}, #{info.fiveTupleWithMask.sourcePort},
diff --git a/src/main/resources/mappers/StaticRuleMapper.xml b/src/main/resources/mappers/StaticRuleMapper.xml
index 4fe88cd..2025944 100644
--- a/src/main/resources/mappers/StaticRuleMapper.xml
+++ b/src/main/resources/mappers/StaticRuleMapper.xml
@@ -84,6 +84,20 @@
set static_rule_audit_status = #{auditStatus}
where static_rule_id = #{id}
</update>
+ <update id="updateAuditStatusByIdBatch">
+ update t_static_rule
+ set static_rule_audit_status = CASE static_rule_id
+ <foreach collection="idWithAuditStatusBatch" index="id" item="auditStatus" separator=" ">
+ WHEN #{id} THEN #{auditStatus}
+ </foreach>
+ ELSE static_rule_audit_status
+ END
+ WHERE static_rule_id IN
+ <foreach collection="idWithAuditStatusBatch" index="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+
+ </update>
<delete id="deleteStaticRules">
delete from t_static_rule
where static_rule_id in
diff --git a/src/main/resources/mappers/TaskMapper.xml b/src/main/resources/mappers/TaskMapper.xml
index 81740b4..ec70a18 100644
--- a/src/main/resources/mappers/TaskMapper.xml
+++ b/src/main/resources/mappers/TaskMapper.xml
@@ -164,7 +164,7 @@
<result column="static_rule_id" property="ruleId"/>
<result column="task_act" property="taskAct"/>
- <result column="task_create_depart" property="department"/>
+ <result column="task_create_depart" property="taskCreateDepart"/>
<result column="static_rule_range" property="distributePoint"/>
<result column="task_type" property="taskType"/>
<result column="static_rule_frequency" property="frequency"/>
diff --git a/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java b/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java
index 56ae63b..b5f4870 100644
--- a/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java
+++ b/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java
@@ -57,6 +57,7 @@ public class AlertMessageTest {
object.setDynamicRulePriority(1);
object.setDynamicRuleRange("北京");
object.setDynamicRuleProtectLevel(1);
+ object.setLogRuleId(1L);
object.setTemplateId(templates.get(0).getTemplateId());
object.setProtectObjectIds(List.of(new Integer[]{protectObject.get(0).getProtectObjectId()}));
Integer dynamicRuleId = dynamicRuleService.newDynamicRuleObject(object);
@@ -81,7 +82,7 @@ public class AlertMessageTest {
//启动任务
stateChangeService.changeState(2, taskId, false);
- for (int i = 0 ; i< 10; i++) {
+ for (int i = 0 ; i< 5; i++) {
AlertMessage alert = new AlertMessage();
FiveTupleWithMask fiveTupleWithMask = new FiveTupleWithMask();
fiveTupleWithMask.setSourceIP("111.1.1." + i);
diff --git a/src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java b/src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java
index c829b99..ec25643 100644
--- a/src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java
+++ b/src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java
@@ -8,7 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -101,7 +103,15 @@ public class StaticRuleServiceTest extends ProtectionApplicationTests {
List<StaticRuleObject> staticRuleObjects = staticRuleService.queryStaticRule(null, null, null, null, 1, 10);
System.out.println(staticRuleObjects);
}
+ @Test
+ void testUpdateStaticRuleAuditStatusBatch(){
+ Map<Integer, Integer> map = new HashMap<>();
+ map.put(1299, 0);
+ map.put(1300, 1);
+ map.put(1301, 1);
+ System.out.println(staticRuleService.updateAuditStatusBatch(map));
+ }
}