From a818a3d293e22fb46979bc77055c05621a6fed81 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sat, 17 May 2025 00:47:28 +0800 Subject: [PATCH 01/11] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=A3=9E?= =?UTF-8?q?=E4=B9=A6=E9=80=9A=E7=9F=A5=E4=B8=BA=E5=8D=A1=E7=89=87=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/pipeline/src/core/executor.ts | 2 +- .../plugin-notification/feishu/index.ts | 74 +++++++++++++++++-- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/packages/core/pipeline/src/core/executor.ts b/packages/core/pipeline/src/core/executor.ts index c79dee66..a009ca39 100644 --- a/packages/core/pipeline/src/core/executor.ts +++ b/packages/core/pipeline/src/core/executor.ts @@ -438,7 +438,7 @@ export class Executor { const runnableError = error as RunnableError; content = `流水线ID:${this.pipeline.id},运行ID:${this.runtime.id}\n\n`; for (const re of runnableError.errors) { - content += ` - ${re.runnable.title} 执行失败\n 错误详情:${re.e.message}\n\n`; + content += ` - ${re.runnable.title} 执行失败,错误详情:${re.e?.error?.message}\n\n`; } } else { content = `流水线ID:${this.pipeline.id},运行ID:${this.runtime.id}\n\n${this.currentStatusMap?.currentStep?.title} 执行失败\n\n错误详情:${error.message}`; diff --git a/packages/ui/certd-server/src/plugins/plugin-notification/feishu/index.ts b/packages/ui/certd-server/src/plugins/plugin-notification/feishu/index.ts index 031eb1c7..bc79c468 100644 --- a/packages/ui/certd-server/src/plugins/plugin-notification/feishu/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-notification/feishu/index.ts @@ -98,11 +98,11 @@ export class DingTalkNotification extends BaseNotification { if(nameIndex>0){ name = id.substring(nameIndex+1) } - return `${name}` + return `${name}` }).join(""); } if(this.isAtAll){ - atText = `所有人` + atText = `所有人` } if (atText){ @@ -118,16 +118,78 @@ export class DingTalkNotification extends BaseNotification { } } + const cardBody = { + "msg_type": "interactive", + "card": { + "schema": "2.0", + "config": { + "update_multi": true, + "style": { + "text_size": { + "normal_v2": { + "default": "normal", + "pc": "normal", + "mobile": "heading" + } + } + } + }, + "header": { + "title": { + "tag": "plain_text", + "content": body.title + }, + "subtitle": { + "tag": "plain_text", + "content": "" + }, + "template": body.errorMessage?"red":"green", + "padding": "12px 12px 12px 12px" + }, + "body": { + "direction": "vertical", + "padding": "12px 12px 12px 12px", + "elements": [ + { + "tag": "markdown", + "content": body.content+atText, + "text_align": "left", + "text_size": "normal_v2", + "margin": "0px 0px 0px 0px" + }, + { + "tag": "button", + "text": { + "tag": "plain_text", + "content": "查看详情" + }, + "type": "default", + "width": "default", + "size": "medium", + "behaviors": [ + { + "type": "open_url", + "default_url": body.url, + "pc_url": "", + "ios_url": "", + "android_url": "" + } + ], + "margin": "0px 0px 0px 0px" + } + ] + }, + + } + } + const res = await this.http.request({ url: webhook, method: 'POST', data: { ...sign, - content: { - text: `${body.title}\n${body.content}\n查看详情: ${body.url}${atText}`, - }, - msg_type:"text" + ...cardBody }, }); if(res.code>100){ From a560999d13eed18d08dd32ee530166569e3f8746 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sat, 17 May 2025 01:13:36 +0800 Subject: [PATCH 02/11] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=92=89?= =?UTF-8?q?=E9=92=89=E9=80=9A=E7=9F=A5=E6=A0=87=E9=A2=98=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/pipeline/src/core/executor.ts | 4 ++-- .../src/plugins/plugin-notification/dingtalk/index.ts | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/core/pipeline/src/core/executor.ts b/packages/core/pipeline/src/core/executor.ts index a009ca39..dd6d23d2 100644 --- a/packages/core/pipeline/src/core/executor.ts +++ b/packages/core/pipeline/src/core/executor.ts @@ -218,7 +218,7 @@ export class Executor { returnType: ResultType.error, runnable: t, }); - errorMessage += `任务${t.title}执行失败,错误详情:${e.message};`; + errorMessage += `任务${t.title}执行失败,错误详情:${e.message};`; } } if (errorList.length > 0) { @@ -438,7 +438,7 @@ export class Executor { const runnableError = error as RunnableError; content = `流水线ID:${this.pipeline.id},运行ID:${this.runtime.id}\n\n`; for (const re of runnableError.errors) { - content += ` - ${re.runnable.title} 执行失败,错误详情:${re.e?.error?.message}\n\n`; + content += ` - ${re.runnable.title} 执行失败,错误详情:${re.e?.error?.message}\n\n`; } } else { content = `流水线ID:${this.pipeline.id},运行ID:${this.runtime.id}\n\n${this.currentStatusMap?.currentStep?.title} 执行失败\n\n错误详情:${error.message}`; diff --git a/packages/ui/certd-server/src/plugins/plugin-notification/dingtalk/index.ts b/packages/ui/certd-server/src/plugins/plugin-notification/dingtalk/index.ts index e97e19ae..e875f1bd 100644 --- a/packages/ui/certd-server/src/plugins/plugin-notification/dingtalk/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-notification/dingtalk/index.ts @@ -125,15 +125,17 @@ export class DingTalkNotification extends BaseNotification { at.isAtAll = true; } + const color = body.errorMessage?'red':'green'; const res = await this.http.request({ url: webhook, method: 'POST', data: { at: at, - text: { - content: `${body.title}\n${body.content}\n查看详情: ${body.url}`, + markdown: { + title: body.title, + text: `${body.title}\n\n\n ${body.content}\n\n\n[查看详情](${body.url})`, }, - msgtype:"text" + msgtype:"markdown" }, }); if(res.errcode>100){ From 566b12f5d14ce10e8f5cf1807c58f7bf27f0d199 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 19 May 2025 10:58:28 +0800 Subject: [PATCH 03/11] =?UTF-8?q?perf:=201panel=E5=A2=9E=E5=8A=A0=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E6=B5=8B=E8=AF=95=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/plugins/plugin-upyun/plugins/plugin-depoy-to-cdn.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/ui/certd-server/src/plugins/plugin-upyun/plugins/plugin-depoy-to-cdn.ts b/packages/ui/certd-server/src/plugins/plugin-upyun/plugins/plugin-depoy-to-cdn.ts index 7556d271..8f6fbf85 100644 --- a/packages/ui/certd-server/src/plugins/plugin-upyun/plugins/plugin-depoy-to-cdn.ts +++ b/packages/ui/certd-server/src/plugins/plugin-upyun/plugins/plugin-depoy-to-cdn.ts @@ -110,6 +110,7 @@ export class UpyunDeployToCdn extends AbstractTaskPlugin { this.logger.info(`登录成功`); const certId = await upyunClient.uploadCert(cookie, this.cert); this.logger.info(`上传证书成功:${certId}`); + await this.ctx.utils.sleep(5000); for (const item of this.cdnList) { const data :any= { From 07b9769504f141192eb8499a6863fb89c59ae11f Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 19 May 2025 11:34:59 +0800 Subject: [PATCH 04/11] docs: --- docs/.vitepress/config.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 8b796c63..57ca5abc 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -91,14 +91,14 @@ export default defineConfig({ {text: "多数据库支持", link: "/guide/install/database.md"}, {text: "开放接口", link: "/guide/open/index.md"}, { - text: "站点安全", link: "/guide/feature/safe" + text: "站点安全", link: "/guide/feature/safe/" }, { text: "插件列表", items: [ - {text: "授权提供商", link: "/guide/plugins/access"}, - {text: "DNS提供商", link: "/guide/plugins/dns-provider"}, - {text: "任务插件", link: "/guide/plugins/deploy"}, - {text: "通知插件", link: "/guide/plugins/notification"}, + {text: "授权提供商", link: "/guide/plugins/access.md"}, + {text: "DNS提供商", link: "/guide/plugins/dns-provider.md"}, + {text: "任务插件", link: "/guide/plugins/deploy.md"}, + {text: "通知插件", link: "/guide/plugins/notification.md"}, ] }, ] @@ -106,7 +106,7 @@ export default defineConfig({ { text: "常见问题", items: [ - {text: "QA", link: "/guide/qa/use"}, + {text: "QA", link: "/guide/qa/use.md"}, {text: "常见报错处理", link: "/guide/qa/"}, {text: "群晖证书部署", link: "/guide/use/synology/"}, {text: "腾讯云密钥获取", link: "/guide/use/tencent/"}, From 094565ccd619ef671c6c11ce5fb7fd54a7a21d1c Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 20 May 2025 00:27:18 +0800 Subject: [PATCH 05/11] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E5=88=B0=E5=AE=9D=E5=A1=94aaWAF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/basic/src/utils/util.request.ts | 4 + pnpm-lock.yaml | 82 +++++++++---------- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git a/packages/core/basic/src/utils/util.request.ts b/packages/core/basic/src/utils/util.request.ts index 09582ec1..a69f8d66 100644 --- a/packages/core/basic/src/utils/util.request.ts +++ b/packages/core/basic/src/utils/util.request.ts @@ -209,6 +209,10 @@ export function createAxiosService({ logger }: { logger: Logger }) { logger.error("AggregateError", error); } const err = new HttpError(error); + if (error.response?.config?.logParams === false) { + delete err.request?.params; + delete err.request?.data; + } return Promise.reject(err); } ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d2f042d..1d116183 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: packages/core/acme-client: dependencies: '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../basic '@peculiar/x509': specifier: ^1.11.0 @@ -207,10 +207,10 @@ importers: packages/core/pipeline: dependencies: '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../basic '@certd/plus-core': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../pro/plus-core dayjs: specifier: ^1.11.7 @@ -415,7 +415,7 @@ importers: packages/libs/lib-k8s: dependencies: '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/basic '@kubernetes/client-node': specifier: 0.21.0 @@ -455,16 +455,16 @@ importers: packages/libs/lib-server: dependencies: '@certd/acme-client': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/pipeline '@certd/plus-core': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../pro/plus-core '@midwayjs/cache': specifier: ~3.14.0 @@ -607,16 +607,16 @@ importers: packages/plugins/plugin-cert: dependencies: '@certd/acme-client': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/pipeline '@certd/plugin-lib': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../plugin-lib '@google-cloud/publicca': specifier: ^1.3.0 @@ -689,10 +689,10 @@ importers: specifier: ^3.787.0 version: 3.810.0(aws-crt@1.26.2) '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/pipeline '@kubernetes/client-node': specifier: 0.21.0 @@ -780,19 +780,19 @@ importers: packages/pro/commercial-core: dependencies: '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/basic '@certd/lib-server': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../libs/lib-server '@certd/pipeline': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/pipeline '@certd/plugin-plus': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../plugin-plus '@certd/plus-core': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../plus-core '@midwayjs/core': specifier: ~3.20.3 @@ -877,22 +877,22 @@ importers: specifier: ^1.0.2 version: 1.0.3 '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/basic '@certd/lib-k8s': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../libs/lib-k8s '@certd/pipeline': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../plugins/plugin-lib '@certd/plus-core': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../plus-core ali-oss: specifier: ^6.21.0 @@ -995,7 +995,7 @@ importers: packages/pro/plus-core: dependencies: '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/basic dayjs: specifier: ^1.11.7 @@ -1285,10 +1285,10 @@ importers: version: 0.1.3(zod@3.24.4) devDependencies: '@certd/lib-iframe': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../libs/lib-iframe '@certd/pipeline': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/pipeline '@rollup/plugin-commonjs': specifier: ^25.0.7 @@ -1468,43 +1468,43 @@ importers: specifier: ^3.705.0 version: 3.810.0(aws-crt@1.26.2) '@certd/acme-client': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/basic '@certd/commercial-core': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../pro/commercial-core '@certd/jdcloud': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../libs/lib-jdcloud '@certd/lib-huawei': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../libs/lib-huawei '@certd/lib-k8s': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../libs/lib-k8s '@certd/lib-server': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../libs/lib-server '@certd/midway-flyway-js': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../libs/midway-flyway-js '@certd/pipeline': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../plugins/plugin-lib '@certd/plugin-plus': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../pro/plugin-plus '@certd/plus-core': - specifier: ^1.34.2 + specifier: ^1.34.4 version: link:../../pro/plus-core '@corsinvest/cv4pve-api-javascript': specifier: ^8.3.0 From 8af3463668a40b9b99febb02e3b4e0d9d8d719b4 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 20 May 2025 01:11:26 +0800 Subject: [PATCH 06/11] =?UTF-8?q?perf:=20aaWaf=E3=80=81cdnfly=E7=AB=99?= =?UTF-8?q?=E7=82=B9=E9=80=89=E6=8B=A9=E6=94=AF=E6=8C=81=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/plugin-lib/src/common/util.ts | 3 ++ .../plugins/common/remote-select.vue | 44 ++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/packages/plugins/plugin-lib/src/common/util.ts b/packages/plugins/plugin-lib/src/common/util.ts index 9bf5e42b..d5a88b70 100644 --- a/packages/plugins/plugin-lib/src/common/util.ts +++ b/packages/plugins/plugin-lib/src/common/util.ts @@ -38,6 +38,7 @@ export function createRemoteSelectInputDefine(opts?: { required?: boolean; rules?: any; mergeScript?: string; + search?: boolean; }) { const title = opts?.title || "请选择"; const certDomainsInputKey = opts?.certDomainsInputKey || "certDomains"; @@ -47,6 +48,7 @@ export function createRemoteSelectInputDefine(opts?: { const type = opts?.type || "plugin"; const watches = opts?.watches || []; const helper = opts?.helper || "请选择"; + const search = opts?.search ?? false; let mode = "tags"; if (opts.multi === false) { mode = undefined; @@ -63,6 +65,7 @@ export function createRemoteSelectInputDefine(opts?: { type, typeName, action, + search, watches: [certDomainsInputKey, accessIdInputKey, ...watches], }, rules: opts?.rules, diff --git a/packages/ui/certd-client/src/components/plugins/common/remote-select.vue b/packages/ui/certd-client/src/components/plugins/common/remote-select.vue index e6c0c7e1..2b564bcb 100644 --- a/packages/ui/certd-client/src/components/plugins/common/remote-select.vue +++ b/packages/ui/certd-client/src/components/plugins/common/remote-select.vue @@ -1,7 +1,26 @@