1、动态规则、静态规则、白名单修改完善接口设计,添加API文档
2、动态规则数据库删除event_type、source_system字段,新增template_id,HTTP接口接收template_id。 3、静态规则添加修改审核状态功能、按id删除功能
This commit is contained in:
@@ -2,6 +2,7 @@ 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.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -12,50 +13,76 @@ import java.util.List;
|
||||
public class DynamicRuleObject {
|
||||
|
||||
@JsonProperty("dynamic_rule_id")
|
||||
@Schema(description = "动态规则ID", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private Integer dynamicRuleId;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("dynamic_rule_name")
|
||||
@Schema(description = "动态规则名称", example = "动态规则测试", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String dynamicRuleName;
|
||||
|
||||
@JsonProperty("dynamic_rule_create_time")
|
||||
@Schema(hidden = true)
|
||||
private LocalDateTime dynamicRuleCreateTime;
|
||||
@JsonProperty("dynamic_rule_modify_time")
|
||||
@Schema(hidden = true)
|
||||
private LocalDateTime dynamicRuleModifyTime;
|
||||
|
||||
@JsonProperty("dynamic_rule_create_username")
|
||||
@Schema(description = "动态规则创建用户名称", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private String dynamicRuleCreateUsername;
|
||||
|
||||
// @JsonProperty("dynamic_rule_audit_status")
|
||||
// private Integer dynamicRuleAuditStatus;
|
||||
@JsonProperty("dynamic_rule_create_depart")
|
||||
@Schema(description = "动态规则创建用户所属部门", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private String dynamicRuleCreateDepart;
|
||||
|
||||
//动态规则选择的防护对象ids?
|
||||
@NotNull
|
||||
@JsonProperty("protect_object_ids")
|
||||
@Schema(description = "请求时发送防护对象ID", accessMode = Schema.AccessMode.WRITE_ONLY, requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<Integer> protectObjectIds;
|
||||
@JsonProperty("protect_objects")
|
||||
@Schema(description = "响应时回复防护对象完整信息", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private List<ProtectObject> protectObjects;
|
||||
|
||||
|
||||
//还没有建立外键
|
||||
@JsonProperty("dynamic_rule_create_user_id")
|
||||
@Schema(hidden = true)
|
||||
private Integer dynamicRuleCreateUserId;
|
||||
@JsonProperty("dynamic_rule_used_task_id")
|
||||
@Schema(description = "使用该动态规则的任务ID", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private Integer dynamicRuleUsedTaskId;
|
||||
|
||||
//前端不发送事件类型和来源系统了,而是根据事件类型和来源系统确定策略模板id,发过来template_id
|
||||
@JsonProperty("dynamic_rule_source_system")
|
||||
private Integer dynamicRuleSourceSystem;
|
||||
@Schema(description = "动态规则数据来源系统", example = "bw系统", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String dynamicRuleSourceSystem;
|
||||
@JsonProperty("dynamic_rule_event_type")
|
||||
private Integer dynamicRuleEventType;
|
||||
@Schema(description = "动态规则事件类型", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String dynamicRuleEventType;
|
||||
@NotNull
|
||||
@JsonProperty("template_id")
|
||||
@Schema(description = "策略模板id", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Integer templateId;
|
||||
@NotNull
|
||||
@JsonProperty("dynamic_rule_protect_level")
|
||||
@Schema(description = "防护等级", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Integer dynamicRuleProtectLevel;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("dynamic_rule_priority")
|
||||
@Schema(description = "优先级", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Integer dynamicRulePriority;
|
||||
@NotNull
|
||||
@JsonProperty("dynamic_rule_range")
|
||||
@Schema(description = "范围", example = "北京", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String dynamicRuleRange;
|
||||
@NotNull
|
||||
@JsonProperty("dynamic_rule_frequency")
|
||||
@Schema(description = "频率", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Integer dynamicRuleFrequency;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,11 @@ package com.realtime.protection.configuration.entity.rule.staticrule;
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@@ -18,81 +22,117 @@ import java.time.LocalDateTime;
|
||||
public class StaticRuleObject {
|
||||
@JsonProperty("static_rule_id")
|
||||
@ExcelIgnore
|
||||
@Schema(description = "静态规则ID", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private Integer staticRuleId;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("static_rule_name")
|
||||
@ExcelProperty("名称")
|
||||
@Schema(description = "静态规则名称", example = "静态规则测试", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String staticRuleName;
|
||||
|
||||
@JsonProperty("static_rule_create_time")
|
||||
@ExcelIgnore
|
||||
@Schema(hidden = true)
|
||||
private LocalDateTime staticRuleCreateTime;
|
||||
@JsonProperty("static_rule_modify_time")
|
||||
@ExcelIgnore
|
||||
@Schema(hidden = true)
|
||||
private LocalDateTime staticRuleModifyTime;
|
||||
|
||||
@JsonProperty("static_rule_create_username")
|
||||
@ExcelIgnore
|
||||
@Schema(description = "静态规则创建用户名称", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private String staticRuleCreateUsername;
|
||||
@JsonProperty("static_rule_audit_status")
|
||||
@ExcelIgnore
|
||||
@Schema(description = "静态规则审核状态(0为未审核,1为已退回,2为审核通过)", example = "2", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private Integer staticRuleAuditStatus;
|
||||
@JsonProperty("static_rule_create_depart")
|
||||
@ExcelIgnore
|
||||
@Schema(description = "静态规则创建用户所属部门", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private String staticRuleCreateDepart;
|
||||
@JsonProperty("static_rule_create_user_id")
|
||||
@ExcelIgnore
|
||||
@Schema(hidden = true)
|
||||
private Integer staticRuleCreateUserId;
|
||||
@JsonProperty("static_rule_used_task_id")
|
||||
@ExcelIgnore
|
||||
@Schema(hidden = true)
|
||||
private Integer staticRuleUsedTaskId;
|
||||
|
||||
@JsonProperty("static_rule_sip")
|
||||
@ExcelProperty("源IP地址")
|
||||
@Pattern(regexp = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$", message = "Invalid IPv4 Address")
|
||||
@Schema(description = "源IP地址", example = "1.1.1.1")
|
||||
private String staticRuleSip;
|
||||
@JsonProperty("static_rule_msip")
|
||||
@Pattern(regexp = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$", message = "Invalid IPv4 Address")
|
||||
@ExcelProperty("源IP地址掩码")
|
||||
@Schema(description = "源IP地址掩码", example = "255.255.255.0")
|
||||
private String staticRuleMsip;
|
||||
@JsonProperty("static_rule_sport")
|
||||
@ExcelProperty("源端口")
|
||||
@Max(value = 65535, message = "port should not be more than 65535")
|
||||
@Min(value = 1, message = "port should not be less than 1")
|
||||
@Schema(description = "源端口", example = "8080")
|
||||
private Integer staticRuleSport;
|
||||
@JsonProperty("static_rule_msport")
|
||||
@ExcelProperty("源端口掩码")
|
||||
@Max(value = 65535, message = "port should not be more than 65535")
|
||||
@Min(value = 1, message = "port should not be less than 1")
|
||||
@Schema(description = "源端口掩码", example = "65535")
|
||||
private Integer staticRuleMsport;
|
||||
@JsonProperty("static_rule_dip")
|
||||
@Pattern(regexp = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$", message = "Invalid IPv4 Address")
|
||||
@ExcelProperty("目的IP地址")
|
||||
@Schema(description = "目的IP地址", example = "2.2.2.2")
|
||||
private String staticRuleDip;
|
||||
@JsonProperty("static_rule_mdip")
|
||||
@ExcelProperty("目的IP地址掩码")
|
||||
@Pattern(regexp = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$", message = "Invalid IPv4 Address")
|
||||
@Schema(description = "目的IP地址掩码", example = "255.255.255.0")
|
||||
private String staticRuleMdip;
|
||||
@JsonProperty("static_rule_dport")
|
||||
@ExcelProperty("目的端口")
|
||||
@Max(value = 65535, message = "port should not be more than 65535")
|
||||
@Min(value = 1, message = "port should not be less than 1")
|
||||
@Schema(description = "目的端口", example = "8080")
|
||||
private Integer staticRuleDport;
|
||||
@JsonProperty("static_rule_mdport")
|
||||
@ExcelProperty("目的端口掩码")
|
||||
@Max(value = 65535, message = "port should not be more than 65535")
|
||||
@Min(value = 1, message = "port should not be less than 1")
|
||||
@Schema(description = "目的端口掩码", example = "65535")
|
||||
private Integer staticRuleMdport;
|
||||
@JsonProperty("static_rule_protocol")
|
||||
@ExcelProperty("协议")
|
||||
@Schema(description = "协议", example = "TCP")
|
||||
private String staticRuleProtocol;
|
||||
@JsonProperty("static_rule_mprotocol")
|
||||
@ExcelProperty("协议掩码")
|
||||
@Schema(description = "协议掩码", example = "TCP")
|
||||
private String staticRuleMprotocol;
|
||||
@JsonProperty("static_rule_dns")
|
||||
@ExcelProperty("DNS")
|
||||
@Schema(description = "DNS", example = "www.baidu.com")
|
||||
private String staticRuleDns;
|
||||
@JsonProperty("static_rule_url")
|
||||
@ExcelProperty("URL")
|
||||
@Schema(description = "URL", example = "www.baidu.com")
|
||||
private String staticRuleURL;
|
||||
|
||||
@JsonProperty("static_rule_priority")
|
||||
@ExcelProperty("优先级")
|
||||
@Schema(description = "优先级", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Integer staticRulePriority;
|
||||
@JsonProperty("static_rule_range")
|
||||
@ExcelProperty("范围")
|
||||
@Schema(description = "范围", example = "北京", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String staticRuleRange;
|
||||
@JsonProperty("static_rule_frequency")
|
||||
@ExcelProperty("频率")
|
||||
@Schema(description = "频率", example = "1", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Integer staticRuleFrequency;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.realtime.protection.configuration.entity.whitelist;
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
@@ -13,37 +14,51 @@ import lombok.Data;
|
||||
public class WhiteListObject {
|
||||
@JsonProperty("whiteobj_id")
|
||||
@ExcelIgnore
|
||||
@Schema(description = "白名单对象ID", accessMode = Schema.AccessMode.READ_ONLY)
|
||||
private int whiteListId;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("whiteobj_name")
|
||||
@ExcelProperty("名称")
|
||||
@Schema(description = "白名单对象名称", example = "白名单测试", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String whiteListName;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("whiteobj_system_name")
|
||||
@ExcelProperty("系统名称")
|
||||
@Schema(description = "白名单对象系统名称", example = "xxx系统", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String whiteListSystemName;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("whiteobj_ip_address")
|
||||
@Pattern(regexp = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$", message = "Invalid IPv4 Address")
|
||||
@ExcelProperty("IP地址")
|
||||
@Schema(description = "白名单对象IPv4地址", example = "1.1.1.1" , requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String whiteListIP;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("whiteobj_port")
|
||||
@Max(value = 65535, message = "port should not be more than 65535")
|
||||
@Min(value = 1, message = "port should not be less than 1")
|
||||
@ExcelProperty("端口")
|
||||
@Schema(description = "白名单对象端口", maximum = "65535", minimum = "1", example = "8080", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private int whiteListPort;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("whiteobj_url")
|
||||
@ExcelProperty("URL")
|
||||
@Schema(description = "白名单对象URL", example = "alice.bob.com", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String whiteListUrl;
|
||||
|
||||
@NotNull
|
||||
@JsonProperty("whiteobj_protocol")
|
||||
@ExcelProperty("协议")
|
||||
@Schema(description = "白名单对象网络协议", example = "TCP", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String whiteListProtocol;
|
||||
|
||||
|
||||
@JsonProperty("audit_status")
|
||||
@ExcelIgnore
|
||||
@Schema(description = "白名单对象审核状态(0为未审核,1为已退回,2为审核通过)", example = "2")
|
||||
private String whiteListAuditStatus;
|
||||
}
|
||||
|
||||
@@ -1,20 +1,17 @@
|
||||
package com.realtime.protection.server.rule.dynamicrule;
|
||||
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject;
|
||||
import com.realtime.protection.configuration.response.ResponseResult;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("dynamicrule")
|
||||
@Slf4j
|
||||
public class DynamicRuleController {
|
||||
public class DynamicRuleController implements DynamicRuleControllerApi {
|
||||
|
||||
private final DynamicRuleService dynamicRuleService;
|
||||
|
||||
@@ -23,7 +20,8 @@ public class DynamicRuleController {
|
||||
}
|
||||
|
||||
// 新增 要关联防护对象!!!!
|
||||
@RequestMapping("/new")
|
||||
@Override
|
||||
@PostMapping("/new")
|
||||
public ResponseResult newDynamicRuleObject(@RequestBody @Valid DynamicRuleObject dynamicRuleObject) {
|
||||
log.info("新增动态规则: {}", dynamicRuleObject);
|
||||
//调用service新增
|
||||
@@ -34,6 +32,7 @@ public class DynamicRuleController {
|
||||
.setData("success", true);
|
||||
}
|
||||
|
||||
/*
|
||||
//以excel文件方式批量导入,但动态规则没有这个需求
|
||||
@PostMapping("/upload")
|
||||
public ResponseResult uploadFile(MultipartFile uploadFile) throws IOException {
|
||||
@@ -41,55 +40,65 @@ public class DynamicRuleController {
|
||||
new DynamicRuleDataListener(dynamicRuleService)).sheet().doRead();
|
||||
return ResponseResult.ok();
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
//id删除
|
||||
@RequestMapping("/{dynamicRuleId}/delete")
|
||||
public ResponseResult deleteDynamicRuleObject(@PathVariable Integer dynamicRuleId) {
|
||||
log.info("删除动态规则: {}", dynamicRuleId);
|
||||
@Override
|
||||
@DeleteMapping("/{id}/delete")
|
||||
public ResponseResult deleteDynamicRuleObject(@PathVariable Integer id) {
|
||||
log.info("删除动态规则: {}", id);
|
||||
//调用service删除
|
||||
dynamicRuleService.deleteDynamicRuleObject(dynamicRuleId);
|
||||
dynamicRuleService.deleteDynamicRuleObject(id);
|
||||
|
||||
return ResponseResult.ok();
|
||||
}
|
||||
|
||||
//批量删除
|
||||
@RequestMapping("/delete")
|
||||
public ResponseResult deleteDynamicRuleObjects(@RequestBody List<Integer> dynamicRuleIds) {
|
||||
log.info("批量删除动态规则: {}", dynamicRuleIds);
|
||||
@Override
|
||||
@DeleteMapping("/{ids}")
|
||||
public ResponseResult deleteDynamicRuleObjects(@PathVariable List<Integer> ids) {
|
||||
log.info("批量删除动态规则: {}", ids);
|
||||
//调用service删除
|
||||
|
||||
return ResponseResult.ok()
|
||||
.setData("success", dynamicRuleService.deleteDynamicRuleObjects(dynamicRuleIds));
|
||||
.setData("success", dynamicRuleService.deleteDynamicRuleObjects(ids));
|
||||
}
|
||||
|
||||
//修改
|
||||
@RequestMapping("/{dynamicRuleId}/update")
|
||||
public ResponseResult updateDynamicRuleObject(@PathVariable Integer dynamicRuleId,
|
||||
@Override
|
||||
@PostMapping("/{id}/update")
|
||||
public ResponseResult updateDynamicRuleObject(@PathVariable Integer id,
|
||||
@RequestBody @Valid DynamicRuleObject dynamicRuleObject) {
|
||||
log.info("修改动态规则: {}:{}",
|
||||
dynamicRuleId, dynamicRuleObject.getDynamicRuleName());
|
||||
id, dynamicRuleObject.getDynamicRuleName());
|
||||
|
||||
dynamicRuleService.updateDynamicRuleObject(dynamicRuleId, dynamicRuleObject);
|
||||
dynamicRuleService.updateDynamicRuleObject(id, dynamicRuleObject);
|
||||
|
||||
return ResponseResult.ok()
|
||||
.setData("dynamic_rule_id", dynamicRuleId)
|
||||
.setData("dynamic_rule_id", id)
|
||||
.setData("success", true);
|
||||
}
|
||||
|
||||
//id查询
|
||||
@RequestMapping("/{dynamicRuleId}/query")
|
||||
public ResponseResult queryDynamicRuleObjectById(@PathVariable Integer dynamicRuleId) {
|
||||
log.info("查询动态规则: {}", dynamicRuleId);
|
||||
@Override
|
||||
@GetMapping("/{id}/query")
|
||||
public ResponseResult queryDynamicRuleObjectById(@PathVariable Integer id) {
|
||||
log.info("查询动态规则: {}", id);
|
||||
DynamicRuleObject dynamicRuleObject = dynamicRuleService.queryDynamicRuleById(id);
|
||||
if (dynamicRuleObject == null) {
|
||||
return ResponseResult.invalid()
|
||||
.setData("dynamic_rule", null);
|
||||
}
|
||||
//调用service查询
|
||||
return ResponseResult.ok()
|
||||
.setData("dynamic_rule", dynamicRuleService.queryDynamicRuleById(dynamicRuleId));
|
||||
.setData("dynamic_rule", dynamicRuleObject);
|
||||
}
|
||||
|
||||
//分页查询
|
||||
@RequestMapping("/query")
|
||||
public ResponseResult queryDynamicRuleObject(@RequestParam(value = "dynamic_rule_name", required = false) String dynamicRuleName,
|
||||
@RequestParam(value = "dynamic_rule_id", required = false) Integer dynamicRuleId,
|
||||
@Override
|
||||
@GetMapping("/query")
|
||||
public ResponseResult queryDynamicRuleObject(@RequestParam(value = "name", required = false) String dynamicRuleName,
|
||||
@RequestParam(value = "id", required = false) Integer dynamicRuleId,
|
||||
@RequestParam(value = "page", defaultValue = "1") Integer page,
|
||||
@RequestParam(value = "page_size", defaultValue = "10") Integer pageSize) {
|
||||
log.info("分页查询动态规则: {}:{}:{}:{}", dynamicRuleName, dynamicRuleId, page, pageSize);
|
||||
@@ -98,5 +107,9 @@ public class DynamicRuleController {
|
||||
.setData("dynamic_rule_list", dynamicRuleService.queryDynamicRuleObject(dynamicRuleName, dynamicRuleId, page, pageSize));
|
||||
}
|
||||
|
||||
//详情查看?? 查看什么
|
||||
//详情查看?? 就是按id查询吧
|
||||
|
||||
|
||||
//审核?不需要
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
package com.realtime.protection.server.rule.dynamicrule;
|
||||
|
||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject;
|
||||
import com.realtime.protection.configuration.response.ResponseResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.media.Content;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "动态规则API", description = "动态规则模块所有接口")
|
||||
public interface DynamicRuleControllerApi {
|
||||
|
||||
@Operation(
|
||||
summary = "新建动态规则",
|
||||
description = "新建一个动态规则",
|
||||
|
||||
responses = {
|
||||
@ApiResponse(
|
||||
description = "返回新建对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(
|
||||
// title = "ResponseResult和DynamicRule的组合模型",
|
||||
// description = "ResponseResult的data内DynamicRule",
|
||||
// anyOf = {ResponseResult.class, DynamicRuleObject.class})
|
||||
implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "动态规则信息")
|
||||
)
|
||||
ResponseResult newDynamicRuleObject(@RequestBody @Valid DynamicRuleObject dynamicRuleObject) ;
|
||||
|
||||
@Operation(
|
||||
summary = "删除动态规则",
|
||||
description = "删除一个动态规则",
|
||||
responses = {
|
||||
@ApiResponse(
|
||||
description = "返回删除对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "动态规则id")
|
||||
}
|
||||
)
|
||||
ResponseResult deleteDynamicRuleObject(@PathVariable Integer id) ;
|
||||
|
||||
@Operation(
|
||||
summary = "批量删除动态规则",
|
||||
description = "批量删除动态规则",
|
||||
responses = {
|
||||
@ApiResponse(
|
||||
description = "返回批量删除对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "ids", description = "动态规则id列表")
|
||||
}
|
||||
)
|
||||
public ResponseResult deleteDynamicRuleObjects(@PathVariable List<Integer> ids) ;
|
||||
|
||||
@Operation(
|
||||
summary = "修改动态规则",
|
||||
description = "修改动态规则",
|
||||
responses = {
|
||||
@ApiResponse(
|
||||
description = "返回修改对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "动态规则id")
|
||||
},
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "动态规则信息")
|
||||
)
|
||||
public ResponseResult updateDynamicRuleObject(
|
||||
@PathVariable Integer id,
|
||||
@RequestBody @Valid DynamicRuleObject dynamicRuleObject) ;
|
||||
|
||||
@Operation(
|
||||
summary = "查询单个动态规则",
|
||||
description = "根据动态规则ID查询单个动态规则的所有详细信息",
|
||||
responses = {
|
||||
@ApiResponse(
|
||||
description = "返回查询到的单个动态规则",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "动态规则ID", example = "2")
|
||||
}
|
||||
)
|
||||
public ResponseResult queryDynamicRuleObjectById(@PathVariable Integer id) ;
|
||||
|
||||
@Operation(
|
||||
summary = "根据条件查询多个动态规则",
|
||||
description = "根据查询条件和页码等,查询多个对象并以列表返回",
|
||||
responses = {
|
||||
@ApiResponse(
|
||||
description = "返回多个动态规则",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "name", description = "动态规则名称", example = "test"),
|
||||
@Parameter(name = "id", description = "动态规则ID", example = "2"),
|
||||
@Parameter(name = "page", description = "页码", example = "1"),
|
||||
@Parameter(name = "page_size", description = "每页大小", example = "10")
|
||||
}
|
||||
)
|
||||
public ResponseResult queryDynamicRuleObject(
|
||||
@RequestParam(value = "name", required = false) String dynamicRuleName,
|
||||
@RequestParam(value = "id", required = false) Integer dynamicRuleId,
|
||||
@RequestParam(value = "page", defaultValue = "1") Integer page,
|
||||
@RequestParam(value = "page_size", defaultValue = "10") Integer pageSize) ;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.realtime.protection.server.rule.dynamicrule;
|
||||
|
||||
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 org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@@ -31,4 +32,6 @@ public interface DynamicRuleMapper {
|
||||
List<DynamicRuleObject> queryDynamicRuleObject(String dynamicRuleName, Integer dynamicRuleId, Integer page, Integer pageSize);
|
||||
|
||||
void deleteDynamicRuleProtectObjectConcat(Integer dynamicRuleId);
|
||||
|
||||
Template queryTemplateByRuleId(Integer dynamicRuleId);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.realtime.protection.server.rule.dynamicrule;
|
||||
|
||||
import com.alibaba.excel.util.ListUtils;
|
||||
import com.realtime.protection.configuration.entity.defense.template.Template;
|
||||
import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject;
|
||||
import com.realtime.protection.configuration.utils.SqlSessionWrapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -26,11 +27,11 @@ public class DynamicRuleService {
|
||||
dynamicRuleMapper.newDynamicRule(dynamicRule);
|
||||
|
||||
Integer dynamicRuleId = dynamicRule.getDynamicRuleId();
|
||||
|
||||
if (dynamicRule.getProtectObjectIds() != null) {
|
||||
dynamicRule.getProtectObjectIds().forEach(
|
||||
protectObjectId -> dynamicRuleMapper.newDynamicRulProtectObjectConcat(dynamicRuleId, protectObjectId));
|
||||
|
||||
|
||||
}
|
||||
return dynamicRuleId;
|
||||
}
|
||||
|
||||
@@ -75,8 +76,15 @@ public class DynamicRuleService {
|
||||
|
||||
//查询DynamicRule
|
||||
DynamicRuleObject dynamicRuleObject = dynamicRuleMapper.queryDynamicRuleById(dynamicRuleId);
|
||||
if (dynamicRuleObject == null){
|
||||
return null;
|
||||
}
|
||||
//查询DynamicRule关联的ProtectObject
|
||||
dynamicRuleObject.setProtectObjects(dynamicRuleMapper.queryProtectObjectByRuleId(dynamicRuleId));
|
||||
//查询DynamicRule关联的template详细信息
|
||||
Template template = dynamicRuleMapper.queryTemplateByRuleId(dynamicRuleId);
|
||||
dynamicRuleObject.setDynamicRuleSourceSystem(template.getSourceSystem());
|
||||
dynamicRuleObject.setDynamicRuleEventType(template.getTemplateName());
|
||||
|
||||
return dynamicRuleObject;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/staticrule")
|
||||
@Slf4j
|
||||
public class StaticRuleController {
|
||||
public class StaticRuleController implements StaticRuleControllerApi {
|
||||
|
||||
private final StaticRuleService staticRuleService;
|
||||
|
||||
@@ -31,6 +31,7 @@ public class StaticRuleController {
|
||||
* 新增静态规则
|
||||
*/
|
||||
@PostMapping("/new")
|
||||
@Override
|
||||
public ResponseResult newStaticRuleObject(@RequestBody @Valid StaticRuleObject object) {
|
||||
log.info("新增静态规则: {}", object);
|
||||
//调用service新增
|
||||
@@ -40,6 +41,7 @@ public class StaticRuleController {
|
||||
|
||||
//以Excel方式批量导入静态规则
|
||||
@PostMapping("/upload")
|
||||
@Override
|
||||
public ResponseResult uploadFile(MultipartFile uploadFile) throws IOException {
|
||||
EasyExcel.read(uploadFile.getInputStream(), StaticRuleObject.class,
|
||||
new StaticRuleDataListener(staticRuleService)).sheet().doRead();
|
||||
@@ -47,6 +49,7 @@ public class StaticRuleController {
|
||||
}
|
||||
|
||||
//下载模板文件
|
||||
@Override
|
||||
@GetMapping("/download")
|
||||
public void downloadTemplate(HttpServletResponse response) throws IOException {
|
||||
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||
@@ -59,10 +62,22 @@ public class StaticRuleController {
|
||||
.doWrite(List.of());
|
||||
}
|
||||
|
||||
/**
|
||||
* 按id删除静态规则
|
||||
*/
|
||||
@Override
|
||||
@DeleteMapping("/{id}/delete")
|
||||
public ResponseResult deleteStaticRule(@PathVariable Integer id) {
|
||||
log.info("根据id删除静态规则:{}", id);
|
||||
//调用service删除
|
||||
staticRuleService.deleteStaticRuleById(id);
|
||||
return ResponseResult.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除静态规则(有的删了,有的没删,也返回false)
|
||||
*/
|
||||
@Override
|
||||
@DeleteMapping("/{ids}")
|
||||
public ResponseResult delete(@PathVariable List<Integer> ids) {
|
||||
log.info("根据id删除静态规则:{}", ids);
|
||||
@@ -75,11 +90,13 @@ public class StaticRuleController {
|
||||
/**
|
||||
* 修改静态规则
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
public ResponseResult updateStaticRule(@RequestBody @Valid StaticRuleObject object) {
|
||||
@Override
|
||||
@PostMapping("/{id}/update")
|
||||
public ResponseResult updateStaticRule(@PathVariable Integer id,
|
||||
@RequestBody @Valid StaticRuleObject object) {
|
||||
log.info("修改静态规则: {}", object);
|
||||
//调用service修改
|
||||
staticRuleService.updateStaticRule(object);
|
||||
staticRuleService.updateStaticRule(id, object);
|
||||
return ResponseResult.ok();
|
||||
}
|
||||
|
||||
@@ -87,7 +104,8 @@ public class StaticRuleController {
|
||||
* 根据id查询静态规则
|
||||
* 路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数
|
||||
*/
|
||||
@RequestMapping("/{id}/query")
|
||||
@Override
|
||||
@GetMapping("/{id}/query")
|
||||
public ResponseResult queryStaticRuleById(@PathVariable Integer id) {
|
||||
log.info("根据id查询静态规则:{}", id);
|
||||
StaticRuleObject object = staticRuleService.queryStaticRuleById(id);
|
||||
@@ -97,7 +115,8 @@ public class StaticRuleController {
|
||||
/**
|
||||
* 分页查询静态规则
|
||||
*/
|
||||
@RequestMapping("/query")
|
||||
@Override
|
||||
@GetMapping("/query")
|
||||
public ResponseResult queryStaticRule(String static_rule_name, Integer static_rule_id,
|
||||
@RequestParam(defaultValue = "1") Integer page,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize
|
||||
@@ -107,4 +126,23 @@ public class StaticRuleController {
|
||||
List<StaticRuleObject> pageResult = staticRuleService.queryStaticRule(static_rule_name, static_rule_id, page, pageSize);
|
||||
return ResponseResult.ok().setData("static_rule_list", pageResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改审核状态
|
||||
*/
|
||||
@Override
|
||||
@GetMapping("/{id}/audit/{auditStatus}")
|
||||
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("success", false);
|
||||
}
|
||||
return ResponseResult.ok()
|
||||
.setDataMap(staticRuleService.updateAuditStatus(id, auditStatus))
|
||||
.setData("staticRule_id", id);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
package com.realtime.protection.server.rule.staticrule;
|
||||
|
||||
import com.realtime.protection.configuration.entity.rule.staticrule.StaticRuleObject;
|
||||
import com.realtime.protection.configuration.response.ResponseResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.media.Content;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "静态规则API", description = "静态规则模块所有接口")
|
||||
public interface StaticRuleControllerApi {
|
||||
|
||||
@Operation(
|
||||
summary = "新增静态规则",
|
||||
description = "新增一个静态规则",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回新增对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "静态规则信息")
|
||||
)
|
||||
ResponseResult newStaticRuleObject(@RequestBody @Valid StaticRuleObject object) ;
|
||||
|
||||
@Operation(
|
||||
summary = "批量导入静态规则",
|
||||
description = "以Excel文件方式批量导入静态规则",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回导入结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "Excel文件")
|
||||
)
|
||||
ResponseResult uploadFile(MultipartFile uploadFile) throws IOException;
|
||||
|
||||
@Operation(
|
||||
summary = "下载静态规则模板",
|
||||
description = "下载静态规则模板文件",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回下载结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
void downloadTemplate(HttpServletResponse response) throws IOException ;
|
||||
|
||||
@Operation(
|
||||
summary = "删除静态规则",
|
||||
description = "删除多个静态规则",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回删除对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "ids", description = "静态规则id数组")
|
||||
}
|
||||
)
|
||||
ResponseResult delete(@PathVariable List<Integer> ids) ;
|
||||
|
||||
@Operation(
|
||||
summary = "修改静态规则",
|
||||
description = "修改静态规则",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回修改对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "静态规则id")
|
||||
},
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "静态规则信息")
|
||||
)
|
||||
ResponseResult updateStaticRule(@PathVariable Integer id,
|
||||
@RequestBody @Valid StaticRuleObject object) ;
|
||||
|
||||
@Operation(
|
||||
summary = "查询单个静态规则",
|
||||
description = "根据静态规则ID查询单个静态规则的所有详细信息",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回查询到的单个静态规则",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {@Parameter(name = "id", description = "静态规则ID", example = "38")}
|
||||
)
|
||||
ResponseResult queryStaticRuleById(@PathVariable Integer id) ;
|
||||
|
||||
@Operation(
|
||||
summary = "分页查询静态规则",
|
||||
description = "根据查询条件和页码等,查询多个对象并以列表返回",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回多个静态规则",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "static_rule_name", description = "静态规则名称"),
|
||||
@Parameter(name = "static_rule_id", description = "静态规则id"),
|
||||
@Parameter(name = "page", description = "页码"),
|
||||
@Parameter(name = "pageSize", description = "每页条数")
|
||||
}
|
||||
)
|
||||
ResponseResult queryStaticRule(String static_rule_name, Integer static_rule_id,
|
||||
@RequestParam(defaultValue = "1") Integer page,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize);
|
||||
|
||||
|
||||
@Operation(
|
||||
summary = "按id删除静态规则",
|
||||
description = "按id删除静态规则",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回删除对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "静态规则id")
|
||||
}
|
||||
)
|
||||
ResponseResult deleteStaticRule(@PathVariable Integer id) ;
|
||||
|
||||
@Operation(
|
||||
summary = "更新静态规则审批状态",
|
||||
description = "更新静态规则审批状态,0未审核、1审核不通过、2审核通过",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回静态规则审核结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "静态规则id"),
|
||||
@Parameter(name = "auditStatus", description = "要修改为的静态规则审核状态")
|
||||
}
|
||||
)
|
||||
public ResponseResult updateStaticRuleAuditStatus(@PathVariable Integer id, @PathVariable Integer auditStatus) ;
|
||||
|
||||
}
|
||||
@@ -15,11 +15,11 @@ public interface StaticRuleMapper {
|
||||
|
||||
//根据主键删除静态规则
|
||||
@Delete("delete from t_static_rule where static_rule_id = #{id}")
|
||||
Boolean deleteStaticRuleById(Integer id);
|
||||
void deleteStaticRuleById(Integer id);
|
||||
|
||||
|
||||
//修改静态规则
|
||||
void updateStaticRule(StaticRuleObject object);
|
||||
void updateStaticRule(@Param("id") Integer id, @Param("object") StaticRuleObject object);
|
||||
|
||||
//按id查询静态规则
|
||||
//@Select("select * from t_static_rule where static_rule_id = #{id}")
|
||||
@@ -30,7 +30,11 @@ public interface StaticRuleMapper {
|
||||
Integer page, Integer pageSize);
|
||||
|
||||
|
||||
void deleteStaticRules(@Param("whiteListIds") List<Integer> staticRuleBatch);
|
||||
void deleteStaticRules(@Param("staticRuleIds") List<Integer> staticRuleBatch);
|
||||
|
||||
void newStaticRules(List<StaticRuleObject> staticRuleBatch);
|
||||
|
||||
Integer queryAuditStatusById(Integer id);
|
||||
|
||||
Boolean updateAuditStatusById(Integer id, Integer auditStatus);
|
||||
}
|
||||
|
||||
@@ -3,10 +3,14 @@ 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.utils.SqlSessionWrapper;
|
||||
import com.realtime.protection.configuration.utils.status.AuditStatusValidator;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Service
|
||||
@@ -69,12 +73,12 @@ public class StaticRuleService {
|
||||
return sqlSessionWrapper.startBatchSession(StaticRuleMapper.class, deleteStaticRulesFunction, staticRuleIds);
|
||||
}
|
||||
|
||||
public void updateStaticRule(StaticRuleObject object) {
|
||||
public void updateStaticRule(Integer id, StaticRuleObject object) {
|
||||
//判断当前静态规则是否能够修改---是否存在任务选择的静态规则??
|
||||
//按id查询该静态规则的used_task_id字段,如果不为空,则不能修改
|
||||
object.setStaticRuleModifyTime(LocalDateTime.now());
|
||||
//修改静态规则
|
||||
staticRuleMapper.updateStaticRule(object);
|
||||
staticRuleMapper.updateStaticRule(id, object);
|
||||
}
|
||||
|
||||
public StaticRuleObject queryStaticRuleById(Integer id) {
|
||||
@@ -118,4 +122,22 @@ public class StaticRuleService {
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Map<String, Object> updateAuditStatus(Integer id, Integer auditStatus) {
|
||||
Integer originalAuditStatus = staticRuleMapper.queryAuditStatusById(id);
|
||||
if (!AuditStatusValidator.setOriginal(originalAuditStatus).checkValidate(auditStatus)) {
|
||||
throw new IllegalArgumentException("invalid audit status");
|
||||
}
|
||||
Boolean success = staticRuleMapper.updateAuditStatusById(id, auditStatus);
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("success", success);
|
||||
resultMap.put("audit_status", auditStatus);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
public void deleteStaticRuleById(Integer id) {
|
||||
staticRuleMapper.deleteStaticRuleById(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.alibaba.excel.EasyExcel;
|
||||
import com.realtime.protection.configuration.entity.whitelist.WhiteListObject;
|
||||
import com.realtime.protection.configuration.response.ResponseResult;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@@ -14,7 +15,7 @@ import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/whiteobj")
|
||||
public class WhiteListController {
|
||||
public class WhiteListController implements WhiteListControllerApi {
|
||||
|
||||
private final WhiteListService whiteListService;
|
||||
|
||||
@@ -22,8 +23,9 @@ public class WhiteListController {
|
||||
this.whiteListService = whiteListService;
|
||||
}
|
||||
|
||||
@RequestMapping("/new")
|
||||
public ResponseResult newWhitelistObject(@RequestBody WhiteListObject object) {
|
||||
@Override
|
||||
@PostMapping("/new")
|
||||
public ResponseResult newWhitelistObject(@RequestBody @Valid WhiteListObject object) {
|
||||
Integer whiteListObjectId = whiteListService.newWhiteListObject(object);
|
||||
|
||||
return ResponseResult.ok()
|
||||
@@ -32,7 +34,9 @@ public class WhiteListController {
|
||||
.setData("success", true);
|
||||
}
|
||||
|
||||
//以excel文件方式批量导入
|
||||
//以excel文件方式批量导入、
|
||||
//post
|
||||
@Override
|
||||
@PostMapping("/upload")
|
||||
public ResponseResult uploadFile(MultipartFile uploadFile) throws IOException {
|
||||
EasyExcel.read(uploadFile.getInputStream(), WhiteListObject.class,
|
||||
@@ -41,6 +45,7 @@ public class WhiteListController {
|
||||
}
|
||||
|
||||
//下载模板文件
|
||||
@Override
|
||||
@GetMapping("/download")
|
||||
public void downloadTemplate(HttpServletResponse response) throws IOException {
|
||||
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||
@@ -53,9 +58,10 @@ public class WhiteListController {
|
||||
.doWrite(List.of());
|
||||
}
|
||||
|
||||
@RequestMapping("/query")
|
||||
@Override
|
||||
@GetMapping("/query")
|
||||
public ResponseResult queryWhiteListObject(@RequestParam(value = "whiteobj_name", required = false) String whiteListName,
|
||||
@RequestParam(value = "page_size", required = false) Integer whiteListId,
|
||||
@RequestParam(value = "whiteobj_id", required = false) Integer whiteListId,
|
||||
@RequestParam(value = "page", defaultValue = "1") Integer page,
|
||||
@RequestParam(value = "page_size", defaultValue = "10") Integer pageSize) {
|
||||
if (page <= 0 || pageSize <= 0) {
|
||||
@@ -66,7 +72,8 @@ public class WhiteListController {
|
||||
.setData("whiteobj_list", whiteListService.queryWhiteListObject(whiteListName, whiteListId, page, pageSize));
|
||||
}
|
||||
|
||||
@RequestMapping("/{id}/query")
|
||||
@Override
|
||||
@GetMapping("/{id}/query")
|
||||
public ResponseResult queryWhiteListObjectById(@PathVariable Integer id) {
|
||||
if (id <= 0) {
|
||||
return new ResponseResult(400, "id is invalid")
|
||||
@@ -82,6 +89,7 @@ public class WhiteListController {
|
||||
.setData("whiteobj_list", whiteListObject);
|
||||
}
|
||||
|
||||
@Override
|
||||
//根据id删除
|
||||
@DeleteMapping("/{id}/delete")
|
||||
public ResponseResult deleteWhiteListObjectById(@PathVariable Integer id) {
|
||||
@@ -102,20 +110,22 @@ public class WhiteListController {
|
||||
//还要return 白名单名称吗,还要在查表看他的名称
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
public ResponseResult deleteWhiteListObjects(@RequestBody List<Integer> whiteListObjIds) {
|
||||
@Override
|
||||
@DeleteMapping("/{ids}")
|
||||
public ResponseResult deleteWhiteListObjects(@PathVariable List<Integer> ids) {
|
||||
//Post不支持body为json。。。 body只能是[9,10]
|
||||
|
||||
return ResponseResult.ok()
|
||||
.setData("whiteobj_list", whiteListObjIds)
|
||||
.setData("success", whiteListService.deleteWhiteListObjects(whiteListObjIds));
|
||||
.setData("whiteobj_list", ids)
|
||||
.setData("success", whiteListService.deleteWhiteListObjects(ids));
|
||||
}
|
||||
|
||||
@Override
|
||||
@PostMapping("/{id}/update")
|
||||
public ResponseResult updateWhiteListObject(@PathVariable Integer id,
|
||||
@RequestBody WhiteListObject object) {
|
||||
object.setWhiteListId(id);
|
||||
Integer num = whiteListService.updateWhiteListObject(object);
|
||||
Integer num = whiteListService.updateWhiteListObject(id, object);
|
||||
if (num == 0) {
|
||||
return new ResponseResult(400, "id is invalid")
|
||||
.setData("whiteobj_list", null);
|
||||
@@ -123,7 +133,7 @@ public class WhiteListController {
|
||||
return ResponseResult.ok();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
//查询ip是否存在于白名单
|
||||
@RequestMapping("/exist")
|
||||
public ResponseResult existWhiteListObject(@RequestParam(value = "ruleId", required = true) Integer ruleId,
|
||||
@@ -138,9 +148,11 @@ public class WhiteListController {
|
||||
return ResponseResult.ok()
|
||||
.setData("ip_list", ruleInWhiteListIds);
|
||||
}
|
||||
*/
|
||||
|
||||
@Override
|
||||
//修改审核状态
|
||||
@RequestMapping("/{id}/audit/{auditStatus}")
|
||||
@GetMapping("/{id}/audit/{auditStatus}")
|
||||
public ResponseResult updateWhiteListObjectAuditStatus(@PathVariable Integer id,
|
||||
@PathVariable Integer auditStatus) {
|
||||
if (id <= 0 || auditStatus < 0 || auditStatus > 2) {
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
package com.realtime.protection.server.whitelist;
|
||||
|
||||
import com.realtime.protection.configuration.entity.whitelist.WhiteListObject;
|
||||
import com.realtime.protection.configuration.response.ResponseResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.media.Content;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "白名单API", description = "白名单模块所有接口")
|
||||
public interface WhiteListControllerApi {
|
||||
|
||||
@Operation(
|
||||
summary = "新增白名单",
|
||||
description = "新增一个白名单",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回新增对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "白名单信息")
|
||||
)
|
||||
ResponseResult newWhitelistObject(@RequestBody WhiteListObject object) ;
|
||||
|
||||
@Operation(
|
||||
summary = "批量导入白名单",
|
||||
description = "以Excel文件方式批量导入白名单",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回导入结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "Excel文件")
|
||||
)
|
||||
ResponseResult uploadFile(MultipartFile uploadFile) throws IOException ;
|
||||
|
||||
@Operation(
|
||||
summary = "下载白名单模板",
|
||||
description = "下载白名单模板文件",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回下载结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
void downloadTemplate(HttpServletResponse response) throws IOException ;
|
||||
|
||||
@Operation(
|
||||
summary = "查询白名单",
|
||||
description = "按页和搜索内容查询白名单相关信息",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回查询到的所有白名单",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "whiteobj_name", description = "白名单名称"),
|
||||
@Parameter(name = "whiteobj_id", description = "白名单ID"),
|
||||
@Parameter(name = "page", description = "页码", example = "1"),
|
||||
@Parameter(name = "page_size", description = "每页查询个数", example = "10")
|
||||
}
|
||||
)
|
||||
ResponseResult queryWhiteListObject(@RequestParam(value = "whiteobj_name", required = false) String whiteListName,
|
||||
@RequestParam(value = "whiteobj_id", required = false) Integer whiteListId,
|
||||
@RequestParam(value = "page", defaultValue = "1") Integer page,
|
||||
@RequestParam(value = "page_size", defaultValue = "10") Integer pageSize) ;
|
||||
|
||||
@Operation(
|
||||
summary = "查询单个白名单",
|
||||
description = "根据白名单ID查询单个白名单的所有详细信息",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回查询到的单个白名单",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "白名单ID", example = "2")
|
||||
}
|
||||
)
|
||||
ResponseResult queryWhiteListObjectById(@PathVariable Integer id) ;
|
||||
|
||||
@Operation(
|
||||
summary = "删除白名单",
|
||||
description = "删除一个白名单",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回删除对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "白名单id")
|
||||
}
|
||||
)
|
||||
ResponseResult deleteWhiteListObjectById(@PathVariable Integer id);
|
||||
|
||||
@Operation(
|
||||
summary = "批量删除白名单",
|
||||
description = "批量删除白名单",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回删除对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "ids", description = "白名单id数组")
|
||||
}
|
||||
)
|
||||
ResponseResult deleteWhiteListObjects(@PathVariable List<Integer> whiteListObjIds) ;
|
||||
|
||||
@Operation(
|
||||
summary = "修改白名单",
|
||||
description = "修改白名单",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回修改对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "白名单id")
|
||||
},
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "白名单信息")
|
||||
|
||||
)
|
||||
ResponseResult updateWhiteListObject(@PathVariable Integer id,
|
||||
@RequestBody WhiteListObject object) ;
|
||||
|
||||
@Operation(
|
||||
summary = "修改白名单审核状态",
|
||||
description = "修改白名单审核状态",
|
||||
responses = {
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(
|
||||
description = "返回修改对象结果",
|
||||
content = @Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ResponseResult.class)
|
||||
)
|
||||
)
|
||||
},
|
||||
parameters = {
|
||||
@Parameter(name = "id", description = "白名单id"),
|
||||
@Parameter(name = "auditStatus", description = "白名单审核状态(0为未审核,1为已退回,2为审核通过)", example = "2")
|
||||
}
|
||||
)
|
||||
ResponseResult updateWhiteListObjectAuditStatus(@PathVariable Integer id,
|
||||
@PathVariable Integer auditStatus) ;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.realtime.protection.server.whitelist;
|
||||
|
||||
import com.realtime.protection.configuration.entity.rule.staticrule.StaticRuleObject;
|
||||
import com.realtime.protection.configuration.entity.task.Command;
|
||||
import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
|
||||
import com.realtime.protection.configuration.entity.whitelist.WhiteListObject;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -25,7 +25,7 @@ public interface WhiteListMapper {
|
||||
@Delete("delete from t_white_list where white_list_id = #{id}")
|
||||
Integer deleteWhiteListObject(Integer id);
|
||||
|
||||
Integer updateWhiteListObject(@Param("object") WhiteListObject object);
|
||||
Integer updateWhiteListObject(@Param("id")Integer id, @Param("object") WhiteListObject object);
|
||||
|
||||
List<String> existWhiteListObject(@Param("staticRuleObject") StaticRuleObject staticRuleObject);
|
||||
|
||||
@@ -37,5 +37,5 @@ public interface WhiteListMapper {
|
||||
|
||||
void deleteWhiteListObjects(@Param("whiteListIds") List<Integer> whiteListBatch);
|
||||
|
||||
List<WhiteListObject> whiteListCommandJudge(@Param("command") Command command);
|
||||
List<WhiteListObject> whiteListCommandJudge(@Param("command") FiveTupleWithMask fiveTupleWithMaskInCommand);
|
||||
}
|
||||
|
||||
@@ -101,8 +101,8 @@ public class WhiteListService {
|
||||
|
||||
}
|
||||
|
||||
public Integer updateWhiteListObject(WhiteListObject object) {
|
||||
return whiteListMapper.updateWhiteListObject(object);
|
||||
public Integer updateWhiteListObject(Integer id, WhiteListObject object) {
|
||||
return whiteListMapper.updateWhiteListObject(id, object);
|
||||
}
|
||||
|
||||
public List<WhiteListObject> queryWhiteListObject(String whiteListName, Integer whiteListId,
|
||||
@@ -132,7 +132,7 @@ public class WhiteListService {
|
||||
public List<WhiteListObject> whiteListCommandJudge(Command command) {
|
||||
//参数应该是指令,不管动态静态
|
||||
// 命中的whitelist列表:每一列包含ip port url
|
||||
return whiteListMapper.whiteListCommandJudge(command);
|
||||
return whiteListMapper.whiteListCommandJudge(command.getFiveTupleWithMask());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -4,22 +4,21 @@
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.realtime.protection.server.rule.dynamicrule.DynamicRuleMapper">
|
||||
|
||||
<!-- useGeneratedKeys="true": 这个属性指定了是否要获取数据库生成的主键。如果设置为true,MyBatis会使用JDBC的getGeneratedKeys方法来获取由数据库自动生成的主键。-->
|
||||
<!-- keyProperty="id": 这个属性指定了要将生成的主键赋值给哪个属性。在这个例子中,生成的主键将被赋值给名为id的属性。-->
|
||||
<!-- useGeneratedKeys="true": 这个属性指定了是否要获取数据库生成的主键。如果设置为true,MyBatis会使用JDBC的getGeneratedKeys方法来获取由数据库自动生成的主键。-->
|
||||
<!-- keyProperty="id": 这个属性指定了要将生成的主键赋值给哪个属性。在这个例子中,生成的主键将被赋值给名为id的属性。-->
|
||||
<insert id="newDynamicRule" useGeneratedKeys="true" keyProperty="dynamicRuleId">
|
||||
|
||||
insert into t_dynamic_rule
|
||||
(dynamic_rule_name,
|
||||
create_time, modify_time, dynamic_rule_create_username,
|
||||
dynamic_rule_create_depart, dynamic_rule_source_system,
|
||||
dynamic_rule_event_type, dynamic_rule_protec_level,
|
||||
dynamic_rule_create_depart, template_id, dynamic_rule_protect_level,
|
||||
dynamic_rule_priority, dynamic_rule_range,
|
||||
dynamic_rule_frequency, dynamic_rule_create_user_id)
|
||||
values (#{object.dynamicRuleName},
|
||||
#{object.dynamicRuleCreateTime}, #{object.dynamicRuleModifyTime},
|
||||
#{object.dynamicRuleCreateUsername}, #{object.dynamicRuleCreateDepart},
|
||||
#{object.dynamicRuleSourceSystem},
|
||||
#{object.dynamicRuleEventType}, #{object.dynamicRuleProtectLevel},
|
||||
values
|
||||
(#{object.dynamicRuleName},
|
||||
#{object.dynamicRuleCreateTime},#{object.dynamicRuleModifyTime},
|
||||
#{object.dynamicRuleCreateUsername},#{object.dynamicRuleCreateDepart},
|
||||
#{object.templateId}, #{object.dynamicRuleProtectLevel},
|
||||
#{object.dynamicRulePriority}, #{object.dynamicRuleRange},
|
||||
#{object.dynamicRuleFrequency},
|
||||
#{object.dynamicRuleCreateUserId})
|
||||
@@ -27,15 +26,15 @@
|
||||
</insert>
|
||||
|
||||
<insert id="newDynamicRulProtectObjectConcat">
|
||||
insert into t_protect_object_dynamic_rule_conn(dynamic_rule_id, protect_object_id)
|
||||
insert into
|
||||
t_protect_object_dynamic_rule_conn(dynamic_rule_id, protect_object_id)
|
||||
values (#{dynamicRuleId}, #{protectObjectId})
|
||||
</insert>
|
||||
<insert id="newDynamicRules">
|
||||
insert into t_dynamic_rule
|
||||
(dynamic_rule_name,
|
||||
create_time, modify_time, dynamic_rule_create_username,
|
||||
dynamic_rule_create_depart, dynamic_rule_source_system,
|
||||
dynamic_rule_event_type, dynamic_rule_protec_level,
|
||||
dynamic_rule_create_depart, template_id, dynamic_rule_protect_level,
|
||||
dynamic_rule_priority, dynamic_rule_range,
|
||||
dynamic_rule_frequency, dynamic_rule_create_user_id
|
||||
)
|
||||
@@ -44,8 +43,7 @@
|
||||
(#{object.dynamicRuleName},
|
||||
#{object.dynamicRuleCreateTime},#{object.dynamicRuleModifyTime},
|
||||
#{object.dynamicRuleCreateUsername},#{object.dynamicRuleCreateDepart},
|
||||
#{object.dynamicRuleSourceSystem},
|
||||
#{object.dynamicRuleEventType}, #{object.dynamicRuleProtectLevel},
|
||||
#{object.templateId}, #{object.dynamicRuleProtectLevel},
|
||||
#{object.dynamicRulePriority}, #{object.dynamicRuleRange},
|
||||
#{object.dynamicRuleFrequency},
|
||||
#{object.dynamicRuleCreateUserId})
|
||||
@@ -54,20 +52,18 @@
|
||||
|
||||
|
||||
<!-- join删除-->
|
||||
<!-- # delete t_dynamic_rule, t_protect_object_dynamic_rule_conn-->
|
||||
<!-- # from t_dynamic_rule-->
|
||||
<!-- # inner join t_protect_object_dynamic_rule_conn-->
|
||||
<!-- # on t_dynamic_rule.dynamic_rule_id = t_protect_object_dynamic_rule_conn.dynamic_rule_id-->
|
||||
<!-- # where t_dynamic_rule.dynamic_rule_id = #{dynamicRuleId}-->
|
||||
<!-- # delete t_dynamic_rule, t_protect_object_dynamic_rule_conn-->
|
||||
<!-- # from t_dynamic_rule-->
|
||||
<!-- # inner join t_protect_object_dynamic_rule_conn-->
|
||||
<!-- # on t_dynamic_rule.dynamic_rule_id = t_protect_object_dynamic_rule_conn.dynamic_rule_id-->
|
||||
<!-- # where t_dynamic_rule.dynamic_rule_id = #{dynamicRuleId}-->
|
||||
<delete id="deleteDynamicRuleObject">
|
||||
delete
|
||||
from t_dynamic_rule
|
||||
delete from t_dynamic_rule
|
||||
where dynamic_rule_id = #{dynamicRuleId}
|
||||
</delete>
|
||||
<!-- 用于update时删去之前的关联-->
|
||||
<!-- 用于update时删去之前的关联-->
|
||||
<delete id="deleteDynamicRuleProtectObjectConcat">
|
||||
delete
|
||||
from t_protect_object_dynamic_rule_conn
|
||||
delete from t_protect_object_dynamic_rule_conn
|
||||
where dynamic_rule_id = #{dynamicRuleId}
|
||||
</delete>
|
||||
|
||||
@@ -83,33 +79,26 @@
|
||||
<update id="updateDynamicRuleObject">
|
||||
update t_dynamic_rule
|
||||
set
|
||||
<if test="object.dynamicRuleName != null">dynamic_rule_name = #{object.dynamicRuleName},</if>
|
||||
<if test="object.dynamicRuleModifyTime != null">modify_time = #{object.dynamicRuleModifyTime},</if>
|
||||
<if test="object.dynamicRuleSourceSystem != null">dynamic_rule_source_system =
|
||||
#{object.dynamicRuleSourceSystem},
|
||||
</if>
|
||||
<if test="object.dynamicRuleEventType != null">dynamic_rule_event_type = #{object.dynamicRuleEventType},</if>
|
||||
<if test="object.dynamicRuleProtectLevel != null">dynamic_rule_protec_level =
|
||||
#{object.dynamicRuleProtectLevel},
|
||||
</if>
|
||||
<if test="object.dynamicRulePriority != null">dynamic_rule_priority = #{object.dynamicRulePriority},</if>
|
||||
<if test="object.dynamicRuleRange != null">dynamic_rule_range = #{object.dynamicRuleRange},</if>
|
||||
<if test="object.dynamicRuleFrequency != null">dynamic_rule_frequency = #{object.dynamicRuleFrequency}</if>
|
||||
<if test="object.dynamicRuleName != null"> dynamic_rule_name = #{object.dynamicRuleName},</if>
|
||||
<if test="object.dynamicRuleModifyTime != null"> modify_time = #{object.dynamicRuleModifyTime},</if>
|
||||
<if test="object.templateId != null"> template_id = #{object.templateId},</if>
|
||||
<if test="object.dynamicRuleProtectLevel != null"> dynamic_rule_protect_level = #{object.dynamicRuleProtectLevel},</if>
|
||||
<if test="object.dynamicRulePriority != null"> dynamic_rule_priority = #{object.dynamicRulePriority},</if>
|
||||
<if test="object.dynamicRuleRange != null"> dynamic_rule_range = #{object.dynamicRuleRange},</if>
|
||||
<if test="object.dynamicRuleFrequency != null"> dynamic_rule_frequency = #{object.dynamicRuleFrequency}</if>
|
||||
where
|
||||
dynamic_rule_id = #{dynamicRuleId}
|
||||
</update>
|
||||
|
||||
|
||||
<resultMap id="dynamicRuleMap"
|
||||
type="com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject">
|
||||
<resultMap id="dynamicRuleMap" type="com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject">
|
||||
<id column="dynamic_rule_id" property="dynamicRuleId"/>
|
||||
<result column="dynamic_rule_name" property="dynamicRuleName"/>
|
||||
<result column="create_time" property="dynamicRuleCreateTime"/>
|
||||
<result column="modify_time" property="dynamicRuleModifyTime"/>
|
||||
<result column="dynamic_rule_create_username" property="dynamicRuleCreateUsername"/>
|
||||
<result column="dynamic_rule_create_depart" property="dynamicRuleCreateDepart"/>
|
||||
<result column="dynamic_rule_source_system" property="dynamicRuleSourceSystem"/>
|
||||
<result column="dynamic_rule_event_type" property="dynamicRuleEventType"/>
|
||||
<result column="template_id" property="templateId"/>
|
||||
<result column="dynamic_rule_protec_level" property="dynamicRuleProtectLevel"/>
|
||||
<result column="dynamic_rule_priority" property="dynamicRulePriority"/>
|
||||
<result column="dynamic_rule_range" property="dynamicRuleRange"/>
|
||||
@@ -160,4 +149,19 @@
|
||||
</select>
|
||||
|
||||
|
||||
<resultMap id="templateMap" type="com.realtime.protection.configuration.entity.defense.template.Template">
|
||||
<id column="strategy_template_id" property="templateId"/>
|
||||
<result column="strategy_template_name" property="templateName"/>
|
||||
<result column="strategy_template_source_system" property="sourceSystem"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="queryTemplateByRuleId" resultMap="templateMap">
|
||||
select *
|
||||
from t_strategy_template
|
||||
inner join t_dynamic_rule
|
||||
on t_strategy_template.strategy_template_id = t_dynamic_rule.template_id
|
||||
where t_dynamic_rule.dynamic_rule_id = #{dynamicRuleId}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -50,36 +50,45 @@
|
||||
<update id="updateStaticRule">
|
||||
update t_static_rule
|
||||
<set>
|
||||
<if test="staticRuleName != null and staticRuleName != ''">
|
||||
static_rule_name = #{staticRuleName},
|
||||
<if test="object.staticRuleName != null and object.staticRuleName != ''">
|
||||
static_rule_name = #{object.staticRuleName},
|
||||
</if>
|
||||
static_rule_sip = INET_ATON(#{staticRuleSip}),
|
||||
static_rule_msip = INET_ATON(#{staticRuleMsip}),
|
||||
static_rule_sport = #{staticRuleSport},
|
||||
static_rule_msport = #{staticRuleMsport},
|
||||
static_rule_dip = INET_ATON(#{staticRuleDip}),
|
||||
static_rule_mdip = INET_ATON(#{staticRuleMdip}),
|
||||
static_rule_dport = #{staticRuleDport},
|
||||
static_rule_mdport = #{staticRuleMdport},
|
||||
static_rule_protocol = #{staticRuleProtocol},
|
||||
static_rule_mprotocol = #{staticRuleMprotocol},
|
||||
static_rule_dns = #{staticRuleDns},
|
||||
static_rule_url = #{staticRuleURL},
|
||||
<if test="staticRulePriority != null and staticRulePriority != ''">
|
||||
static_rule_priority = #{staticRulePriority},
|
||||
static_rule_sip = INET_ATON(#{object.staticRuleSip}),
|
||||
static_rule_msip = INET_ATON(#{object.staticRuleMsip}),
|
||||
static_rule_sport = #{object.staticRuleSport},
|
||||
static_rule_msport = #{object.staticRuleMsport},
|
||||
static_rule_dip = INET_ATON(#{object.staticRuleDip}),
|
||||
static_rule_mdip = INET_ATON(#{object.staticRuleMdip}),
|
||||
static_rule_dport = #{object.staticRuleDport},
|
||||
static_rule_mdport = #{object.staticRuleMdport},
|
||||
static_rule_protocol = #{object.staticRuleProtocol},
|
||||
static_rule_mprotocol = #{object.staticRuleMprotocol},
|
||||
static_rule_dns = #{object.staticRuleDns},
|
||||
static_rule_url = #{object.staticRuleURL},
|
||||
<if test="object.staticRulePriority != null and object.staticRulePriority != ''">
|
||||
static_rule_priority = #{object.staticRulePriority},
|
||||
</if>
|
||||
<if test="staticRuleRange != null and staticRuleRange != ''">
|
||||
static_rule_range = #{staticRuleRange},
|
||||
<if test="object.staticRuleRange != null and object.staticRuleRange != ''">
|
||||
static_rule_range = #{object.staticRuleRange},
|
||||
</if>
|
||||
<if test="staticRuleFrequency != null and staticRuleFrequency != ''">
|
||||
static_rule_frequency = #{staticRuleFrequency},
|
||||
<if test="object.staticRuleFrequency != null and object.staticRuleFrequency != ''">
|
||||
static_rule_frequency = #{object.staticRuleFrequency},
|
||||
</if>
|
||||
|
||||
</set>
|
||||
where static_rule_id = #{staticRuleId}
|
||||
where static_rule_id = #{id}
|
||||
</update>
|
||||
<update id="updateAuditStatusById">
|
||||
update t_static_rule
|
||||
set static_rule_audit_status = #{auditStatus}
|
||||
where static_rule_id = #{id}
|
||||
</update>
|
||||
<delete id="deleteStaticRules">
|
||||
|
||||
delete from t_static_rule
|
||||
where static_rule_id in
|
||||
<foreach collection="staticRuleIds" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<resultMap id="staticRuleMap" type="com.realtime.protection.configuration.entity.rule.staticrule.StaticRuleObject">
|
||||
@@ -112,9 +121,12 @@
|
||||
</select>
|
||||
|
||||
<select id="queryStaticRuleById" resultMap="staticRuleMap">
|
||||
SELECT *
|
||||
FROM t_static_rule
|
||||
SELECT * FROM t_static_rule
|
||||
WHERE static_rule_id = #{static_rule_id}
|
||||
</select>
|
||||
<select id="queryAuditStatusById" resultType="java.lang.Integer">
|
||||
SELECT static_rule_audit_status FROM t_static_rule
|
||||
WHERE static_rule_id = #{id}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -93,7 +93,7 @@
|
||||
white_list_audit_status = #{object.whiteListAuditStatus},
|
||||
</if>
|
||||
</set>
|
||||
where white_list_id = #{object.whiteListId}
|
||||
where white_list_id = #{id}
|
||||
</update>
|
||||
<update id="updateWhiteListObjectAuditStatus">
|
||||
update t_white_list
|
||||
|
||||
@@ -22,13 +22,12 @@ public class DynamicRuleServiceTest {
|
||||
void testNewDynamicRule() {
|
||||
DynamicRuleObject object = new DynamicRuleObject();
|
||||
object.setDynamicRuleName("UpdateDynamicRule2");
|
||||
object.setDynamicRuleEventType(1);
|
||||
object.setDynamicRuleFrequency(1);
|
||||
object.setDynamicRulePriority(1);
|
||||
object.setDynamicRuleRange("北京");
|
||||
object.setDynamicRuleProtectLevel(2);
|
||||
object.setDynamicRuleSourceSystem(1);
|
||||
object.setProtectObjectIds(List.of(new Integer[]{5521, 5520}));
|
||||
object.setTemplateId(1);
|
||||
//object.setProtectObjectIds(List.of(new Integer[]{5521, 5520}));
|
||||
|
||||
|
||||
Integer objectId = dynamicRuleService.newDynamicRuleObject(object);
|
||||
@@ -37,7 +36,7 @@ public class DynamicRuleServiceTest {
|
||||
|
||||
@Test
|
||||
void testDeleteDynamicRule() {
|
||||
dynamicRuleService.deleteDynamicRuleObject(8);
|
||||
// dynamicRuleService.deleteDynamicRuleObject(8);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -50,15 +49,14 @@ public class DynamicRuleServiceTest {
|
||||
void testUpdateDynamicRule() {
|
||||
DynamicRuleObject object = new DynamicRuleObject();
|
||||
object.setDynamicRuleName("UpdateDynamicRule2");
|
||||
object.setDynamicRuleEventType(1);
|
||||
object.setDynamicRuleFrequency(1);
|
||||
object.setDynamicRulePriority(1);
|
||||
object.setDynamicRuleRange("北京");
|
||||
object.setDynamicRuleProtectLevel(2);
|
||||
object.setDynamicRuleSourceSystem(1);
|
||||
object.setProtectObjectIds(List.of(new Integer[]{5521, 5520}));
|
||||
object.setTemplateId(1);
|
||||
//object.setProtectObjectIds(List.of(new Integer[]{5521, 5520}));
|
||||
|
||||
dynamicRuleService.updateDynamicRuleObject(9, object);
|
||||
dynamicRuleService.updateDynamicRuleObject(2, object);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -58,7 +58,6 @@ public class StaticRuleServiceTest {
|
||||
object.setStaticRulePriority(2);
|
||||
object.setStaticRuleFrequency(1);
|
||||
object.setStaticRuleRange("北京");
|
||||
// object.setStaticRuleProtectLevel(2);
|
||||
|
||||
Integer id = staticRuleService.newStaticRuleObject(object);
|
||||
}
|
||||
@@ -103,7 +102,7 @@ public class StaticRuleServiceTest {
|
||||
object.setStaticRuleRange("北京");
|
||||
// object.setStaticRuleProtectLevel(2);
|
||||
|
||||
staticRuleService.updateStaticRule(object);
|
||||
staticRuleService.updateStaticRule(5, object);
|
||||
}
|
||||
@Test
|
||||
void testQueryStaticRule(){
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.realtime.protection.server.whitelist;
|
||||
|
||||
import com.realtime.protection.configuration.entity.task.Command;
|
||||
import com.realtime.protection.configuration.entity.task.FiveTupleWithMask;
|
||||
import com.realtime.protection.configuration.entity.whitelist.WhiteListObject;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -9,7 +11,7 @@ import org.springframework.boot.test.context.SpringBootTest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
class WhiteListServiceTest {
|
||||
@@ -54,10 +56,10 @@ class WhiteListServiceTest {
|
||||
@Test
|
||||
void testUpdateWhiteList() {
|
||||
WhiteListObject object = new WhiteListObject();
|
||||
object.setWhiteListId(7);
|
||||
//object.setWhiteListId(7);
|
||||
object.setWhiteListName("test_update");
|
||||
|
||||
whiteListService.updateWhiteListObject(object);
|
||||
whiteListService.updateWhiteListObject(7,object);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -72,4 +74,17 @@ class WhiteListServiceTest {
|
||||
whiteListService.updateWhiteListObjectAuditStatus(7, 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testWhiteListCommandJudge() {
|
||||
FiveTupleWithMask fiveTupleWithMask = new FiveTupleWithMask();
|
||||
Command command = new Command();
|
||||
fiveTupleWithMask.setDestinationIP("128.1.1.123");
|
||||
fiveTupleWithMask.setMaskDestinationIP("255.255.255.0");
|
||||
fiveTupleWithMask.setDestinationPort("80");
|
||||
command.setFiveTupleWithMask(fiveTupleWithMask);
|
||||
|
||||
List<WhiteListObject> whitelists = whiteListService.whiteListCommandJudge(command);
|
||||
System.out.println(whitelists);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user