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日志模块目前无文件 4. log日志模块目前无文件
5. rule规则模块用于处理静态/动态规则 5. rule规则模块用于处理静态/动态规则
6. task任务模块用于处理任务相关信息 6. task任务模块用于处理任务相关信息
7. user用户模块 7. user用户模块,用于处理权限系统对接的用户登录等
8. whitelist白名单模块用于处理白名单配置 8. whitelist白名单模块用于处理白名单配置
### Resources ### Resources

View File

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

View File

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

View File

@@ -107,4 +107,10 @@ public interface CommandMapper {
@Param("log_id")String logId, @Param("log_id")String logId,
@Param("command_status")Integer commandStatus, @Param("command_status")Integer commandStatus,
@Param("effective_time")LocalDateTime lastTrafficQueryTime); @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(); String logId = UUID.randomUUID().toString();
commandMapper.insertCommandHistoryWithStatusWithTime(commandUUID, logId, commandStatus, lastTrafficQueryTime); 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,19 +161,22 @@ public class StateChangeService {
//全为成功 //全为成功
try { try {
changeState(StateEnum.RUNNING_SUCCESS.getStateNum(), taskId, true); changeState(StateEnum.RUNNING_SUCCESS.getStateNum(), taskId, true);
continue;
} catch (Exception e) { } catch (Exception e) {
log.warn(String.format("任务%d从%s状态变为运行中RUNNING_SUCCESS状态遭遇异常%s", log.warn(String.format("任务%d从%s状态变为运行中RUNNING_SUCCESS状态遭遇异常%s",
taskId, taskService.queryTaskStatus(taskId), e.getMessage())); 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 { try {
changeState(StateEnum.RUNNING_PARTIAL_SUCCESS.getStateNum(), taskId, true); changeState(StateEnum.RUNNING_PARTIAL_SUCCESS.getStateNum(), taskId, true);
continue;
} catch (Exception e) { } catch (Exception e) {
log.warn(String.format("任务%d从%s状态变为运行中RUNNING_PARTIAL_SUCCESS状态遭遇异常%s", log.warn(String.format("任务%d从%s状态变为运行中RUNNING_PARTIAL_SUCCESS状态遭遇异常%s",
taskId, taskService.queryTaskStatus(taskId), e.getMessage())); taskId, taskService.queryTaskStatus(taskId), e.getMessage()));
} }
}else{ }
//全失败 //全失败
try { try {
changeState(StateEnum.RUNNING_FAILED.getStateNum(), taskId, true); changeState(StateEnum.RUNNING_FAILED.getStateNum(), taskId, true);
@@ -181,7 +184,7 @@ public class StateChangeService {
log.warn(String.format("任务%d从%s状态变为运行中RUNNING_FAILED状态遭遇异常%s", log.warn(String.format("任务%d从%s状态变为运行中RUNNING_FAILED状态遭遇异常%s",
taskId, taskService.queryTaskStatus(taskId), e.getMessage())); taskId, taskService.queryTaskStatus(taskId), e.getMessage()));
} }
}
} }
} }
@@ -217,20 +220,22 @@ public class StateChangeService {
log.info("rcp命中查询{}{}",taskCommandInfo.getRcpHitCount(), commandLogLatest.getRcpHitCount()); log.info("rcp命中查询{}{}",taskCommandInfo.getRcpHitCount(), commandLogLatest.getRcpHitCount());
if (taskCommandInfo.getRcpHitCount()!=null && commandLogLatest.getRcpHitCount()==null) { if (taskCommandInfo.getRcpHitCount()!=null && commandLogLatest.getRcpHitCount()==null) {
//更新log表rcp命中 //更新log表rcp命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(), commandService.insertCommandHistoryWithTimeWithTraffic(taskCommandInfo.getUUID(),
CommandStatusEnum.RCPHIT.getCommandStatusNum(), taskCommandInfo.getLastRCPQueryTime()); CommandStatusEnum.RCPHIT.getCommandStatusNum(), taskCommandInfo.getLastRCPQueryTime(),
commandLogLatest.getTotalPacketNum());
} }
if (taskCommandInfo.getRcpHitCount()!=null && commandLogLatest.getRcpHitCount()!=null) { if (taskCommandInfo.getRcpHitCount()!=null && commandLogLatest.getRcpHitCount()!=null) {
if (taskCommandInfo.getRcpHitCount() > commandLogLatest.getRcpHitCount()) { if (taskCommandInfo.getRcpHitCount() > commandLogLatest.getRcpHitCount()) {
//更新log表rcp命中 //更新log表rcp命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(), commandService.insertCommandHistoryWithTimeWithTraffic(taskCommandInfo.getUUID(),
CommandStatusEnum.RCPHIT.getCommandStatusNum(), taskCommandInfo.getLastRCPQueryTime()); CommandStatusEnum.RCPHIT.getCommandStatusNum(), taskCommandInfo.getLastRCPQueryTime(),
commandLogLatest.getTotalPacketNum());
} }
} }
log.info("流量命中查询:{}{}",taskCommandInfo.getTotalPacketNum(), commandLogLatest.getTotalPacketNum()); log.info("流量命中查询:{}{}",taskCommandInfo.getTotalPacketNum(), commandLogLatest.getTotalPacketNum());
if (taskCommandInfo.getTotalPacketNum()==null && commandLogLatest.getTotalPacketNum()!=null) { if (taskCommandInfo.getTotalPacketNum()!=null && commandLogLatest.getTotalPacketNum()==null) {
//更新log表流量命中 //更新log表流量命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(), commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(),
CommandStatusEnum.FLOWHIT.getCommandStatusNum(),taskCommandInfo.getLastTrafficQueryTime()); CommandStatusEnum.FLOWHIT.getCommandStatusNum(),taskCommandInfo.getLastTrafficQueryTime());
@@ -255,16 +260,16 @@ public class StateChangeService {
{ {
log.info("流量命中查询:{}{}",taskCommandInfo.getTotalPacketNum(), commandLogLatest.getTotalPacketNum()); log.info("流量命中查询:{}{}",taskCommandInfo.getTotalPacketNum(), commandLogLatest.getTotalPacketNum());
if (taskCommandInfo.getTotalPacketNum()==null && commandLogLatest.getTotalPacketNum()!=null) { if (taskCommandInfo.getTotalPacketNum()!=null && commandLogLatest.getTotalPacketNum()==null) {
//更新log表流量命中 //更新log表流量命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(), commandService.insertCommandHistory(taskCommandInfo.getUUID(),
CommandStatusEnum.FLOWHIT.getCommandStatusNum(),taskCommandInfo.getLastTrafficQueryTime()); CommandStatusEnum.FLOWHIT.getCommandStatusNum());
} }
if (taskCommandInfo.getTotalPacketNum()!=null && commandLogLatest.getTotalPacketNum()!=null) { if (taskCommandInfo.getTotalPacketNum()!=null && commandLogLatest.getTotalPacketNum()!=null) {
if (taskCommandInfo.getTotalPacketNum() > commandLogLatest.getTotalPacketNum()) { if (taskCommandInfo.getTotalPacketNum() > commandLogLatest.getTotalPacketNum()) {
//更新log表流量命中 //更新log表流量命中
commandService.insertCommandHistoryWithTime(taskCommandInfo.getUUID(), commandService.insertCommandHistory(taskCommandInfo.getUUID(),
CommandStatusEnum.FLOWHIT.getCommandStatusNum(),taskCommandInfo.getLastTrafficQueryTime()); CommandStatusEnum.FLOWHIT.getCommandStatusNum());
} }
} }
continue; continue;

View File

@@ -126,7 +126,7 @@ public class StateHandler {
return true; 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); Integer taskStatusNum = taskService.queryTaskStatus(taskId);
@@ -158,7 +158,7 @@ public class StateHandler {
return true; 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); Integer taskStatusNum = taskService.queryTaskStatus(taskId);

View File

@@ -1008,6 +1008,123 @@
from t_command from t_command
where COMMAND_ID = #{command_id} where COMMAND_ID = #{command_id}
</insert> </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"> <resultMap id="commandLogMap" type="com.realtime.protection.configuration.entity.task.TaskCommandInfo">
<id column="log_uuid" property="logUUID"/> <id column="log_uuid" property="logUUID"/>