summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortanghao <admin@LAPTOP-QCSKVLI9>2021-07-15 17:52:47 +0800
committertanghao <admin@LAPTOP-QCSKVLI9>2021-07-15 17:52:47 +0800
commitd0a2dcebf90e24417dda60865fbdf52dcbf03ebf (patch)
treead0524080623ce2e6939222150f9dacc08491783
parente19aa5c5bc7610a3986033c330cecf154f23d049 (diff)
fix: NEZ-837 terminal local retention 本地保存时间 设置未生效
-rw-r--r--nz-admin/src/main/java/com/nis/common/job/JobConfig.java15
-rw-r--r--nz-admin/src/main/java/com/nis/modules/terminal/job/TerminalCleanRecordJob.java67
2 files changed, 81 insertions, 1 deletions
diff --git a/nz-admin/src/main/java/com/nis/common/job/JobConfig.java b/nz-admin/src/main/java/com/nis/common/job/JobConfig.java
index 1db8fa21..08298de9 100644
--- a/nz-admin/src/main/java/com/nis/common/job/JobConfig.java
+++ b/nz-admin/src/main/java/com/nis/common/job/JobConfig.java
@@ -8,6 +8,8 @@ import com.nis.modules.asset.job.AssetFeatureJob;
import com.nis.modules.asset.job.AssetPingStatusJob;
import com.nis.modules.endpoint.job.EndpointStateJob;
import com.nis.modules.sys.job.SessionTimeOutJob;
+import com.nis.modules.terminal.job.TerminalCleanRecordJob;
+
import org.apache.commons.lang.StringUtils;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
@@ -53,6 +55,9 @@ public class JobConfig {
@Value("${nezha.sessionTimeOutJobCron:0 0/5 * * * ? *}")
private String sessionTimeOutJobCron;
+ @Value("${nezha.terminalCleanJobCron:0 0 1 * * ?}")
+ private String terminalCleanJobCron;
+
@Autowired
// @Qualifier("costomSchedulerFactoryBean")
private SchedulerFactoryBean schedulerFactoryBean;
@@ -65,7 +70,7 @@ public class JobConfig {
private String endpointStateJobName = "ENDPOINTSTATE_JOB";
private String haJobName = "HA_JOB";
private String sessionTimeOutJobName = "SESSIONTIMEOUT_JOB";
-
+ private String terminalCleanJobCronName = "TERMINALCLEAN_JOB";
@Bean
public JobDetail agentCronJobDetail() {
return JobBuilder.newJob(AgentJob.class).withIdentity(JOB_NAME + agentJobName).storeDurably().build();
@@ -106,6 +111,11 @@ public class JobConfig {
return JobBuilder.newJob(SessionTimeOutJob.class).withIdentity(JOB_NAME + sessionTimeOutJobName).storeDurably().build();
}
+ @Bean
+ public JobDetail terminalCleanJobDetail() {
+ return JobBuilder.newJob(TerminalCleanRecordJob.class).withIdentity(JOB_NAME + terminalCleanJobCronName).storeDurably().build();
+ }
+
@PostConstruct
public void init() throws SchedulerException {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
@@ -133,6 +143,9 @@ public class JobConfig {
createCronScheduleJob(alertMessageExpiredJobName, alertMessageExpiredDetail(), StringUtils.isEmpty(alertMessageExpiredJobCron) ? "0/10 * * * * ?" : alertMessageExpiredJobCron, scheduler);
// session time out job 如果配置文件没有配置定时周期 默认为5分钟执行一次
createCronScheduleJob(sessionTimeOutJobName, sessionTimeOutJobDetail(), StringUtils.isEmpty(sessionTimeOutJobCron) ? "0 0/5 * * * ? *" : sessionTimeOutJobCron, scheduler);
+
+ // terminal clean job 如果配置文件没有配置定时周期 每天凌晨1点执行一次
+ createCronScheduleJob(terminalCleanJobCronName, terminalCleanJobDetail(), StringUtils.isEmpty(terminalCleanJobCron) ? "0 0 1 * * ?" : terminalCleanJobCron, scheduler);
}
/**
diff --git a/nz-admin/src/main/java/com/nis/modules/terminal/job/TerminalCleanRecordJob.java b/nz-admin/src/main/java/com/nis/modules/terminal/job/TerminalCleanRecordJob.java
new file mode 100644
index 00000000..c207c139
--- /dev/null
+++ b/nz-admin/src/main/java/com/nis/modules/terminal/job/TerminalCleanRecordJob.java
@@ -0,0 +1,67 @@
+package com.nis.modules.terminal.job;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.quartz.DisallowConcurrentExecution;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.nis.common.utils.Tool;
+import com.nis.common.utils.ToolUtil;
+import com.nis.modules.sys.entity.SysConfigEntity;
+import com.nis.modules.sys.service.SysConfigService;
+import com.nis.modules.terminal.config.TerminalSession;
+import com.nis.modules.terminal.entity.TerminalCmd;
+import com.nis.modules.terminal.entity.TerminalRecord;
+import com.nis.modules.terminal.entity.TerminalSessionEntity;
+import com.nis.modules.terminal.service.TerminalCmdService;
+import com.nis.modules.terminal.service.TerminalRecordService;
+import com.nis.modules.terminal.service.TerminalSessionService;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.log.Log;
+
+@DisallowConcurrentExecution
+public class TerminalCleanRecordJob extends QuartzJobBean {
+
+ private Log log = Log.get();
+
+ @Autowired
+ private TerminalRecordService terminalRecordService;
+
+ @Autowired
+ private TerminalSessionService terminalSessionService;
+
+ @Autowired
+ private TerminalCmdService terminalCmdService;
+
+ @Autowired
+ private SysConfigService sysConfigService;
+ @Override
+ protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
+ // 获取配置文件中terminal_record_local_retention的值
+ SysConfigEntity sysConfig = sysConfigService.getOne(new QueryWrapper<SysConfigEntity>().lambda().eq(SysConfigEntity::getParamKey, "terminal_record_local_retention"));
+ String value = sysConfig.getParamValue();
+ Integer day = Integer.valueOf(value);
+
+ //获取当前时间 day天以前的时间
+ DateTime nowDate = Tool.DateUtil.date();
+ DateTime offsetSecond = Tool.DateUtil.offsetSecond(nowDate,-(day*24*60*60));
+
+ List<TerminalSessionEntity> list = terminalSessionService.list(new QueryWrapper<TerminalSessionEntity>().lambda().le(TerminalSessionEntity::getStartTime, offsetSecond));
+
+ if(ToolUtil.isNotEmpty(list)) {
+ log.debug("remove terminal session info {}",JSON.toJSON(list));
+ List<String> uuids = list.stream().map(TerminalSessionEntity::getUuid).collect(Collectors.toList());
+ terminalCmdService.remove(new QueryWrapper<TerminalCmd>().lambda().in(TerminalCmd::getUuid, uuids));
+ terminalRecordService.remove(new QueryWrapper<TerminalRecord>().lambda().in(TerminalRecord::getUuid, uuids));
+ terminalSessionService.remove(new QueryWrapper<TerminalSessionEntity>().lambda().in(TerminalSessionEntity::getUuid, uuids));
+ }
+ log.debug("remove terminal end");
+ }
+}