diff --git a/README.md b/README.md index 3ac7d26..e859a60 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ server主要存放所有的业务逻辑以及Mapper接口。业务逻辑和Mappe 4. log:日志模块,目前无文件 5. rule:规则模块,用于处理静态/动态规则 6. task:任务模块,用于处理任务相关信息 -7. user:用户模块 +7. user:用户模块,用于处理权限系统对接的用户登录等 8. whitelist:白名单模块,用于处理白名单配置 ### Resources diff --git a/src/main/java/com/realtime/protection/configuration/entity/user/UserFull.java b/src/main/java/com/realtime/protection/configuration/entity/user/UserFull.java index 4170673..1a3094a 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/user/UserFull.java +++ b/src/main/java/com/realtime/protection/configuration/entity/user/UserFull.java @@ -22,7 +22,7 @@ public class UserFull { public String employeeNumber; public String name; public Object resoures; - + public Object orgCode; diff --git a/src/main/java/com/realtime/protection/configuration/response/AuditAdvice.java b/src/main/java/com/realtime/protection/configuration/response/AuditAdvice.java index fa2fc87..02eec2b 100644 --- a/src/main/java/com/realtime/protection/configuration/response/AuditAdvice.java +++ b/src/main/java/com/realtime/protection/configuration/response/AuditAdvice.java @@ -264,8 +264,8 @@ public class AuditAdvice implements ResponseBodyAdvice { 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 { 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 { return body; } - AuditRes auditRes = new AuditRes(auditData); - log.info("auditData-----------:"+auditRes.toString()); +// AuditRes auditRes = new AuditRes(auditData); + log.info("auditData-----------:"+auditData.toString()); Mono 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 { @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()), diff --git a/src/main/java/com/realtime/protection/server/command/CommandMapper.java b/src/main/java/com/realtime/protection/server/command/CommandMapper.java index 54002ad..646102f 100644 --- a/src/main/java/com/realtime/protection/server/command/CommandMapper.java +++ b/src/main/java/com/realtime/protection/server/command/CommandMapper.java @@ -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); } diff --git a/src/main/java/com/realtime/protection/server/command/CommandService.java b/src/main/java/com/realtime/protection/server/command/CommandService.java index 4967434..be84e68 100644 --- a/src/main/java/com/realtime/protection/server/command/CommandService.java +++ b/src/main/java/com/realtime/protection/server/command/CommandService.java @@ -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); + } } diff --git a/src/main/java/com/realtime/protection/server/task/status/StateChangeService.java b/src/main/java/com/realtime/protection/server/task/status/StateChangeService.java index 8abced2..25ac973 100644 --- a/src/main/java/com/realtime/protection/server/task/status/StateChangeService.java +++ b/src/main/java/com/realtime/protection/server/task/status/StateChangeService.java @@ -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; diff --git a/src/main/java/com/realtime/protection/server/task/status/StateHandler.java b/src/main/java/com/realtime/protection/server/task/status/StateHandler.java index 6b30b7e..dd241b4 100644 --- a/src/main/java/com/realtime/protection/server/task/status/StateHandler.java +++ b/src/main/java/com/realtime/protection/server/task/status/StateHandler.java @@ -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); diff --git a/src/main/resources/mappers/CommandMapper.xml b/src/main/resources/mappers/CommandMapper.xml index 802e25e..3ebb6af 100644 --- a/src/main/resources/mappers/CommandMapper.xml +++ b/src/main/resources/mappers/CommandMapper.xml @@ -1008,6 +1008,123 @@ from t_command where COMMAND_ID = #{command_id} + + 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} +