1、指令状态记录bug fix
2、审计日志中心修改同步
3、User实体增加中心权限系统新添加字段
This commit is contained in:
PushM
2024-08-29 00:56:46 +08:00
parent 02fc8feb0a
commit a956a5080a
8 changed files with 189 additions and 48 deletions

View File

@@ -32,7 +32,7 @@ server主要存放所有的业务逻辑以及Mapper接口。业务逻辑和Mappe
4. log日志模块目前无文件
5. rule规则模块用于处理静态/动态规则
6. task任务模块用于处理任务相关信息
7. user用户模块
7. user用户模块,用于处理权限系统对接的用户登录等
8. whitelist白名单模块用于处理白名单配置
### Resources

View File

@@ -22,7 +22,7 @@ public class UserFull {
public String employeeNumber;
public String name;
public Object resoures;
public Object orgCode;

View File

@@ -264,8 +264,8 @@ public class AuditAdvice implements ResponseBodyAdvice<ResponseResult> {
private final WebClient webClient = WebClient
.builder()
// .baseUrl("http://39.105.210.156:8090/chanct-log/audit-xgs")
.baseUrl("http://10.58.44.241:1888/api/chanct-log/audit-xgs")
// .baseUrl("http://10.58.44.241:1888/magic-api/audit/save")
// .baseUrl("http://10.58.44.241:1888/api/chanct-log/audit-xgs")
.baseUrl("http://10.58.44.241:1888/magic-api/audit")
.build();
@Data
@@ -314,11 +314,12 @@ public class AuditAdvice implements ResponseBodyAdvice<ResponseResult> {
if (request.getURI().getPath().contains("query")
|| request.getURI().getPath().contains("swagger")
|| request.getURI().getPath().contains("dict")
|| request.getURI().getPath().contains("statistics")){
|| request.getURI().getPath().contains("statistics")
|| request.getURI().getPath().contains("auth")){
return body;
}
AuditData auditData ;
AuditDataNew auditData ;
try {
auditData = getAuditData(body, request);
} catch (Exception e) {
@@ -326,13 +327,13 @@ public class AuditAdvice implements ResponseBodyAdvice<ResponseResult> {
return body;
}
AuditRes auditRes = new AuditRes(auditData);
log.info("auditData-----------:"+auditRes.toString());
// AuditRes auditRes = new AuditRes(auditData);
log.info("auditData-----------:"+auditData.toString());
Mono<String> mono = webClient
.post()
.uri("/save")
.bodyValue(auditRes)
.bodyValue(auditData)
.exchangeToMono(res -> {
if (res.statusCode().equals(HttpStatus.OK)) {
log.info("发送审计日志成功:{}",res.statusCode());
@@ -395,41 +396,48 @@ public class AuditAdvice implements ResponseBodyAdvice<ResponseResult> {
@NotNull
private static AuditData getAuditData(ResponseResult body, ServerHttpRequest request) throws IOException {
private static AuditDataNew getAuditData(ResponseResult body, ServerHttpRequest request) throws IOException {
HttpSession session = ((ServletServerHttpRequest) request).getServletRequest().getSession();
AuditData auditData;
AuditDataNew auditData;
log.info(request.getHeaders().getFirst("X-Forwarded-For"));
String requestBody = request.getBody().toString();
if(session==null || session.getAttribute("user")==null){
auditData = new AuditData(
"0000000","0000000","NSADD管理员","组织树",
extractFirstIpAddress(request.getHeaders().getFirst("X-Forwarded-For")),
// auditData = new AuditData(
// "0000000","0000000","NSADD管理员","组织树",
// extractFirstIpAddress(request.getHeaders().getFirst("X-Forwarded-For")),
// getTag(request.getURI().getPath()),
// getSummary(request.getURI().getPath()),
// body.toString(),
// String.format("名称:%s, 操作:%s, 请求内容:%s, 是否成功:%s, 响应内容:%s",
// getTag(request.getURI().getPath()),
// getSummary(request.getURI().getPath()),
// request.getURI().getPath(),
// body.getCode()==200?"成功":"失败",
// body.toString())
// );
auditData = new AuditDataNew(
"NSADD管理员",extractFirstIpAddress(request.getHeaders().getFirst("X-Forwarded-For")),
"xgs","组织树",
getTag(request.getURI().getPath()),
getSummary(request.getURI().getPath()),
body.toString(),
// body.toString()+" "+request.getURI().getPath()
String.format("名称:%s, 操作:%s, 请求内容:%s, 是否成功:%s, 响应内容:%s",
getTag(request.getURI().getPath()),
getSummary(request.getURI().getPath()),
request.getURI().getPath(),
body.getCode()==200?"成功":"失败",
body.toString())
body.toString()
)
);
// auditData = new AuditData(
// "NSADD管理员",extractFirstIpAddress(request.getHeaders().getFirst("X-Forwarded-For"))
// "xgs","组织树",
// getTag(request.getURI().getPath()),
// getSummary(request.getURI().getPath()),
// body.toString()+" "+request.getURI().getPath()
// );
}else {
UserFull user = (UserFull) session.getAttribute("user");
auditData = new AuditData(
user.uid, user.getOrgCode(),user.name, user.getOrgName(),
extractFirstIpAddress(request.getHeaders().getFirst("X-Forwarded-For")),
auditData = new AuditDataNew(
user.name, extractFirstIpAddress(request.getHeaders().getFirst("X-Forwarded-For")),
user.getOrgName(), user.getOrgCode(),
getTag(request.getURI().getPath()),
getSummary(request.getURI().getPath()),
body.toString(),
// body.toString(),
String.format("名称:%s, 操作:%s, 请求内容:%s, 是否成功:%s, 响应内容:%s",
getTag(request.getURI().getPath()),
getSummary(request.getURI().getPath()),

View File

@@ -107,4 +107,10 @@ public interface CommandMapper {
@Param("log_id")String logId,
@Param("command_status")Integer commandStatus,
@Param("effective_time")LocalDateTime lastTrafficQueryTime);
void insertCommandHistoryWithStatusWithTimeWithTraffic(@Param("command_id")String commandUUID,
@Param("log_id")String logId,
@Param("command_status") Integer commandStatusNum,
@Param("effective_time")LocalDateTime lastRCPQueryTime,
@Param("traffic_num") Long totalPacketNum);
}

View File

@@ -375,4 +375,9 @@ public class CommandService {
String logId = UUID.randomUUID().toString();
commandMapper.insertCommandHistoryWithStatusWithTime(commandUUID, logId, commandStatus, lastTrafficQueryTime);
}
public void insertCommandHistoryWithTimeWithTraffic(String commandUUID, Integer commandStatusNum, LocalDateTime lastRCPQueryTime, Long totalPacketNum) {
String logId = UUID.randomUUID().toString();
commandMapper.insertCommandHistoryWithStatusWithTimeWithTraffic(commandUUID, logId, commandStatusNum, lastRCPQueryTime, totalPacketNum);
}
}

View File

@@ -161,27 +161,30 @@ public class StateChangeService {
//全为成功
try {
changeState(StateEnum.RUNNING_SUCCESS.getStateNum(), taskId, true);
continue;
} catch (Exception e) {
log.warn(String.format("任务%d从%s状态变为运行中RUNNING_SUCCESS状态遭遇异常%s",
taskId, taskService.queryTaskStatus(taskId), e.getMessage()));
}
} else if (commandStatusList.stream().anyMatch(status -> status == null || status == 0)) {
}
if (commandStatusList.stream().anyMatch(status -> status == null || status == 0)) {
//部分成功
try {
changeState(StateEnum.RUNNING_PARTIAL_SUCCESS.getStateNum(), taskId, true);
continue;
} catch (Exception e) {
log.warn(String.format("任务%d从%s状态变为运行中RUNNING_PARTIAL_SUCCESS状态遭遇异常%s",
taskId, taskService.queryTaskStatus(taskId), e.getMessage()));
}
}else{
//全失败
try {
changeState(StateEnum.RUNNING_FAILED.getStateNum(), taskId, true);
} catch (Exception e) {
log.warn(String.format("任务%d从%s状态变为运行中RUNNING_FAILED状态遭遇异常%s",
taskId, taskService.queryTaskStatus(taskId), e.getMessage()));
}
}
//全失败
try {
changeState(StateEnum.RUNNING_FAILED.getStateNum(), taskId, true);
} catch (Exception e) {
log.warn(String.format("任务%d从%s状态变为运行中RUNNING_FAILED状态遭遇异常%s",
taskId, taskService.queryTaskStatus(taskId), e.getMessage()));
}
}
}
@@ -217,20 +220,22 @@ public class StateChangeService {
log.info("rcp命中查询{}{}",taskCommandInfo.getRcpHitCount(), commandLogLatest.getRcpHitCount());
if (taskCommandInfo.getRcpHitCount()!=null && commandLogLatest.getRcpHitCount()==null) {
//更新log表rcp命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(),
CommandStatusEnum.RCPHIT.getCommandStatusNum(), taskCommandInfo.getLastRCPQueryTime());
commandService.insertCommandHistoryWithTimeWithTraffic(taskCommandInfo.getUUID(),
CommandStatusEnum.RCPHIT.getCommandStatusNum(), taskCommandInfo.getLastRCPQueryTime(),
commandLogLatest.getTotalPacketNum());
}
if (taskCommandInfo.getRcpHitCount()!=null && commandLogLatest.getRcpHitCount()!=null) {
if (taskCommandInfo.getRcpHitCount() > commandLogLatest.getRcpHitCount()) {
//更新log表rcp命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(),
CommandStatusEnum.RCPHIT.getCommandStatusNum(), taskCommandInfo.getLastRCPQueryTime());
commandService.insertCommandHistoryWithTimeWithTraffic(taskCommandInfo.getUUID(),
CommandStatusEnum.RCPHIT.getCommandStatusNum(), taskCommandInfo.getLastRCPQueryTime(),
commandLogLatest.getTotalPacketNum());
}
}
log.info("流量命中查询:{}{}",taskCommandInfo.getTotalPacketNum(), commandLogLatest.getTotalPacketNum());
if (taskCommandInfo.getTotalPacketNum()==null && commandLogLatest.getTotalPacketNum()!=null) {
if (taskCommandInfo.getTotalPacketNum()!=null && commandLogLatest.getTotalPacketNum()==null) {
//更新log表流量命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(),
CommandStatusEnum.FLOWHIT.getCommandStatusNum(),taskCommandInfo.getLastTrafficQueryTime());
@@ -255,16 +260,16 @@ public class StateChangeService {
{
log.info("流量命中查询:{}{}",taskCommandInfo.getTotalPacketNum(), commandLogLatest.getTotalPacketNum());
if (taskCommandInfo.getTotalPacketNum()==null && commandLogLatest.getTotalPacketNum()!=null) {
if (taskCommandInfo.getTotalPacketNum()!=null && commandLogLatest.getTotalPacketNum()==null) {
//更新log表流量命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(),
CommandStatusEnum.FLOWHIT.getCommandStatusNum(),taskCommandInfo.getLastTrafficQueryTime());
commandService.insertCommandHistory(taskCommandInfo.getUUID(),
CommandStatusEnum.FLOWHIT.getCommandStatusNum());
}
if (taskCommandInfo.getTotalPacketNum()!=null && commandLogLatest.getTotalPacketNum()!=null) {
if (taskCommandInfo.getTotalPacketNum() > commandLogLatest.getTotalPacketNum()) {
//更新log表流量命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(),
CommandStatusEnum.FLOWHIT.getCommandStatusNum(),taskCommandInfo.getLastTrafficQueryTime());
commandService.insertCommandHistory(taskCommandInfo.getUUID(),
CommandStatusEnum.FLOWHIT.getCommandStatusNum());
}
}
continue;

View File

@@ -126,7 +126,7 @@ public class StateHandler {
return true;
}
protected Boolean handleRunningFail(CommandService commandService, TaskService taskService, Long taskId) {
protected Boolean handleRunningSuccess(CommandService commandService, TaskService taskService, Long taskId) {
//查询任务状态
Integer taskStatusNum = taskService.queryTaskStatus(taskId);
@@ -158,7 +158,7 @@ public class StateHandler {
return true;
}
protected Boolean handleRunningSuccess(CommandService commandService, TaskService taskService, Long taskId) {
protected Boolean handleRunningFail(CommandService commandService, TaskService taskService, Long taskId) {
///查询任务状态
Integer taskStatusNum = taskService.queryTaskStatus(taskId);

View File

@@ -1008,6 +1008,123 @@
from t_command
where COMMAND_ID = #{command_id}
</insert>
<insert id="insertCommandHistoryWithStatusWithTimeWithTraffic">
insert into t_command_log(
log_uuid,
effective_time,
expire_time,
TASK_ID,
RULE_ID,
COMMAND_ID,
TASKTYPE,
ADDR_TYPE,
SRC_IP,
SRC_PORT,
DST_IP,
DST_PORT,
PROTOCOL,
MASK_SRC_IP,
MASK_SRC_PORT,
MASK_DST_IP,
MASK_DST_PORT,
MASK_PROTOCOL,
TASK_ACT,
EVENTTYPE,
TASKNAME,
DISTRIBUTEPOINT,
DEPARTMENT,
FREQUENCY,
VALID_TIME,
INVALID_TIME,
IS_VALID,
IS_JUDGED,
SEND_TIMES,
SUCCESS_TIMES,
FIRST_SEND_TIME,
LAST_SEND_TIME,
CREATE_TIME,
LAST_UPDATE,
IS_DELETED,
RULE_NAME,
RCP_HIT_COUNT,
TOTAL_PACKET_NUM,
TOTAL_BYTE_NUM,
EFFECTIVE_EQUIPMENT_NUM,
AVERAGE_LATENCY,
MAX_LATENCY,
MIN_LATENCY,
c2s_pkt_num,
s2c_pkt_num,
c2s_byte_num,
s2c_byte_num,
display_id,
session_num,
first_effect_time,
last_rcp_query_time,
last_traffic_query_time,
sip_int,
dip_int,
command_status
)
select
#{log_id},
#{effective_time},
NULL,
TASK_ID,
RULE_ID,
COMMAND_ID,
TASKTYPE,
ADDR_TYPE,
SRC_IP,
SRC_PORT,
DST_IP,
DST_PORT,
PROTOCOL,
MASK_SRC_IP,
MASK_SRC_PORT,
MASK_DST_IP,
MASK_DST_PORT,
MASK_PROTOCOL,
TASK_ACT,
EVENTTYPE,
TASKNAME,
DISTRIBUTEPOINT,
DEPARTMENT,
FREQUENCY,
VALID_TIME,
INVALID_TIME,
IS_VALID,
IS_JUDGED,
SEND_TIMES,
SUCCESS_TIMES,
FIRST_SEND_TIME,
LAST_SEND_TIME,
CREATE_TIME,
LAST_UPDATE,
IS_DELETED,
RULE_NAME,
RCP_HIT_COUNT,
#{traffic_num},
TOTAL_BYTE_NUM,
EFFECTIVE_EQUIPMENT_NUM,
AVERAGE_LATENCY,
MAX_LATENCY,
MIN_LATENCY,
c2s_pkt_num,
s2c_pkt_num,
c2s_byte_num,
s2c_byte_num,
display_id,
session_num,
first_effect_time,
last_rcp_query_time,
last_traffic_query_time,
sip_int,
dip_int,
#{command_status}
from t_command
where COMMAND_ID = #{command_id}
</insert>
<resultMap id="commandLogMap" type="com.realtime.protection.configuration.entity.task.TaskCommandInfo">
<id column="log_uuid" property="logUUID"/>