From e2099ac9ca344bc70bfa4219002e9138708973ae Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Fri, 13 Jun 2025 00:25:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=87=8D=E8=AF=95?= =?UTF-8?q?=E6=AC=A1=E6=95=B0=E8=AE=BE=E7=BD=AE=E6=97=A0=E6=95=88=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/certd/monitor/site/crud.tsx | 2 +- .../src/views/certd/monitor/site/ip/crud.tsx | 2 +- .../modules/monitor/service/site-info-service.ts | 13 ++++++------- .../src/modules/monitor/service/site-ip-service.ts | 8 ++++---- .../src/modules/monitor/service/site-tester.ts | 6 +++--- .../plugins/plugin-notification/telegram/index.ts | 3 ++- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/crud.tsx b/packages/ui/certd-client/src/views/certd/monitor/site/crud.tsx index abba9c88..5607d9c9 100644 --- a/packages/ui/certd-client/src/views/certd/monitor/site/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/monitor/site/crud.tsx @@ -130,7 +130,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat await api.DoCheck(row.id); await crudExpose.doRefresh(); notification.success({ - message: "检查完成", + message: "检查任务已提交,请稍后刷新查看结果", }); }, }, diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/ip/crud.tsx b/packages/ui/certd-client/src/views/certd/monitor/site/ip/crud.tsx index 1f7efe97..1fb77a2a 100644 --- a/packages/ui/certd-client/src/views/certd/monitor/site/ip/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/monitor/site/ip/crud.tsx @@ -137,7 +137,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat await api.DoCheck(row.id); await crudExpose.doRefresh(); notification.success({ - message: "检查任务已提交", + message: "检查任务已提交,请稍后刷新查看结果", }); }, }, diff --git a/packages/ui/certd-server/src/modules/monitor/service/site-info-service.ts b/packages/ui/certd-server/src/modules/monitor/service/site-info-service.ts index c6700421..7ed520f2 100644 --- a/packages/ui/certd-server/src/modules/monitor/service/site-info-service.ts +++ b/packages/ui/certd-server/src/modules/monitor/service/site-info-service.ts @@ -104,7 +104,7 @@ export class SiteInfoService extends BaseService { * @param notify * @param retryTimes */ - async doCheck(site: SiteInfoEntity, notify = true, retryTimes = 3) { + async doCheck(site: SiteInfoEntity, notify = true, retryTimes = null) { if (!site?.domain) { throw new Error("站点域名不能为空"); } @@ -152,7 +152,7 @@ export class SiteInfoService extends BaseService { //检查ip - await this.checkAllIp(site); + await this.checkAllIp(site,retryTimes); if (!notify) { return; @@ -181,7 +181,7 @@ export class SiteInfoService extends BaseService { } } - async checkAllIp(site: SiteInfoEntity) { + async checkAllIp(site: SiteInfoEntity,retryTimes = null) { if (!site.ipCheck) { return; } @@ -225,7 +225,7 @@ export class SiteInfoService extends BaseService { logger.error("send notify error", e); } }; - await this.siteIpService.checkAll(site, onFinished); + await this.siteIpService.checkAll(site, retryTimes,onFinished); } /** @@ -234,7 +234,7 @@ export class SiteInfoService extends BaseService { * @param notify * @param retryTimes */ - async check(id: number, notify = false, retryTimes = 3) { + async check(id: number, notify = false, retryTimes = null) { const site = await this.info(id); if (!site) { throw new Error("站点不存在"); @@ -326,7 +326,6 @@ export class SiteInfoService extends BaseService { return setting; } for (const site of sites) { - let retryTimes = 3; const setting = await getFromCache(site.userId) if (isCommon) { //公共的检查,排除有设置cron的用户 @@ -334,8 +333,8 @@ export class SiteInfoService extends BaseService { //设置了cron,跳过公共检查 continue; } - retryTimes = setting.retryTimes??retryTimes } + let retryTimes = setting?.retryTimes this.doCheck(site,true,retryTimes).catch(e => { logger.error(`检查站点证书失败,${site.domain}`, e.message); }); diff --git a/packages/ui/certd-server/src/modules/monitor/service/site-ip-service.ts b/packages/ui/certd-server/src/modules/monitor/service/site-ip-service.ts index bf7ba7e8..65ca5fef 100644 --- a/packages/ui/certd-server/src/modules/monitor/service/site-ip-service.ts +++ b/packages/ui/certd-server/src/modules/monitor/service/site-ip-service.ts @@ -88,7 +88,7 @@ export class SiteIpService extends BaseService { await this.updateIpCount(entity.id) } - async check(ipId: number, domain: string, port: number) { + async check(ipId: number, domain: string, port: number,retryTimes = null) { if(!ipId){ return } @@ -105,7 +105,7 @@ export class SiteIpService extends BaseService { const res = await siteTester.test({ host: domain, port: port, - retryTimes: 3, + retryTimes : retryTimes??3, ipAddress: entity.ipAddress }); @@ -154,7 +154,7 @@ export class SiteIpService extends BaseService { } } - async checkAll(siteInfo: SiteInfoEntity,onFinish?: (e: any) => void) { + async checkAll(siteInfo: SiteInfoEntity,retryTimes = null,onFinish?: (e: any) => void) { const siteId = siteInfo.id; const ips = await this.repository.find({ where: { @@ -167,7 +167,7 @@ export class SiteIpService extends BaseService { for (const item of ips) { const func = async () => { try { - return await this.check(item.id, domain, port); + return await this.check(item.id, domain, port,retryTimes); } catch (e) { logger.error("check site item error", e); return { diff --git a/packages/ui/certd-server/src/modules/monitor/service/site-tester.ts b/packages/ui/certd-server/src/modules/monitor/service/site-tester.ts index ff4df58e..fda2ab9b 100644 --- a/packages/ui/certd-server/src/modules/monitor/service/site-tester.ts +++ b/packages/ui/certd-server/src/modules/monitor/service/site-tester.ts @@ -18,7 +18,7 @@ export type SiteTestRes = { export class SiteTester { async test(req: SiteTestReq): Promise { logger.info("测试站点:", JSON.stringify(req)); - const maxRetryTimes = req.retryTimes ?? 3; + const maxRetryTimes = req.retryTimes==null ? 3 : req.retryTimes; let tryCount = 0; let result: SiteTestRes = {}; while (true) { @@ -28,12 +28,12 @@ export class SiteTester { } catch (e) { tryCount++; if (tryCount > maxRetryTimes) { - logger.error(`测试站点出错,重试${maxRetryTimes}次。`, e.message); + logger.error(`测试站点出错,已超过最大重试次数(${maxRetryTimes})`, e.message); throw e; } //指数退避 const time = 2 ** tryCount; - logger.error(`测试站点出错,${time}s后重试`, e); + logger.error(`测试站点出错,${time}s后重试(${tryCount}/${maxRetryTimes})`, e); await utils.sleep(time * 1000); } } diff --git a/packages/ui/certd-server/src/plugins/plugin-notification/telegram/index.ts b/packages/ui/certd-server/src/plugins/plugin-notification/telegram/index.ts index 8ea01da5..109b72e5 100644 --- a/packages/ui/certd-server/src/plugins/plugin-notification/telegram/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-notification/telegram/index.ts @@ -59,7 +59,8 @@ export class TelegramNotification extends BaseNotification { skipSslVerify: boolean; replaceText(text: string) { - return text.replaceAll('.', '\\.').replaceAll('*', '\\*'); + // .*()<> 等都需要用\\进行替换 + return text.replace(/[\\.*()<>]/g, '\\$&'); } async send(body: NotificationBody) { if (!this.botToken || !this.chatId) {