From 125ed9dd187ddf4359dedcfed6151a23363fe4db Mon Sep 17 00:00:00 2001
From: Hao Miao <47212914+PushM@users.noreply.github.com>
Date: Sun, 28 Apr 2024 10:24:02 +0800
Subject: [PATCH 1/5] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E7=99=BD?=
=?UTF-8?q?=E5=90=8D=E5=8D=95=E4=BF=AE=E6=94=B9=EF=BC=8Cauditstatus?=
=?UTF-8?q?=E4=B8=BAstring=E7=9A=84bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../configuration/entity/whitelist/WhiteListObject.java | 2 +-
.../realtime/protection/server/whitelist/WhiteListService.java | 2 +-
.../protection/server/whitelist/WhiteListServiceTest.java | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/realtime/protection/configuration/entity/whitelist/WhiteListObject.java b/src/main/java/com/realtime/protection/configuration/entity/whitelist/WhiteListObject.java
index 6d00af3..05dfe93 100644
--- a/src/main/java/com/realtime/protection/configuration/entity/whitelist/WhiteListObject.java
+++ b/src/main/java/com/realtime/protection/configuration/entity/whitelist/WhiteListObject.java
@@ -60,5 +60,5 @@ public class WhiteListObject {
@JsonProperty("audit_status")
@ExcelIgnore
@Schema(description = "白名单对象审核状态(0为未审核,1为已退回,2为审核通过)", example = "2")
- private String whiteListAuditStatus;
+ private Integer whiteListAuditStatus;
}
diff --git a/src/main/java/com/realtime/protection/server/whitelist/WhiteListService.java b/src/main/java/com/realtime/protection/server/whitelist/WhiteListService.java
index 2cc4005..4057e3c 100644
--- a/src/main/java/com/realtime/protection/server/whitelist/WhiteListService.java
+++ b/src/main/java/com/realtime/protection/server/whitelist/WhiteListService.java
@@ -107,7 +107,7 @@ public class WhiteListService {
throw new IllegalStateException("无法修改白名单信息,因为其并未处于" + AuditStatusEnum.AUDITED + "状态");
}
- object.setWhiteListAuditStatus(AuditStatusEnum.PENDING.toString());
+ object.setWhiteListAuditStatus(AuditStatusEnum.PENDING.getNum());
return whiteListMapper.updateWhiteListObject(id, object);
}
diff --git a/src/test/java/com/realtime/protection/server/whitelist/WhiteListServiceTest.java b/src/test/java/com/realtime/protection/server/whitelist/WhiteListServiceTest.java
index 0da4d07..4c56573 100644
--- a/src/test/java/com/realtime/protection/server/whitelist/WhiteListServiceTest.java
+++ b/src/test/java/com/realtime/protection/server/whitelist/WhiteListServiceTest.java
@@ -67,7 +67,7 @@ class WhiteListServiceTest extends ProtectionApplicationTests {
//object.setWhiteListId(7);
object.setWhiteListName("test_update");
- whiteListService.updateWhiteListObject(7, object);
+ whiteListService.updateWhiteListObject(7189, object);
}
@Test
From aef78a55b55f51f409f8b5f8b73397d22412f10f Mon Sep 17 00:00:00 2001
From: Hao Miao <47212914+PushM@users.noreply.github.com>
Date: Sun, 28 Apr 2024 10:54:40 +0800
Subject: [PATCH 2/5] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8Dquery=E5=8A=A8?=
=?UTF-8?q?=E6=80=81=E8=A7=84=E5=88=99=E6=B2=A1=E6=9C=89=E8=BF=94=E5=9B=9E?=
=?UTF-8?q?=E9=98=B2=E6=8A=A4=E7=AD=89=E7=BA=A7=E5=B1=9E=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/resources/mappers/DynamicRuleMapper.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/resources/mappers/DynamicRuleMapper.xml b/src/main/resources/mappers/DynamicRuleMapper.xml
index 5f387a0..a85038b 100644
--- a/src/main/resources/mappers/DynamicRuleMapper.xml
+++ b/src/main/resources/mappers/DynamicRuleMapper.xml
@@ -146,7 +146,7 @@
-
+
From 7429ef37a0afab5f0eb316d9597604284d4c48dc Mon Sep 17 00:00:00 2001
From: Hao Miao <47212914+PushM@users.noreply.github.com>
Date: Sun, 28 Apr 2024 16:34:09 +0800
Subject: [PATCH 3/5] =?UTF-8?q?1=E3=80=81=E6=9B=B4=E6=96=B0fake=5Fdynamic?=
=?UTF-8?q?=5Ftest=E7=9A=84fakecc=5Ftest=5Fsend2.py=E6=96=87=E4=BB=B6=202?=
=?UTF-8?q?=E3=80=81=E4=BF=AE=E6=94=B9fakecc=5Ftest=5Fsend2.py=E7=9B=B8?=
=?UTF-8?q?=E5=BA=94=E8=BF=94=E5=9B=9E=E5=80=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
fake_dynamic_test/fakecc_test_send2.py | 25 ++++++++++++++++++++++---
fake_dynamic_test/main.py | 2 +-
2 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/fake_dynamic_test/fakecc_test_send2.py b/fake_dynamic_test/fakecc_test_send2.py
index 14e3dc1..392640b 100644
--- a/fake_dynamic_test/fakecc_test_send2.py
+++ b/fake_dynamic_test/fakecc_test_send2.py
@@ -5,6 +5,17 @@ import json
app = Flask(__name__)
+import socket
+import struct
+
+
+def convert_ipv4_to_int(ip_str):
+ binary_ip = socket.inet_aton(ip_str)
+ # 使用 struct.unpack 解包二进制数据到一个大端整数
+ ip_int = struct.unpack('!I', binary_ip)[0]
+ return ip_int
+
+
def convert_ipv4_address(ip_int):
return socket.inet_ntoa(struct.pack('!I', ip_int))
@@ -31,6 +42,7 @@ def format_data_to_json(test_data):
src_ip_v4, dst_ip_v4, src_port_v4, dst_port_v4, protocol_v4 = parse_and_convert_ip(data_parts[1])
+
formatted_data = {
"task_id": 30650,
"rule_id": 39,
@@ -96,19 +108,26 @@ def kafka_send():
if request.method == 'POST' and request.is_json:
data = request.get_json()
- base_data = "1702017420-1-175833107,1921297587-310737541-53420-6379-6-127-0,140717936336976-140717936336992-0-0-0-131-4481,0,000,440000,1,7,107,1,111,Amazon Data Services UK,0,0,440100,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,9,10060101189,tcp.banner=$5115"
+ base_data = "1702017420-1-175833107,2682412653-760391609-53420-6379-6-127-0,140717936336976-140717936336992-0-0-0-131-4481,0,000,440000,1,7,107,1,111,Amazon Data Services UK,0,0,440100,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,9,10060101189,tcp.banner=$5115"
+ base_data2 = "1702017420-1-175833107,760391609-2682412653-53420-6379-6-127-0,140717936336976-140717936336992-0-0-0-131-4481,0,000,440000,1,7,107,1,111,Amazon Data Services UK,0,0,440100,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,9,10060101189,tcp.banner=$5115"
+
for item in data:
task_id = item.get('task_id', '')
rule_id = item.get('rule_id', '')
modified_data = f"{base_data}, {task_id}, {rule_id},{0}"
+ modified_data2 = f"{base_data2}, {task_id}, {rule_id},{0}"
HOST = '127.0.0.1'
PORT = 65432
+ print(modified_data)
send_test_data(HOST, PORT, modified_data)
+ send_test_data(HOST, PORT, modified_data2)
- return jsonify({'message': 'Data processed successfully'}), 200
+ return jsonify({"success": True, "code": 200}), 200
return jsonify({'error': 'Invalid request'}), 400
if __name__ == "__main__":
- app.run(host='0.0.0.0', port=8081, debug=True)
\ No newline at end of file
+ print("convert_ipv4_to_int:", convert_ipv4_to_int("159.226.94.109"))
+ print("convert_ipv4_to_int:", convert_ipv4_to_int("45.82.167.185"))
+ app.run(host='0.0.0.0', port=8088, debug=True)
\ No newline at end of file
diff --git a/fake_dynamic_test/main.py b/fake_dynamic_test/main.py
index 1d07ecd..4339026 100644
--- a/fake_dynamic_test/main.py
+++ b/fake_dynamic_test/main.py
@@ -100,5 +100,5 @@ def start_server(host, port, topic):
if __name__ == "__main__":
HOST = '127.0.0.1'
PORT = 65432
- TOPIC = 'topic-test'
+ TOPIC = 'topic-alert'
start_server(HOST, PORT, TOPIC)
From 3e7dd3a2bed3a13d2a1b7204d0e1873351f936b5 Mon Sep 17 00:00:00 2001
From: PushM <584406942@qq.com>
Date: Mon, 29 Apr 2024 01:27:36 +0800
Subject: [PATCH 4/5] =?UTF-8?q?1=E3=80=81=E9=9D=99=E6=80=81=E8=A7=84?=
=?UTF-8?q?=E5=88=99=E6=96=B0=E5=A2=9E=E5=92=8C=E4=BF=AE=E6=94=B9=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E7=99=BD=E5=90=8D=E5=8D=95=E8=A7=84=E5=88=99=E5=86=B2?=
=?UTF-8?q?=E7=AA=81=E6=A3=80=E6=9F=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../rule/staticrule/StaticRuleService.java | 28 +++++++++++++++----
.../server/whitelist/WhiteListService.java | 6 ++++
.../staticrule/StaticRuleServiceTest.java | 5 ++--
3 files changed, 31 insertions(+), 8 deletions(-)
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 8e3f832..e5dab88 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
@@ -2,10 +2,12 @@ package com.realtime.protection.server.rule.staticrule;
import com.alibaba.excel.util.ListUtils;
import com.realtime.protection.configuration.entity.rule.staticrule.StaticRuleObject;
+import com.realtime.protection.configuration.entity.whitelist.WhiteListObject;
import com.realtime.protection.configuration.utils.SqlSessionWrapper;
import com.realtime.protection.configuration.utils.enums.RuleEnum;
import com.realtime.protection.configuration.utils.enums.audit.AuditStatusEnum;
import com.realtime.protection.configuration.utils.enums.audit.AuditStatusValidator;
+import com.realtime.protection.server.whitelist.WhiteListService;
import lombok.SneakyThrows;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -14,10 +16,7 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.function.Function;
@Service
@@ -25,11 +24,13 @@ public class StaticRuleService {
private final StaticRuleMapper staticRuleMapper;
private final SqlSessionWrapper sqlSessionWrapper;
+ private final WhiteListService whiteListService;
- public StaticRuleService(StaticRuleMapper staticRuleMapper, SqlSessionWrapper sqlSessionWrapper) {
+ public StaticRuleService(StaticRuleMapper staticRuleMapper, SqlSessionWrapper sqlSessionWrapper, WhiteListService whiteListService) {
this.staticRuleMapper = staticRuleMapper;
this.sqlSessionWrapper = sqlSessionWrapper;
+ this.whiteListService = whiteListService;
}
private static int ipToInt(String ip) {
@@ -69,6 +70,14 @@ public class StaticRuleService {
if (!RuleEnum.checkValidate(object)) {
throw new IllegalArgumentException("静态规则不符合指定的配置方法,请参考规则模板以配置静态规则");
}
+ List staticRuleObjects = new ArrayList<>();
+ staticRuleObjects.add(object);
+ List whiteListsHit = whiteListService.whiteListStaticRulesObjectCheck(staticRuleObjects);
+ if (!whiteListsHit.isEmpty()) {
+ StringBuilder result = new StringBuilder();
+ whiteListsHit.forEach(item -> result.append(item.getWhiteListName()).append(" "));
+ throw new IllegalArgumentException("静态规则与白名单规则冲突,冲突白名单名称:"+result.toString().trim());
+ }
staticRuleMapper.newStaticRuleObject(object);
return object.getStaticRuleId();
@@ -122,6 +131,15 @@ public class StaticRuleService {
throw new IllegalArgumentException("静态规则不符合指定的配置方法,请参考规则模板以配置静态规则");
}
+ List staticRuleObjects = new ArrayList<>();
+ staticRuleObjects.add(object);
+ List whiteListsHit = whiteListService.whiteListStaticRulesObjectCheck(staticRuleObjects);
+ if (!whiteListsHit.isEmpty()) {
+ StringBuilder result = new StringBuilder();
+ whiteListsHit.forEach(item -> result.append(item.getWhiteListName()).append(" "));
+ throw new IllegalArgumentException("静态规则与白名单规则冲突,冲突白名单名称:"+result.toString().trim());
+ }
+
//判断当前静态规则是否能够修改---是否存在任务选择的静态规则??
//按id查询该静态规则的used_task_id字段,如果不为空,则不能修改
object.setStaticRuleModifyTime(LocalDateTime.now());
diff --git a/src/main/java/com/realtime/protection/server/whitelist/WhiteListService.java b/src/main/java/com/realtime/protection/server/whitelist/WhiteListService.java
index 4057e3c..ded354f 100644
--- a/src/main/java/com/realtime/protection/server/whitelist/WhiteListService.java
+++ b/src/main/java/com/realtime/protection/server/whitelist/WhiteListService.java
@@ -157,6 +157,12 @@ public class WhiteListService {
List staticRuleObjects = staticRuleMapper.queryStaticRuleByIds(staticRuleId);
return whiteListMapper.whiteListCStaticRulesCheck(staticRuleObjects);
+ }
+ public List whiteListStaticRulesObjectCheck(List staticRuleObjects) {
+ //参数应该是指令,不管动态静态
+ // 命中的whitelist列表:每一列包含ip port url
+ return whiteListMapper.whiteListCStaticRulesCheck(staticRuleObjects);
+
}
@Transactional
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 23466c6..cb5c99b 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
@@ -32,12 +32,11 @@ public class StaticRuleServiceTest extends ProtectionApplicationTests {
staticRuleTest.setStaticRuleCreateUserId(2);
staticRuleTest.setAuditStatus(0);
- staticRuleTest.setStaticRuleSip("1.1.2.0");
- staticRuleTest.setStaticRuleMsip("255.255.255.0");
+ staticRuleTest.setStaticRuleSip("2.2.2.2");
// staticRuleTest.setStaticRuleDip("1.1.1.2");
// staticRuleTest.setStaticRuleMdip("255.255.255.0");
- staticRuleTest.setStaticRuleSport(80);
+ staticRuleTest.setStaticRuleSport(11);
staticRuleTest.setStaticRulePriority(1);
staticRuleTest.setStaticRuleFrequency(1);
From 03042f0affca49b45b9eaf79b36795e95acee9ab Mon Sep 17 00:00:00 2001
From: PushM <584406942@qq.com>
Date: Mon, 29 Apr 2024 11:44:15 +0800
Subject: [PATCH 5/5] =?UTF-8?q?1=E3=80=81=E9=9D=99=E6=80=81=E8=A7=84?=
=?UTF-8?q?=E5=88=99=E3=80=81=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=99=E3=80=81?=
=?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E6=96=B0?=
=?UTF-8?q?=E5=A2=9Eid=E3=80=81auditstatus=E5=90=88=E6=B3=95=E6=80=A7?=
=?UTF-8?q?=E6=A0=A1=E9=AA=8C=202=E3=80=81Template=E6=96=B0=E5=A2=9Eaudits?=
=?UTF-8?q?tatus=E5=B1=9E=E6=80=A7=EF=BC=8C=E4=BF=AE=E6=94=B9query?=
=?UTF-8?q?=E8=BF=94=E5=9B=9Eauditstatus=EF=BC=8C=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../entity/defense/template/Template.java | 5 ++
.../defense/template/TemplateController.java | 42 ++++++++++++
.../defense/template/TemplateMapper.java | 4 ++
.../defense/template/TemplateService.java | 67 ++++++++++++++++++-
.../dynamicrule/DynamicRuleController.java | 2 +-
.../rule/dynamicrule/DynamicRuleMapper.java | 2 +
.../rule/dynamicrule/DynamicRuleService.java | 22 ++++++
.../rule/staticrule/StaticRuleMapper.java | 2 +
.../rule/staticrule/StaticRuleService.java | 19 ++++++
.../protection/server/task/TaskMapper.java | 2 +
.../protection/server/task/TaskService.java | 25 +++++--
.../resources/mappers/DynamicRuleMapper.xml | 8 +++
.../resources/mappers/StaticRuleMapper.xml | 9 +++
src/main/resources/mappers/TaskMapper.xml | 8 +++
src/main/resources/mappers/TemplateMapper.xml | 13 ++++
.../defense/template/TemplateServiceTest.java | 17 ++---
.../staticrule/StaticRuleServiceTest.java | 6 +-
17 files changed, 236 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java b/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java
index 94c43e1..8efd390 100644
--- a/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java
+++ b/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java
@@ -73,6 +73,11 @@ public class Template {
@Schema(description = "防御策略模板创建人处室", example = "xxx", accessMode = Schema.AccessMode.READ_ONLY)
private String createDepart;
+ @JsonProperty("audit_status")
+ @Schema(description = "防御策略模板审核状态(0为未审核,1为已退回,2为审核通过)", example = "1", accessMode = Schema.AccessMode.READ_ONLY)
+ private String auditStatus;
+
+
/**
* 设置是否含有日常/应急/紧急防护等级态字段的字段
*/
diff --git a/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java b/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java
index 399b61a..ef45b31 100644
--- a/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java
+++ b/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java
@@ -129,4 +129,46 @@ public class TemplateController implements TemplateControllerApi {
AuditStatusEnum.getNumByState(AuditStatusEnum.PENDING.getState())
));
}
+
+
+ /**
+ * 审批
+ */
+ @GetMapping("/{id}/audit/{auditStatus}")
+ public ResponseResult updateTemplateAuditStatus(@PathVariable Integer id, @PathVariable Integer auditStatus) {
+ if (id <= 0 || auditStatus < 0 || auditStatus > 2) {
+ return new ResponseResult(400, "id or status is invalid")
+ .setData("template_id", id)
+ .setData("success", false);
+ }
+ return ResponseResult.ok()
+ .addDataMap(templateService.updateAuditStatus(id, auditStatus))
+ .setData("template_id", id);
+ }
+
+ /**
+ * 批量审批
+ */
+ /*
+ @PostMapping("/auditbatch")
+ public ResponseResult updateDynamicRuleAuditStatusBatch(@RequestBody Map idsWithAuditStatusMap) {
+ List errorIds = new ArrayList<>();
+ for (Map.Entry 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",dynamicRuleService.updateAuditStatusBatch(idsWithAuditStatusMap));
+ }
+*/
}
diff --git a/src/main/java/com/realtime/protection/server/defense/template/TemplateMapper.java b/src/main/java/com/realtime/protection/server/defense/template/TemplateMapper.java
index 7c036ad..0615c4f 100644
--- a/src/main/java/com/realtime/protection/server/defense/template/TemplateMapper.java
+++ b/src/main/java/com/realtime/protection/server/defense/template/TemplateMapper.java
@@ -42,4 +42,8 @@ public interface TemplateMapper {
Integer queryUsedTemplateTotalNum();
Integer queryAuditTemplateTotalNum(Integer auditState);
+
+ Integer queryAuditStatusById(Integer id);
+
+ Boolean updateAuditStatusById(Integer id, Integer auditStatus);
}
diff --git a/src/main/java/com/realtime/protection/server/defense/template/TemplateService.java b/src/main/java/com/realtime/protection/server/defense/template/TemplateService.java
index ffdad26..be94578 100644
--- a/src/main/java/com/realtime/protection/server/defense/template/TemplateService.java
+++ b/src/main/java/com/realtime/protection/server/defense/template/TemplateService.java
@@ -1,11 +1,14 @@
package com.realtime.protection.server.defense.template;
import com.realtime.protection.configuration.entity.defense.template.Template;
-import lombok.SneakyThrows;
+import com.realtime.protection.configuration.utils.enums.audit.AuditStatusValidator;
+
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@Service
public class TemplateService {
@@ -87,4 +90,66 @@ public class TemplateService {
public Integer queryAuditTemplateTotalNum(Integer auditState) {
return templateMapper.queryAuditTemplateTotalNum(auditState);
}
+
+ public Map updateAuditStatus(Integer id, Integer auditStatus) {
+ Integer originalAuditStatus = templateMapper.queryAuditStatusById(id);
+ if (originalAuditStatus == null) {
+ throw new IllegalArgumentException("cannot find audit status of static rule " + id + ", maybe static rule doesn't exist?");
+ }
+ if (!AuditStatusValidator.setOriginal(originalAuditStatus).checkValidate(auditStatus)) {
+ throw new IllegalArgumentException("invalid audit status");
+ }
+ Boolean success = templateMapper.updateAuditStatusById(id, auditStatus);
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("success", success);
+ resultMap.put("audit_status", auditStatus);
+ return resultMap;
+ }
+/*
+
+ public Map updateAuditStatus(Integer id, Integer auditStatus) {
+ Integer originalAuditStatus = templateMapper.queryAuditStatusById(id);
+ if (originalAuditStatus == null) {
+ throw new IllegalArgumentException("cannot find audit status of static rule " + id + ", maybe static rule doesn't exist?");
+ }
+ if (!AuditStatusValidator.setOriginal(originalAuditStatus).checkValidate(auditStatus)) {
+ throw new IllegalArgumentException("invalid audit status");
+ }
+ Boolean success = templateMapper.updateAuditStatusById(id, auditStatus);
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("success", success);
+ resultMap.put("audit_status", auditStatus);
+ return resultMap;
+ }
+
+ public Object updateAuditStatusBatch(Map idsWithAuditStatusMap) {
+ Function, Boolean>> updateDynamicRuleAuditStatusFunction =
+ mapper -> map -> {
+ if (map == null || map.isEmpty()) {
+ return false;
+ }
+
+ Map idWithAuditStatusBatch = new HashMap<>();
+ for (Map.Entry 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(DynamicRuleMapper.class, updateDynamicRuleAuditStatusFunction, idsWithAuditStatusMap);
+
+ }
+ */
+
}
diff --git a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleController.java b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleController.java
index 83ef29a..871f08b 100644
--- a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleController.java
+++ b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleController.java
@@ -130,7 +130,7 @@ public class DynamicRuleController implements DynamicRuleControllerApi {
public ResponseResult updateDynamicRuleAuditStatus(@PathVariable Integer id, @PathVariable Integer auditStatus) {
if (id <= 0 || auditStatus < 0 || auditStatus > 2) {
return new ResponseResult(400, "id or status is invalid")
- .setData("staticRule_id", id)
+ .setData("dynamicRule_id", id)
.setData("success", false);
}
return ResponseResult.ok()
diff --git a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleMapper.java b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleMapper.java
index 7d589fb..8656c39 100644
--- a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleMapper.java
+++ b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleMapper.java
@@ -58,4 +58,6 @@ public interface DynamicRuleMapper {
Boolean updateAuditStatusById(Integer dynamicRuleId, Integer auditStatus);
void updateAuditStatusByIdBatch(@Param("idWithAuditStatusBatch") Map idWithAuditStatusBatch);
+
+ List queryAuditStatusByIds(@Param("idWithAuditStatusBatch") Map idsWithAuditStatusMap);
}
diff --git a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleService.java b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleService.java
index b864643..d56279f 100644
--- a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleService.java
+++ b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleService.java
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -211,6 +212,27 @@ public class DynamicRuleService {
}
public Object updateAuditStatusBatch(Map idsWithAuditStatusMap) {
+ //校验id和status是否合法
+ List originalAuditStatusList = dynamicRuleMapper.queryAuditStatusByIds(idsWithAuditStatusMap);
+ int index = 0;
+ List errorIds = new ArrayList<>();
+ for(Map.Entry entry: idsWithAuditStatusMap.entrySet()) {
+ Integer id = entry.getKey();
+ Integer auditStatus = entry.getValue();
+ Integer originalAuditStatus = originalAuditStatusList.get(index);
+ index++;
+ if (originalAuditStatus == null) {
+ errorIds.add(id);
+ }
+ if (!AuditStatusValidator.setOriginal(originalAuditStatus).checkValidate(auditStatus)) {
+ errorIds.add(id);
+ }
+ }
+ if (!errorIds.isEmpty()){
+ return new IllegalArgumentException("动态规则id不存在或无法修改为对应审核状态, errorIds: " + errorIds);
+ }
+
+
Function, Boolean>> updateDynamicRuleAuditStatusFunction =
mapper -> map -> {
if (map == null || map.isEmpty()) {
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 6b6207d..309d091 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
@@ -50,4 +50,6 @@ public interface StaticRuleMapper {
Integer queryUsedStaticRuleTotalNum();
Integer queryAuditStaticRuleTotalNum(@Param("auditStatus")Integer auditStatus);
+
+ List queryAuditStatusByIds(@Param("idWithAuditStatusBatch") Map idsWithAuditStatusMap);
}
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 e5dab88..7068ff3 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
@@ -235,6 +235,25 @@ public class StaticRuleService {
}
public Object updateAuditStatusBatch(Map idsWithAuditStatusMap) {
+ //校验id和status是否合法
+ List originalAuditStatusList = staticRuleMapper.queryAuditStatusByIds(idsWithAuditStatusMap);
+ int index = 0;
+ List errorIds = new ArrayList<>();
+ for(Map.Entry entry: idsWithAuditStatusMap.entrySet()) {
+ Integer id = entry.getKey();
+ Integer auditStatus = entry.getValue();
+ Integer originalAuditStatus = originalAuditStatusList.get(index);
+ index++;
+ if (originalAuditStatus == null) {
+ errorIds.add(id);
+ }
+ if (!AuditStatusValidator.setOriginal(originalAuditStatus).checkValidate(auditStatus)) {
+ errorIds.add(id);
+ }
+ }
+ if (!errorIds.isEmpty()){
+ return new IllegalArgumentException("静态规则id不存在或无法修改为对应审核状态, errorIds: " + errorIds);
+ }
Function, Boolean>> updateStaticRuleAuditStatusFunction =
mapper -> map -> {
diff --git a/src/main/java/com/realtime/protection/server/task/TaskMapper.java b/src/main/java/com/realtime/protection/server/task/TaskMapper.java
index 30e79bb..d4bdb5b 100644
--- a/src/main/java/com/realtime/protection/server/task/TaskMapper.java
+++ b/src/main/java/com/realtime/protection/server/task/TaskMapper.java
@@ -66,4 +66,6 @@ public interface TaskMapper {
void updateAuditStatusByIdBatch(@Param("idWithAuditStatusBatch") Map idWithAuditStatusBatch);
Integer queryAuditTaskTotalNum(Integer auditState);
+
+ List queryAuditStatusByIds(@Param("idWithAuditStatusBatch") Map idsWithAuditStatusMap);
}
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 0f39b7f..cffd3a9 100644
--- a/src/main/java/com/realtime/protection/server/task/TaskService.java
+++ b/src/main/java/com/realtime/protection/server/task/TaskService.java
@@ -17,10 +17,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -324,6 +321,26 @@ public class TaskService {
}
public Object updateAuditStatusBatch(Map idsWithAuditStatusMap) {
+ //校验id和status是否合法
+ List originalAuditStatusList = taskMapper.queryAuditStatusByIds(idsWithAuditStatusMap);
+ int index = 0;
+ List errorIds = new ArrayList<>();
+ for(Map.Entry entry: idsWithAuditStatusMap.entrySet()) {
+ Integer id = entry.getKey();
+ Integer auditStatus = entry.getValue();
+ Integer originalAuditStatus = originalAuditStatusList.get(index);
+ index++;
+ if (originalAuditStatus == null) {
+ errorIds.add(id);
+ }
+ if (!AuditStatusValidator.setOriginal(originalAuditStatus).checkValidate(auditStatus)) {
+ errorIds.add(id);
+ }
+ }
+ if (!errorIds.isEmpty()){
+ return new IllegalArgumentException("动态规则id不存在或无法修改为对应审核状态, errorIds: " + errorIds);
+ }
+
Function, Boolean>> updateTaskAuditStatusFunction =
mapper -> map -> {
if (map == null || map.isEmpty()) {
diff --git a/src/main/resources/mappers/DynamicRuleMapper.xml b/src/main/resources/mappers/DynamicRuleMapper.xml
index a85038b..4c926ee 100644
--- a/src/main/resources/mappers/DynamicRuleMapper.xml
+++ b/src/main/resources/mappers/DynamicRuleMapper.xml
@@ -283,6 +283,14 @@
from t_dynamic_rule
where dynamic_rule_id = #{dynamicRuleId}
+
\ No newline at end of file
diff --git a/src/main/resources/mappers/StaticRuleMapper.xml b/src/main/resources/mappers/StaticRuleMapper.xml
index 5270807..e0b1ce5 100644
--- a/src/main/resources/mappers/StaticRuleMapper.xml
+++ b/src/main/resources/mappers/StaticRuleMapper.xml
@@ -217,4 +217,13 @@
WHERE static_rule_audit_status = #{auditStatus}
+
+
\ No newline at end of file
diff --git a/src/main/resources/mappers/TaskMapper.xml b/src/main/resources/mappers/TaskMapper.xml
index 2d4e400..32322e5 100644
--- a/src/main/resources/mappers/TaskMapper.xml
+++ b/src/main/resources/mappers/TaskMapper.xml
@@ -333,4 +333,12 @@
SELECT COUNT(*) FROM t_task
WHERE task_audit_status = #{auditStatus}
+
\ No newline at end of file
diff --git a/src/main/resources/mappers/TemplateMapper.xml b/src/main/resources/mappers/TemplateMapper.xml
index 68c83b9..4a73691 100644
--- a/src/main/resources/mappers/TemplateMapper.xml
+++ b/src/main/resources/mappers/TemplateMapper.xml
@@ -36,6 +36,7 @@
+
@@ -157,6 +158,12 @@
WHERE audit_state = #{auditState}
+
+
UPDATE t_strategy_template
@@ -168,4 +175,10 @@
AND strategy_template_id = #{template.templateId}
+
+
+ UPDATE t_strategy_template
+ SET audit_state = #{auditState}
+ WHERE strategy_template_id = #{id}
+
\ 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 cce2ea4..2e91ee3 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
@@ -68,7 +68,7 @@ class TemplateServiceTest extends ProtectionApplicationTests {
System.out.println(e.getMessage());
}
- for (int i = 0; i < 10; i++) {
+ for (int i = 0; i < 2; i++) {
assertThrows(DuplicateKeyException.class, () -> {
Integer templateId = templateService.newTemplate(template);
assertTrue(templateId > 0);
@@ -84,13 +84,14 @@ class TemplateServiceTest extends ProtectionApplicationTests {
@Test
void testQueryTemplate() {
List templates = templateService.queryTemplates(
- "DDOS", null, null,1, 5);
- assertEquals(5, templates.size());
- for (Template template : templates) {
- assertTrue(template.getTemplateId() > 0);
- assertNotNull(template.getUsedTimes());
- assertNotNull(template.getRunningTasks());
- }
+ null, null, null,1, 5);
+ templates.forEach(item -> System.out.println(item)) ;
+//// assertEquals(5, templates.size());
+// for (Template template : templates) {i
+// assertTrue(template.getTemplateId() > 0);
+// assertNotNull(template.getUsedTimes());
+// assertNotNull(template.getRunningTasks());
+// }
}
@Test
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 cb5c99b..28c2fef 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
@@ -105,9 +105,9 @@ public class StaticRuleServiceTest extends ProtectionApplicationTests {
@Test
void testUpdateStaticRuleAuditStatusBatch(){
Map map = new HashMap<>();
- map.put(1299, 0);
- map.put(1300, 1);
- map.put(1301, 1);
+ map.put(1325, 0);
+ map.put(1326, 1);
+ map.put(1328, 1);
System.out.println(staticRuleService.updateAuditStatusBatch(map));