From a705182b85e51157883e48f23463263793bf3c12 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Oct 2024 11:31:32 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=94=B3=E8=AF=B7=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E6=96=B0=E7=9A=84=E5=8F=8D=E4=BB=A3=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/pipeline/src/core/executor.ts | 13 +++++++++++++ .../system/settings/service/sys-settings-service.ts | 12 ++++++++++-- .../plugin-cert/src/plugin/cert-plugin/acme.ts | 4 ++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/core/pipeline/src/core/executor.ts b/packages/core/pipeline/src/core/executor.ts index 7b2256fc..7f332de8 100644 --- a/packages/core/pipeline/src/core/executor.ts +++ b/packages/core/pipeline/src/core/executor.ts @@ -128,6 +128,10 @@ export class Executor { this.runtime.skip(runnable); return resultType; } + if (resultType == ResultType.disabled) { + this.runtime.disabled(runnable); + return resultType; + } this.runtime.success(runnable); return ResultType.success; } catch (e: any) { @@ -164,12 +168,14 @@ export class Executor { let resList: ResultType[] = []; if (stage.concurrency === ConcurrencyStrategy.Parallel) { + //并行 const pList = []; for (const item of runnerList) { pList.push(item()); } resList = await Promise.all(pList); } else { + //串行 for (let i = 0; i < runnerList.length; i++) { const runner = runnerList[i]; resList[i] = await runner(); @@ -181,6 +187,7 @@ export class Executor { compositionResultType(resList: ResultType[]): ResultType { let hasSuccess = false; let hasSkip = false; + let hasDisabled = false; for (const type of resList) { if (type === ResultType.error) { return ResultType.error; @@ -188,8 +195,14 @@ export class Executor { hasSuccess = true; } else if (type === ResultType.skip) { hasSkip = true; + } else if (type === ResultType.disabled) { + hasDisabled = true; } } + if (!hasSuccess && !hasSkip && hasDisabled) { + //全是disabled + return ResultType.disabled; + } if (!hasSuccess && hasSkip) { //全是跳过 return ResultType.skip; diff --git a/packages/libs/lib-server/src/system/settings/service/sys-settings-service.ts b/packages/libs/lib-server/src/system/settings/service/sys-settings-service.ts index 7ae277b1..6d89ffbb 100644 --- a/packages/libs/lib-server/src/system/settings/service/sys-settings-service.ts +++ b/packages/libs/lib-server/src/system/settings/service/sys-settings-service.ts @@ -150,10 +150,10 @@ export class SysSettingsService extends BaseService { async backupSecret() { const settings = await this.getSettingByKey(SysSecretBackup.__key__); + const privateSettings = await this.getPrivateSettings(); + const installInfo = await this.getSetting(SysInstallInfo); if (settings == null) { const backup = new SysSecretBackup(); - const privateSettings = await this.getPrivateSettings(); - const installInfo = await this.getSetting(SysInstallInfo); if (installInfo.siteId == null || privateSettings.encryptSecret == null) { logger.error('备份密钥失败,siteId或encryptSecret为空'); return; @@ -162,6 +162,14 @@ export class SysSettingsService extends BaseService { backup.encryptSecret = privateSettings.encryptSecret; await this.saveSetting(backup); logger.info('备份密钥成功'); + } else { + //校验是否有变化 + if (settings.siteId !== installInfo.siteId) { + throw new Error(`siteId与备份不一致,可能是数据异常,请检查:backup=${settings.siteId}, current=${installInfo.siteId}`); + } + if (settings.encryptSecret !== privateSettings.encryptSecret) { + throw new Error('encryptSecret与备份不一致,可能是数据异常,请检查'); + } } } } diff --git a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts index 14402024..0160094c 100644 --- a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts +++ b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts @@ -92,8 +92,8 @@ export class AcmeService { const urlMapping: UrlMapping = { enabled: false, mappings: { - "acme-v02.api.letsencrypt.org": this.options.reverseProxy || "letsencrypt.proxy.handsfree.work", - "dv.acme-v02.api.pki.goog": this.options.reverseProxy || "google.proxy.handsfree.work", + "acme-v02.api.letsencrypt.org": this.options.reverseProxy || "le.px.certd.handfree.work", + "dv.acme-v02.api.pki.goog": this.options.reverseProxy || "gg.px.certd.handfree.work", }, }; const conf = await this.getAccountConfig(email, urlMapping);