Files
certd/packages/ui/certd-server/src/modules/auto/auto-register-cron.ts
T

86 lines
2.2 KiB
TypeScript
Raw Normal View History

import { Autoload, Config, Init, Inject, Scope, ScopeEnum } from '@midwayjs/core';
import { PipelineService } from '../pipeline/service/pipeline-service.js';
2024-11-04 16:39:02 +08:00
import { logger } from '@certd/basic';
2024-10-03 22:03:49 +08:00
import { SysSettingsService } from '@certd/lib-server';
import { SiteInfoService } from '../monitor/index.js';
import { Cron } from '../cron/cron.js';
2023-01-29 13:44:19 +08:00
@Autoload()
@Scope(ScopeEnum.Request, { allowDowngrade: true })
2023-01-29 13:44:19 +08:00
export class AutoRegisterCron {
@Inject()
pipelineService: PipelineService;
2024-08-13 20:30:42 +08:00
@Config('cron.onlyAdminUser')
private onlyAdminUser: boolean;
2023-01-29 13:44:19 +08:00
// @Inject()
// echoPlugin: EchoPlugin;
@Config('cron.immediateTriggerOnce')
private immediateTriggerOnce = false;
2023-01-29 13:44:19 +08:00
@Config('cron.immediateTriggerSiteMonitor')
private immediateTriggerSiteMonitor = false;
2024-09-20 15:15:24 +08:00
@Inject()
sysSettingsService: SysSettingsService;
@Inject()
siteInfoService: SiteInfoService;
@Inject()
cron: Cron;
2023-01-29 13:44:19 +08:00
@Init()
async init() {
logger.info('加载定时trigger开始');
2024-08-13 20:30:42 +08:00
await this.pipelineService.onStartup(this.immediateTriggerOnce, this.onlyAdminUser);
2024-09-19 17:38:51 +08:00
logger.info('加载定时trigger完成');
2023-01-29 13:44:19 +08:00
//
// const meta = getClassMetadata(CLASS_KEY, this.echoPlugin);
// console.log('meta', meta);
// const metas = listPropertyDataFromClass(CLASS_KEY, this.echoPlugin);
// console.log('metas', metas);
this.registerSiteMonitorCron();
}
registerSiteMonitorCron() {
const job = async () => {
logger.info('站点证书检查开始执行');
let offset = 0;
const limit = 50;
while (true) {
const res = await this.siteInfoService.page({
query: { disabled: false },
page: { offset, limit },
});
const { records } = res;
if (records.length === 0) {
break;
}
offset += records.length;
for (const record of records) {
try {
await this.siteInfoService.doCheck(record, true);
} catch (e) {
logger.error(`站点${record.name}检查出错:`, e);
}
}
}
logger.info('站点证书检查完成');
};
this.cron.register({
name: 'siteMonitor',
cron: '0 0 0 * * *',
job,
});
if (this.immediateTriggerSiteMonitor) {
job();
}
2023-01-29 13:44:19 +08:00
}
}