From 49f26b4049a0549b0270395157e96e8f04a68bc4 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Wed, 4 Jun 2025 13:36:31 +0800 Subject: [PATCH 01/26] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dcv4pve=20sdk=20(?= =?UTF-8?q?proxmox=E6=8F=92=E4=BB=B6=E8=BF=9E=E6=8E=A5=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=97=B6=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9A=84bug)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ui/certd-server/package.json | 2 +- .../plugin-proxmox/plugins/plugin-upload.ts | 2 +- pnpm-lock.yaml | 105 +++++++++--------- 3 files changed, 53 insertions(+), 56 deletions(-) diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index f5e5b6d2..a02cb35c 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -54,7 +54,7 @@ "@certd/plugin-lib": "^1.34.10", "@certd/plugin-plus": "^1.34.10", "@certd/plus-core": "^1.34.10", - "@corsinvest/cv4pve-api-javascript": "^8.3.0", + "@certd/cv4pve-api-javascript": "^8.4.1", "@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120", "@huaweicloud/huaweicloud-sdk-core": "^3.1.120", "@koa/cors": "^5.0.0", diff --git a/packages/ui/certd-server/src/plugins/plugin-proxmox/plugins/plugin-upload.ts b/packages/ui/certd-server/src/plugins/plugin-proxmox/plugins/plugin-upload.ts index f70c1a6d..96085ff8 100644 --- a/packages/ui/certd-server/src/plugins/plugin-proxmox/plugins/plugin-upload.ts +++ b/packages/ui/certd-server/src/plugins/plugin-proxmox/plugins/plugin-upload.ts @@ -93,7 +93,7 @@ export class ProxmoxUploadCert extends AbstractPlusTaskPlugin { async getClient() { const access: ProxmoxAccess = await this.getAccess(this.accessId); - const pve = await import('@corsinvest/cv4pve-api-javascript'); + const pve = await import('@certd/cv4pve-api-javascript'); const client = new pve.PveClient(access.host, access.port); const login = await client.login(access.username, access.password, 'pam'); if (!login) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48b0646e..636dce7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: packages/core/acme-client: dependencies: '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../basic '@peculiar/x509': specifier: ^1.11.0 @@ -207,10 +207,10 @@ importers: packages/core/pipeline: dependencies: '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../basic '@certd/plus-core': - specifier: ^1.34.7 + specifier: ^1.34.10 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.7 + specifier: ^1.34.10 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.7 + specifier: ^1.34.10 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/pipeline '@certd/plus-core': - specifier: ^1.34.7 + specifier: ^1.34.10 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.7 + specifier: ^1.34.10 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/pipeline '@certd/plugin-lib': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../plugin-lib '@google-cloud/publicca': specifier: ^1.3.0 @@ -682,9 +682,6 @@ importers: packages/plugins/plugin-lib: dependencies: - '@alicloud/credentials': - specifier: ^2.4.3 - version: 2.4.3 '@alicloud/openapi-client': specifier: ^0.4.14 version: 0.4.14 @@ -698,10 +695,10 @@ importers: specifier: ^3.787.0 version: 3.810.0(aws-crt@1.26.2) '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/pipeline '@kubernetes/client-node': specifier: 0.21.0 @@ -789,19 +786,19 @@ importers: packages/pro/commercial-core: dependencies: '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/basic '@certd/lib-server': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../libs/lib-server '@certd/pipeline': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/pipeline '@certd/plugin-plus': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../plugin-plus '@certd/plus-core': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../plus-core '@midwayjs/core': specifier: ~3.20.3 @@ -886,22 +883,22 @@ importers: specifier: ^1.0.2 version: 1.0.3 '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/basic '@certd/lib-k8s': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../libs/lib-k8s '@certd/pipeline': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../plugins/plugin-lib '@certd/plus-core': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../plus-core ali-oss: specifier: ^6.21.0 @@ -1004,7 +1001,7 @@ importers: packages/pro/plus-core: dependencies: '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/basic dayjs: specifier: ^1.11.7 @@ -1294,10 +1291,10 @@ importers: version: 0.1.3(zod@3.24.4) devDependencies: '@certd/lib-iframe': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../libs/lib-iframe '@certd/pipeline': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/pipeline '@rollup/plugin-commonjs': specifier: ^25.0.7 @@ -1477,47 +1474,47 @@ importers: specifier: ^3.705.0 version: 3.810.0(aws-crt@1.26.2) '@certd/acme-client': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/basic '@certd/commercial-core': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../pro/commercial-core + '@certd/cv4pve-api-javascript': + specifier: ^8.4.1 + version: 8.4.1 '@certd/jdcloud': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../libs/lib-jdcloud '@certd/lib-huawei': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../libs/lib-huawei '@certd/lib-k8s': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../libs/lib-k8s '@certd/lib-server': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../libs/lib-server '@certd/midway-flyway-js': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../libs/midway-flyway-js '@certd/pipeline': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../plugins/plugin-lib '@certd/plugin-plus': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../pro/plugin-plus '@certd/plus-core': - specifier: ^1.34.7 + specifier: ^1.34.10 version: link:../../pro/plus-core - '@corsinvest/cv4pve-api-javascript': - specifier: ^8.3.0 - version: 8.4.0 '@huaweicloud/huaweicloud-sdk-cdn': specifier: ^3.1.120 version: 3.1.149 @@ -2659,13 +2656,13 @@ packages: '@better-scroll/zoom@2.5.1': resolution: {integrity: sha512-aGvFY5ooeZWS4RcxQLD+pGLpQHQxpPy0sMZV3yadcd2QK53PK9gS4Dp+BYfRv8lZ4/P2LoNEhr6Wq1DN6+uPlA==} + '@certd/cv4pve-api-javascript@8.4.1': + resolution: {integrity: sha512-jxlRieJmCA0Z9LnwX6Ra6ZekRGJEu8o8RGYoKU0Jjkhc9jm6ChEbVyfE7Iw49/hlpA+2yaHdAXb46au/afCISg==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@corsinvest/cv4pve-api-javascript@8.4.0': - resolution: {integrity: sha512-SDL+Y+t+/NkXmfOnRgil2ujMv/gfnah88n4+rMFBLv3qYjSy5uNetoeMmtLoR1wSlJmOvktzxQjsBl0TZt0gCw==} - '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -14881,15 +14878,15 @@ snapshots: dependencies: '@better-scroll/core': 2.5.1 - '@colors/colors@1.5.0': - optional: true - - '@corsinvest/cv4pve-api-javascript@8.4.0': + '@certd/cv4pve-api-javascript@8.4.1': dependencies: debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color + '@colors/colors@1.5.0': + optional: true + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 From e639a8f9f12640ffcca69f1a6a0324459924afbd Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Wed, 4 Jun 2025 17:26:56 +0800 Subject: [PATCH 02/26] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96cname=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=EF=BC=8C=E5=BD=93=E6=9C=89=E5=86=B2=E7=AA=81=E7=9A=84?= =?UTF-8?q?cname=E8=AE=B0=E5=BD=95=E6=97=B6=EF=BC=8C=E7=BB=99=E5=87=BA?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/acme-client/types/index.d.ts | 1 + .../cname-record-info.vue | 3 + .../cname-verify-plan.vue | 2 +- .../src/plugin/fast-crud/index.tsx | 8 +- .../src/router/source/modules/certd.ts | 2 +- .../src/views/certd/cname/record/crud.tsx | 34 ++++-- .../src/views/certd/pipeline/crud.tsx | 3 + .../db/migration/v10024__cname_error.sql | 3 + .../src/modules/cname/entity/cname-record.ts | 3 + .../cname/service/cname-record-service.ts | 110 +++++++++++++++--- .../src/modules/sys/authority/entity/user.ts | 4 + 11 files changed, 138 insertions(+), 35 deletions(-) create mode 100644 packages/ui/certd-server/db/migration/v10024__cname_error.sql diff --git a/packages/core/acme-client/types/index.d.ts b/packages/core/acme-client/types/index.d.ts index 6fa941da..4974baa5 100644 --- a/packages/core/acme-client/types/index.d.ts +++ b/packages/core/acme-client/types/index.d.ts @@ -203,6 +203,7 @@ export const agents: any; export function setLogger(fn: (message: any, ...args: any[]) => void): void; export function walkTxtRecord(record: any): Promise; +export function getAuthoritativeDnsResolver(record:string): Promise; export const CancelError: typeof CancelError; diff --git a/packages/ui/certd-client/src/components/plugins/cert/domains-verify-plan-editor/cname-record-info.vue b/packages/ui/certd-client/src/components/plugins/cert/domains-verify-plan-editor/cname-record-info.vue index 3f814dff..1d18a816 100644 --- a/packages/ui/certd-client/src/components/plugins/cert/domains-verify-plan-editor/cname-record-info.vue +++ b/packages/ui/certd-client/src/components/plugins/cert/domains-verify-plan-editor/cname-record-info.vue @@ -13,6 +13,9 @@ + + + + diff --git a/packages/ui/certd-client/src/views/sys/authority/user/crud.tsx b/packages/ui/certd-client/src/views/sys/authority/user/crud.tsx index 7e8d23c2..25ff879d 100644 --- a/packages/ui/certd-client/src/views/sys/authority/user/crud.tsx +++ b/packages/ui/certd-client/src/views/sys/authority/user/crud.tsx @@ -3,6 +3,7 @@ import { AddReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, import { useUserStore } from "/@/store/user"; import { Modal, notification } from "ant-design-vue"; import dayjs from "dayjs"; +import { useSettingStore } from "/@/store/settings"; export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { const pageRequest = async (query: UserPageQuery): Promise => { @@ -22,6 +23,10 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti const userStore = useUserStore(); + const settingStore = useSettingStore(); + const userValidTimeEnabled = compute(() => { + return settingStore.sysPublic.userValidTimeEnabled === true; + }); return { crudOptions: { request: { @@ -213,20 +218,28 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti }, validTime: { title: "有效期", - type: ["date", "time-humanize"], + type: "date", + form: { + show: userValidTimeEnabled, + }, column: { align: "center", sorter: true, width: 100, - component: { - title: compute(({ row }) => { - return dayjs(row.validTime).format("YYYY-MM-DD"); - }), - useFormatGreater: 30000000000, - options: { - largest: 1, - units: ["y", "d", "h"], - }, + show: userValidTimeEnabled, + cellRender({ value }) { + if (value == null || value === 0) { + return ""; + } + if (value < dayjs().valueOf()) { + return 已过期; + } + const date = dayjs(value).format("YYYY-MM-DD"); + return ( + + + + ); }, }, valueBuilder({ value, row, key }) { diff --git a/packages/ui/certd-client/src/views/sys/settings/tabs/register.vue b/packages/ui/certd-client/src/views/sys/settings/tabs/register.vue index eb9ccec3..8f395eaa 100644 --- a/packages/ui/certd-client/src/views/sys/settings/tabs/register.vue +++ b/packages/ui/certd-client/src/views/sys/settings/tabs/register.vue @@ -11,6 +11,13 @@ + +
+ + +
+
有效期内用户可正常使用,失效后流水线将被停用
+
@@ -41,6 +38,7 @@ import { RunHistory } from "../../type"; import PiStatusShow from "/@/views/certd/pipeline/pipeline/component/status-show.vue"; import { usePreferences } from "/@/vben/preferences"; import { useSettingStore } from "/@/store/settings/index"; +import { notification } from "ant-design-vue"; export default { name: "PiTaskView", components: { PiStatusShow }, @@ -56,6 +54,22 @@ export default { onAiChat() { onAiChat(); }, + onDownloadLogs() { + const logs = currentHistory.value?.logs[activeKey.value]; + if (!logs || logs.length === 0) { + notification.warning({ + message: "没有日志", + }); + return; + } + const logText = logs.join(""); + const blob = new Blob([logText], { type: "text/plain;charset=utf-8" }); + const a = document.createElement("a"); + a.href = URL.createObjectURL(blob); + a.download = "certd-task-log.txt"; + a.click(); + URL.revokeObjectURL(a.href); + }, cancelText: "关闭", }); const { isMobile } = usePreferences(); From f7d5baa6d04cb83c572b06e62f885890cfa0143a Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 5 Jun 2025 11:25:16 +0800 Subject: [PATCH 09/26] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E5=9F=9F=E5=90=8D=E4=BD=BF=E7=94=A8cname=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E6=A0=A1=E9=AA=8C=E6=97=A0=E6=B3=95=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/acme-client/package.json | 2 +- packages/plugins/plugin-cert/package.json | 2 +- .../plugin-cert/src/dns-provider/api.ts | 16 ++++++++++++++++ .../plugin-cert/src/dns-provider/base.ts | 18 +++++++++++++++++- .../src/plugin/cert-plugin/acme.ts | 8 +++++--- .../pipeline/component/task-view/index.vue | 4 ++-- packages/ui/certd-server/package.json | 3 ++- .../cname/service/cname-record-service.ts | 11 ++++++++++- .../modules/cname/service/common-provider.ts | 19 ++++++++++++++++++- .../plugins/plugin-cloudflare/dns-provider.ts | 5 +++++ pnpm-lock.yaml | 13 ++++++++----- 11 files changed, 85 insertions(+), 16 deletions(-) diff --git a/packages/core/acme-client/package.json b/packages/core/acme-client/package.json index 6f95327f..79b9ba37 100644 --- a/packages/core/acme-client/package.json +++ b/packages/core/acme-client/package.json @@ -27,7 +27,7 @@ "https-proxy-agent": "^7.0.5", "lodash-es": "^4.17.21", "node-forge": "^1.3.1", - "punycode": "^2.3.1" + "punycode.js": "^2.3.1" }, "devDependencies": { "@types/node": "^20.14.10", diff --git a/packages/plugins/plugin-cert/package.json b/packages/plugins/plugin-cert/package.json index 6a951c6c..586a5098 100644 --- a/packages/plugins/plugin-cert/package.json +++ b/packages/plugins/plugin-cert/package.json @@ -25,7 +25,7 @@ "jszip": "^3.10.1", "lodash-es": "^4.17.21", "psl": "^1.9.0", - "punycode": "^2.3.1", + "punycode.js": "^2.3.1", "rimraf": "^5.0.5" }, "devDependencies": { diff --git a/packages/plugins/plugin-cert/src/dns-provider/api.ts b/packages/plugins/plugin-cert/src/dns-provider/api.ts index f8fdc476..523159fe 100644 --- a/packages/plugins/plugin-cert/src/dns-provider/api.ts +++ b/packages/plugins/plugin-cert/src/dns-provider/api.ts @@ -29,9 +29,25 @@ export type DnsProviderContext = { export interface IDnsProvider { onInstance(): Promise; + + /** + * 中文转英文 + * @param domain + */ + punyCodeEncode(domain: string): string; + + /** + * 转中文域名 + * @param domain + */ + punyCodeDecode(domain: string): string; + createRecord(options: CreateRecordOptions): Promise; + removeRecord(options: RemoveRecordOptions): Promise; + setCtx(ctx: DnsProviderContext): void; + //中文域名是否需要punycode转码,如果返回True,则使用punycode来添加解析记录,否则使用中文域名添加解析记录 usePunyCode(): boolean; } diff --git a/packages/plugins/plugin-cert/src/dns-provider/base.ts b/packages/plugins/plugin-cert/src/dns-provider/base.ts index 25dfa5a8..543e67ea 100644 --- a/packages/plugins/plugin-cert/src/dns-provider/base.ts +++ b/packages/plugins/plugin-cert/src/dns-provider/base.ts @@ -1,7 +1,7 @@ import { CreateRecordOptions, DnsProviderContext, DnsProviderDefine, IDnsProvider, RemoveRecordOptions } from "./api.js"; import { dnsProviderRegistry } from "./registry.js"; import { HttpClient, ILogger } from "@certd/basic"; - +import punycode from "punycode.js"; export abstract class AbstractDnsProvider implements IDnsProvider { ctx!: DnsProviderContext; http!: HttpClient; @@ -13,6 +13,22 @@ export abstract class AbstractDnsProvider implements IDnsProvider { return false; } + /** + * 中文转英文 + * @param domain + */ + punyCodeEncode(domain: string) { + return punycode.toASCII(domain); + } + + /** + * 转中文域名 + * @param domain + */ + punyCodeDecode(domain: string) { + return punycode.toUnicode(domain); + } + setCtx(ctx: DnsProviderContext) { this.ctx = ctx; this.logger = ctx.logger; 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 beb99697..d9774786 100644 --- a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts +++ b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts @@ -6,7 +6,7 @@ import { Challenge } from "@certd/acme-client/types/rfc8555"; import { IContext } from "@certd/pipeline"; import { ILogger, utils } from "@certd/basic"; import { IDnsProvider, IDomainParser } from "../../dns-provider/index.js"; -import punycode from "node:punycode"; +import punycode from "punycode.js"; import { IOssClient } from "@certd/plugin-lib"; export type CnameVerifyPlan = { type?: string; @@ -233,16 +233,18 @@ export class AcmeService { let dnsProvider = providers.dnsProvider; let fullRecord = `_acme-challenge.${fullDomain}`; + const origDomain = punycode.toUnicode(domain); + const origFullDomain = punycode.toUnicode(fullDomain); if (providers.domainsVerifyPlan) { //按照计划执行 - const domainVerifyPlan = providers.domainsVerifyPlan[domain]; + const domainVerifyPlan = providers.domainsVerifyPlan[origDomain]; if (domainVerifyPlan) { if (domainVerifyPlan.type === "dns") { dnsProvider = domainVerifyPlan.dnsProvider; } else if (domainVerifyPlan.type === "cname") { const cnameVerifyPlan = domainVerifyPlan.cnameVerifyPlan; if (cnameVerifyPlan) { - const cname = cnameVerifyPlan[fullDomain]; + const cname = cnameVerifyPlan[origFullDomain]; if (cname) { dnsProvider = cname.dnsProvider; domain = await this.options.domainParser.parse(cname.domain); diff --git a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/task-view/index.vue b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/task-view/index.vue index f77fb3bf..8fa58455 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/task-view/index.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/task-view/index.vue @@ -26,8 +26,8 @@ AI分析 下载日志 - - 确定 + 关闭 + diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index a02cb35c..107db2db 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -44,6 +44,7 @@ "@certd/acme-client": "^1.34.10", "@certd/basic": "^1.34.10", "@certd/commercial-core": "^1.34.10", + "@certd/cv4pve-api-javascript": "^8.4.1", "@certd/jdcloud": "^1.34.10", "@certd/lib-huawei": "^1.34.10", "@certd/lib-k8s": "^1.34.10", @@ -54,7 +55,6 @@ "@certd/plugin-lib": "^1.34.10", "@certd/plugin-plus": "^1.34.10", "@certd/plus-core": "^1.34.10", - "@certd/cv4pve-api-javascript": "^8.4.1", "@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120", "@huaweicloud/huaweicloud-sdk-core": "^3.1.120", "@koa/cors": "^5.0.0", @@ -104,6 +104,7 @@ "otplib": "^12.0.1", "pg": "^8.12.0", "psl": "^1.9.0", + "punycode.js": "^2.3.1", "qiniu": "^7.12.0", "qrcode": "^1.5.4", "qs": "^6.13.1", diff --git a/packages/ui/certd-server/src/modules/cname/service/cname-record-service.ts b/packages/ui/certd-server/src/modules/cname/service/cname-record-service.ts index 8bcf8242..ffaa4bea 100644 --- a/packages/ui/certd-server/src/modules/cname/service/cname-record-service.ts +++ b/packages/ui/certd-server/src/modules/cname/service/cname-record-service.ts @@ -12,7 +12,7 @@ import {CnameProviderEntity} from '../entity/cname-provider.js'; import {CommonDnsProvider} from './common-provider.js'; import {SubDomainService, SubDomainsGetter} from "../../pipeline/service/sub-domain-service.js"; import {DomainParser} from "@certd/plugin-cert/dist/dns-provider/domain-parser.js"; - +import punycode from 'punycode.js' type CnameCheckCacheValue = { validating: boolean; pass: boolean; @@ -317,7 +317,15 @@ export class CnameRecordService extends BaseService { type: 'TXT', value: testRecordValue, }; + const dnsProvider = await buildDnsProvider(); + if(dnsProvider.usePunyCode()){ + //是否需要中文转英文 + req.domain = dnsProvider.punyCodeEncode(req.domain) + req.fullRecord = dnsProvider.punyCodeEncode(req.fullRecord) + req.hostRecord = dnsProvider.punyCodeEncode(req.hostRecord) + req.value = dnsProvider.punyCodeEncode(req.value) + } const recordRes = await dnsProvider.createRecord(req); value.dnsProvider = dnsProvider; value.validating = true; @@ -364,6 +372,7 @@ export class CnameRecordService extends BaseService { return } targetCnameDomain = targetCnameDomain.toLowerCase() + targetCnameDomain = punycode.toASCII(targetCnameDomain) if (cnameRecords.length > 0) { for (const cnameRecord of cnameRecords) { if(cnameRecord.toLowerCase() !== targetCnameDomain){ diff --git a/packages/ui/certd-server/src/modules/cname/service/common-provider.ts b/packages/ui/certd-server/src/modules/cname/service/common-provider.ts index e9fe32b7..29683151 100644 --- a/packages/ui/certd-server/src/modules/cname/service/common-provider.ts +++ b/packages/ui/certd-server/src/modules/cname/service/common-provider.ts @@ -1,6 +1,6 @@ import {CreateRecordOptions, DnsProviderContext, IDnsProvider, RemoveRecordOptions} from '@certd/plugin-cert'; import {PlusService} from '@certd/lib-server'; - +import punycode from 'punycode.js' export type CommonCnameProvider = { id: number; domain: string; @@ -24,6 +24,23 @@ export class CommonDnsProvider implements IDnsProvider { this.plusService = opts.plusService; } + /** + * 中文转英文 + * @param domain + */ + punyCodeEncode(domain: string) { + return punycode.encode(domain); + } + + /** + * 转中文域名 + * @param domain + */ + punyCodeDecode(domain: string) { + return punycode.decode(domain); + } + + usePunyCode(): boolean { return false } diff --git a/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts index 186694fb..3ea917ac 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts @@ -26,6 +26,11 @@ export type CloudflareRecord = { }) export class CloudflareDnsProvider extends AbstractDnsProvider { access!: CloudflareAccess; + usePunyCode(): boolean { + //是否使用punycode来添加解析记录 + //默认都使用原始中文域名来添加 + return true; + } async onInstance() { //一些初始化的操作 // 也可以通过ctx成员变量传递context diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 636dce7d..3e36e925 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,7 +72,7 @@ importers: node-forge: specifier: ^1.3.1 version: 1.3.1 - punycode: + punycode.js: specifier: ^2.3.1 version: 2.3.1 devDependencies: @@ -633,7 +633,7 @@ importers: psl: specifier: ^1.9.0 version: 1.15.0 - punycode: + punycode.js: specifier: ^2.3.1 version: 2.3.1 rimraf: @@ -1662,6 +1662,9 @@ importers: psl: specifier: ^1.9.0 version: 1.15.0 + punycode.js: + specifier: ^2.3.1 + version: 2.3.1 qiniu: specifier: ^7.12.0 version: 7.14.0 @@ -20737,13 +20740,13 @@ snapshots: resolve: 1.22.10 semver: 6.3.1 - eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8): + eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8): dependencies: eslint: 7.32.0 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 optionalDependencies: - eslint-config-prettier: 8.10.0(eslint@8.57.0) + eslint-config-prettier: 8.10.0(eslint@7.32.0) eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): dependencies: @@ -23451,7 +23454,7 @@ snapshots: eslint: 7.32.0 eslint-config-prettier: 8.10.0(eslint@7.32.0) eslint-plugin-node: 11.1.0(eslint@7.32.0) - eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8) + eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8) execa: 5.1.1 inquirer: 7.3.3 json5: 2.2.3 From 55d439516080325bbe433ab7da693877e2f8ba75 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 5 Jun 2025 11:26:27 +0800 Subject: [PATCH 10/26] chore: --- .../certd-server/src/plugins/plugin-namesilo/dns-provider.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/ui/certd-server/src/plugins/plugin-namesilo/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-namesilo/dns-provider.ts index f0bc6971..693dccb3 100644 --- a/packages/ui/certd-server/src/plugins/plugin-namesilo/dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-namesilo/dns-provider.ts @@ -23,6 +23,11 @@ export class NamesiloDnsProvider extends AbstractDnsProvider { // 也可以通过ctx成员变量传递context this.access = this.ctx.access as NamesiloAccess; } + usePunyCode(): boolean { + //是否使用punycode来添加解析记录 + //默认都使用原始中文域名来添加 + return true; + } private async doRequest(url: string, params: any = null) { params = merge( From d7dda336ec76358b06887ac809db7bca64704d9d Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 5 Jun 2025 13:25:17 +0800 Subject: [PATCH 11/26] chore: --- .../src/plugins/plugin-github/plugins/plugin-check-release.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/ui/certd-server/src/plugins/plugin-github/plugins/plugin-check-release.ts b/packages/ui/certd-server/src/plugins/plugin-github/plugins/plugin-check-release.ts index 1b85300b..98698e64 100644 --- a/packages/ui/certd-server/src/plugins/plugin-github/plugins/plugin-check-release.ts +++ b/packages/ui/certd-server/src/plugins/plugin-github/plugins/plugin-check-release.ts @@ -78,6 +78,9 @@ export class GithubCheckRelease extends AbstractTaskPlugin { this.lastVersion = res.tag_name; const body = res.body.replaceAll("* ","- ") + if (this.notificationIds == null){ + this.notificationIds = [0] + } //发送通知 for (const notificationId of this.notificationIds) { await this.ctx.notificationService.send({ From 03e2e9949837b34eb3ea56d14a9e8a5dabc96063 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 5 Jun 2025 13:49:27 +0800 Subject: [PATCH 12/26] =?UTF-8?q?perf:=20=E5=88=86=E7=BB=84=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=94=AF=E6=8C=81=E6=B8=85=E7=A9=BA=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/certd/pipeline/group/group-selector.vue | 2 +- .../plugins/plugin-github/plugins/plugin-check-release.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/ui/certd-client/src/views/certd/pipeline/group/group-selector.vue b/packages/ui/certd-client/src/views/certd/pipeline/group/group-selector.vue index 48cd2e8b..d370dbcb 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/group/group-selector.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/group/group-selector.vue @@ -1,7 +1,7 @@