From 9b8f60b64b5f9a3db7dfa9b3dcbd9201984358d0 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 21 Apr 2025 12:13:01 +0800 Subject: [PATCH 01/12] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E6=8F=92=E4=BB=B6=E5=88=97=E8=A1=A8=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/framework/home/dashboard/index.vue | 15 +++- pnpm-lock.yaml | 82 +++++++++---------- 2 files changed, 53 insertions(+), 44 deletions(-) diff --git a/packages/ui/certd-client/src/views/framework/home/dashboard/index.vue b/packages/ui/certd-client/src/views/framework/home/dashboard/index.vue index d5333eb8..f939db99 100644 --- a/packages/ui/certd-client/src/views/framework/home/dashboard/index.vue +++ b/packages/ui/certd-client/src/views/framework/home/dashboard/index.vue @@ -103,16 +103,20 @@ - + +
-
+
{{ item.title }}
-
+
@@ -288,12 +292,17 @@ function openUpgradeUrl() { .plugin-list { margin: 0 20px; + .ant-card .ant-card-body { + padding: 16px; + } .plugin-item-col { margin-bottom: 10px; .plugin-item { display: flex; justify-items: center; line-height: 20px; + overflow: hidden; + flex: 1; .icon { display: flex; justify-items: center; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5dfa03a..b8bc7dae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: packages/core/acme-client: dependencies: '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../basic '@peculiar/x509': specifier: ^1.11.0 @@ -204,10 +204,10 @@ importers: packages/core/pipeline: dependencies: '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../basic '@certd/plus-core': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../pro/plus-core dayjs: specifier: ^1.11.7 @@ -412,7 +412,7 @@ importers: packages/libs/lib-k8s: dependencies: '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/basic '@kubernetes/client-node': specifier: 0.21.0 @@ -452,16 +452,16 @@ importers: packages/libs/lib-server: dependencies: '@certd/acme-client': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/pipeline '@certd/plus-core': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../pro/plus-core '@midwayjs/cache': specifier: ~3.14.0 @@ -604,16 +604,16 @@ importers: packages/plugins/plugin-cert: dependencies: '@certd/acme-client': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/pipeline '@certd/plugin-lib': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../plugin-lib '@google-cloud/publicca': specifier: ^1.3.0 @@ -680,10 +680,10 @@ importers: specifier: ^1.7.10 version: 1.8.0 '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/pipeline '@kubernetes/client-node': specifier: 0.21.0 @@ -771,19 +771,19 @@ importers: packages/pro/commercial-core: dependencies: '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/basic '@certd/lib-server': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../libs/lib-server '@certd/pipeline': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/pipeline '@certd/plugin-plus': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../plugin-plus '@certd/plus-core': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../plus-core '@midwayjs/core': specifier: ~3.20.3 @@ -868,22 +868,22 @@ importers: specifier: ^1.0.2 version: 1.0.2 '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/basic '@certd/lib-k8s': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../libs/lib-k8s '@certd/pipeline': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../plugins/plugin-lib '@certd/plus-core': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../plus-core ali-oss: specifier: ^6.21.0 @@ -980,7 +980,7 @@ importers: packages/pro/plus-core: dependencies: '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/basic dayjs: specifier: ^1.11.7 @@ -1270,10 +1270,10 @@ importers: version: 0.1.3(zod@3.24.2) devDependencies: '@certd/lib-iframe': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../libs/lib-iframe '@certd/pipeline': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/pipeline '@rollup/plugin-commonjs': specifier: ^25.0.7 @@ -1453,43 +1453,43 @@ importers: specifier: ^3.705.0 version: 3.758.0(aws-crt@1.25.3) '@certd/acme-client': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/basic '@certd/commercial-core': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../pro/commercial-core '@certd/jdcloud': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../libs/lib-jdcloud '@certd/lib-huawei': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../libs/lib-huawei '@certd/lib-k8s': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../libs/lib-k8s '@certd/lib-server': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../libs/lib-server '@certd/midway-flyway-js': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../libs/midway-flyway-js '@certd/pipeline': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../plugins/plugin-lib '@certd/plugin-plus': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../pro/plugin-plus '@certd/plus-core': - specifier: ^1.33.5 + specifier: ^1.33.6 version: link:../../pro/plus-core '@corsinvest/cv4pve-api-javascript': specifier: ^8.3.0 From 8385bcc2d7f2411a07748bb5c53f9eaf4d38d7cc Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 21 Apr 2025 17:26:42 +0800 Subject: [PATCH 02/12] =?UTF-8?q?perf:=20ssh=20PTY=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/plugins/plugin-lib/src/ssh/ssh-access.ts | 11 +++++++++++ packages/plugins/plugin-lib/src/ssh/ssh.ts | 6 ++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/plugins/plugin-lib/src/ssh/ssh-access.ts b/packages/plugins/plugin-lib/src/ssh/ssh-access.ts index 9e4786e3..60c9d90a 100644 --- a/packages/plugins/plugin-lib/src/ssh/ssh-access.ts +++ b/packages/plugins/plugin-lib/src/ssh/ssh-access.ts @@ -63,6 +63,17 @@ export class SshAccess extends BaseAccess { }) passphrase!: string; + @AccessInput({ + title: "伪终端", + helper: "如果登录报错:all authentication methods failed,可以尝试开启伪终端模式进行keyboard-interactive方式登录", + value:false, + component: { + name: "a-switch", + vModel: "checked", + }, + }) + pty = false; + @AccessInput({ title: "socks代理", helper: "socks代理配置,格式:socks5://user:password@host:port", diff --git a/packages/plugins/plugin-lib/src/ssh/ssh.ts b/packages/plugins/plugin-lib/src/ssh/ssh.ts index a86b7464..7000d570 100644 --- a/packages/plugins/plugin-lib/src/ssh/ssh.ts +++ b/packages/plugins/plugin-lib/src/ssh/ssh.ts @@ -170,7 +170,9 @@ export class AsyncSsh2Client { // } return new Promise((resolve, reject) => { this.logger.info(`执行命令:[${this.connConf.host}][exec]: \n` + script); - this.conn.exec(script, { pty: true, env: opts.env }, (err: Error, stream: any) => { + // pty 必须为false, 否则返回值会带上 所有输出,影响返回结果判断, 比如 root#: xxxx + // 当使用keyboard-interactive 登录时,需要pty + this.conn.exec(script, { pty: this.connConf.pty ?? false, env: opts.env }, (err: Error, stream: any) => { if (err) { reject(err); return; @@ -475,7 +477,7 @@ export class SshClient { script = envScripts.join(newLine) + newLine + script; } } - return await conn.exec(script as string, { env: options.env }); + return await conn.exec(script as string, {}); }, }); } From 42dfe936b773b7bdd82ca3378363252ffffd7b71 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 21 Apr 2025 17:34:26 +0800 Subject: [PATCH 03/12] =?UTF-8?q?perf:=20ssh=E4=BC=AA=E7=BB=88=E7=AB=AF?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=BC=98=E5=8C=96=EF=BC=8Cwindows=E4=B8=8B?= =?UTF-8?q?=E4=B8=8D=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/plugin-lib/src/ssh/ssh-access.ts | 19 +++++++++---------- packages/plugins/plugin-lib/src/ssh/ssh.ts | 7 ++++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/plugins/plugin-lib/src/ssh/ssh-access.ts b/packages/plugins/plugin-lib/src/ssh/ssh-access.ts index 60c9d90a..ecf75519 100644 --- a/packages/plugins/plugin-lib/src/ssh/ssh-access.ts +++ b/packages/plugins/plugin-lib/src/ssh/ssh-access.ts @@ -63,16 +63,15 @@ export class SshAccess extends BaseAccess { }) passphrase!: string; - @AccessInput({ - title: "伪终端", - helper: "如果登录报错:all authentication methods failed,可以尝试开启伪终端模式进行keyboard-interactive方式登录", - value:false, - component: { - name: "a-switch", - vModel: "checked", - }, - }) - pty = false; + // @AccessInput({ + // title: "伪终端", + // helper: "如果登录报错:all authentication methods failed,可以尝试开启伪终端模式进行keyboard-interactive方式登录", + // component: { + // name: "a-switch", + // vModel: "checked", + // }, + // }) + // pty!: boolean; @AccessInput({ title: "socks代理", diff --git a/packages/plugins/plugin-lib/src/ssh/ssh.ts b/packages/plugins/plugin-lib/src/ssh/ssh.ts index 7000d570..b6322c47 100644 --- a/packages/plugins/plugin-lib/src/ssh/ssh.ts +++ b/packages/plugins/plugin-lib/src/ssh/ssh.ts @@ -170,9 +170,10 @@ export class AsyncSsh2Client { // } return new Promise((resolve, reject) => { this.logger.info(`执行命令:[${this.connConf.host}][exec]: \n` + script); - // pty 必须为false, 否则返回值会带上 所有输出,影响返回结果判断, 比如 root#: xxxx - // 当使用keyboard-interactive 登录时,需要pty - this.conn.exec(script, { pty: this.connConf.pty ?? false, env: opts.env }, (err: Error, stream: any) => { + // pty 伪终端,window下的输出会带上conhost.exe之类的多余的字符串,影响返回结果判断 + // linux下 当使用keyboard-interactive 登录时,需要pty + const pty = !this.connConf.windows //linux下开启伪终端,windows下不开启 + this.conn.exec(script, { pty, env: opts.env }, (err: Error, stream: any) => { if (err) { reject(err); return; From abea80e3ab9b1672aebe1c5d5e856693b29931a8 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 21 Apr 2025 23:39:33 +0800 Subject: [PATCH 04/12] =?UTF-8?q?perf:=20=E6=B7=BB=E5=8A=A0=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E8=AF=81=E4=B9=A6=E8=87=B3=E7=81=AB=E5=B1=B1=20Live?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 VolcengineDeployToLive 插件,用于将证书部署到火山引擎视频直播 - 新增 VolcengineDeployToVOD 插件,用于将证书部署到火山引擎视频点播 - 更新 ve-client.ts,增加对 Live 和 VOD 服务的支持 --- .../plugin-volcengine/plugins/index.ts | 1 + .../plugins/plugin-deploy-to-live.ts | 144 +++++++++++++ .../plugins/plugin-deploy-to-vod.ts | 199 ++++++++++++++++++ .../plugins/plugin-volcengine/ve-client.ts | 31 ++- 4 files changed, 373 insertions(+), 2 deletions(-) create mode 100644 packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/plugin-deploy-to-live.ts create mode 100644 packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/plugin-deploy-to-vod.ts diff --git a/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/index.ts b/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/index.ts index f1fe8c1e..1f6adb71 100644 --- a/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/index.ts @@ -2,3 +2,4 @@ export * from './plugin-deploy-to-cdn.js' export * from './plugin-deploy-to-clb.js' export * from './plugin-upload-to-cert-center.js' export * from './plugin-deploy-to-alb.js' +export * from './plugin-deploy-to-live.js' diff --git a/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/plugin-deploy-to-live.ts b/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/plugin-deploy-to-live.ts new file mode 100644 index 00000000..908e44f0 --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/plugin-deploy-to-live.ts @@ -0,0 +1,144 @@ +import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; +import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; +import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; +import { VolcengineAccess } from "../access.js"; +import { VolcengineClient } from "../ve-client.js"; + +@IsTaskPlugin({ + name: "VolcengineDeployToLive", + title: "火山引擎-部署证书至Live", + icon: "svg:icon-volcengine", + group: pluginGroups.volcengine.key, + desc: "部署至火山引擎视频直播", + default: { + strategy: { + runStrategy: RunStrategy.SkipWhenSucceed + } + } +}) +export class VolcengineDeployToLive extends AbstractTaskPlugin { + @TaskInput({ + title: "域名证书", + helper: "请选择前置任务输出的域名证书", + component: { + name: "output-selector", + from: [...CertApplyPluginNames] + }, + required: true + }) + cert!: CertInfo; + + @TaskInput(createCertDomainGetterInputDefine({ props: { required: false } })) + certDomains!: string[]; + + + @TaskInput({ + title: "Access授权", + helper: "火山引擎AccessKeyId、AccessKeySecret", + component: { + name: "access-selector", + type: "volcengine" + }, + required: true + }) + accessId!: string; + + + @TaskInput( + createRemoteSelectInputDefine({ + title: "直播域名", + helper: "选择要部署证书的直播域名", + action: VolcengineDeployToLive.prototype.onGetDomainList.name, + watches: ["certDomains", "accessId"], + required: true + }) + ) + domainList!: string | string[]; + + + async onInstance() { + } + + async execute(): Promise { + this.logger.info("开始部署证书到火山引擎视频直播"); + const service = await this.getLiveService(); + let certId = await this.uploadCert(service); + + + for (const item of this.domainList) { + this.logger.info(`开始部署直播域名${item}证书`); + await service.request({ + action: "BindCert", + body: { + Domain: item, + HTTPS: true, + ChainID: certId + } + }); + this.logger.info(`部署直播域名${item}证书成功`); + } + + this.logger.info("部署完成"); + } + + + private async uploadCert(liveService: any) { + const res = await liveService.request({ + action: "CreateCert", + body: { + Rsa: { + Pubkey: this.cert.crt, + Prikey: this.cert.key + }, + UseWay: "https" + } + }); + + const certId = res.Result.ChainID; + this.logger.info("证书上传成功", certId); + return certId; + } + + + private async getLiveService() { + const access = await this.getAccess(this.accessId); + + const client = new VolcengineClient({ + logger: this.logger, + access, + http: this.http + }); + + return await client.getLiveService(); + } + + async onGetDomainList(data: any) { + if (!this.accessId) { + throw new Error("请选择Access授权"); + } + const service = await this.getLiveService(); + + const res = await service.request({ + action: "ListDomainDetail", + body: { + "PageNum": 1, + "PageSize": 100 + } + }); + + const list = res.Result?.DomainList; + if (!list || list.length === 0) { + throw new Error("找不到直播域名,您也可以手动输入域名"); + } + const options = list.map((item: any) => { + return { + value: item.Domain, + label: `${item.Domain}<${item.Type}>`, + domain: item.Domain + }; + }); + return this.ctx.utils.options.buildGroupOptions(options, this.certDomains); + } +} + +new VolcengineDeployToLive(); diff --git a/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/plugin-deploy-to-vod.ts b/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/plugin-deploy-to-vod.ts new file mode 100644 index 00000000..6425c8d7 --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-volcengine/plugins/plugin-deploy-to-vod.ts @@ -0,0 +1,199 @@ +import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; +import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; +import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; +import { VolcengineAccess } from "../access.js"; +import { VolcengineClient } from "../ve-client.js"; + +@IsTaskPlugin({ + name: "VolcengineDeployToVOD", + title: "火山引擎-部署证书至VOD", + icon: "svg:icon-volcengine", + group: pluginGroups.volcengine.key, + desc: "部署至火山引擎视频点播(暂不可用)", + deprecated:"暂时缺少部署ssl接口", + default: { + strategy: { + runStrategy: RunStrategy.SkipWhenSucceed + } + } +}) +export class VolcengineDeployToVOD extends AbstractTaskPlugin { + @TaskInput({ + title: "域名证书", + helper: "请选择前置任务输出的域名证书", + component: { + name: "output-selector", + from: [...CertApplyPluginNames, "VolcengineUploadToCertCenter"] + }, + required: true + }) + cert!: CertInfo | string; + + @TaskInput(createCertDomainGetterInputDefine({ props: { required: false } })) + certDomains!: string[]; + + + @TaskInput({ + title: "Access授权", + helper: "火山引擎AccessKeyId、AccessKeySecret", + component: { + name: "access-selector", + type: "volcengine" + }, + required: true + }) + accessId!: string; + + + @TaskInput( + // createRemoteSelectInputDefine({ + // title: "空间名称", + // helper: "选择要部署证书的监听器\n需要在监听器中选择证书中心,进行跨服务访问授权", + // action: VolcengineDeployToVOD.prototype.onGetSpaceList.name, + // watches: ["certDomains", "accessId", "regionId"], + // required: true + // }) + { + title: "空间名称", + required: true + } + ) + spaceName!: string; + + @TaskInput( + createRemoteSelectInputDefine({ + title: "点播域名", + helper: "选择要部署证书的点播域名\n需要先在域名管理页面进行证书中心访问授权(即点击去配置SSL证书)", + action: VolcengineDeployToVOD.prototype.onGetDomainList.name, + watches: ["certDomains", "accessId", "spaceName"], + required: true + }) + ) + domainList!: string | string[]; + + + async onInstance() { + } + + async execute(): Promise { + this.logger.info("开始部署证书到火山引擎VOD"); + const access = await this.getAccess(this.accessId); + let certId = await this.uploadOrGetCertId(access); + + const service = await this.getVodService(); + for (const item of this.domainList) { + this.logger.info(`开始部署点播域名${item}证书`); + await service.request({ + action: "ModifyListenerAttributes", + query: { + ListenerId: item, + CertificateSource: "cert_center", + CertCenterCertificateId: certId + } + }); + this.logger.info(`部署点播域名${item}证书成功`); + } + + this.logger.info("部署完成"); + } + + + private async uploadOrGetCertId(access: VolcengineAccess) { + const certService = await this.getCertService(access); + let certId = this.cert; + if (typeof certId !== "string") { + const certInfo = this.cert as CertInfo; + this.logger.info(`开始上传证书`); + certId = await certService.ImportCertificate({ + certName: this.appendTimeSuffix("certd"), + cert: certInfo + }); + this.logger.info(`上传证书成功:${certId}`); + } else { + this.logger.info(`使用已有证书ID:${certId}`); + } + return certId; + } + + private async getCertService(access: VolcengineAccess) { + const client = new VolcengineClient({ + logger: this.logger, + access, + http: this.http + }); + + return await client.getCertCenterService(); + } + + + private async getVodService(req?: { version?: string }) { + const access = await this.getAccess(this.accessId); + + const client = new VolcengineClient({ + logger: this.logger, + access, + http: this.http + }); + + return await client.getVodService(req); + } + + // async onGetSpaceList(data: any) { + // if (!this.accessId) { + // throw new Error("请选择Access授权"); + // } + // const service = await this.getVodService(); + // + // const res = await service.request({ + // action: "ListSpace", + // method: "GET", + // query: { + // PageSize: 100, + // }, + // }); + // + // const list = res.Result; + // if (!list || list.length === 0) { + // throw new Error("找不到空间,您可以手动填写"); + // } + // return list.map((item: any) => { + // return { + // value: item.SpaceName, + // label: `${item.SpaceName}` + // }; + // }); + // } + + async onGetDomainList(data: any) { + if (!this.accessId) { + throw new Error("请选择Access授权"); + } + const service = await this.getVodService(); + + const res = await service.request({ + action: "ListDomain", + body: { + SpaceName: this.spaceName, + Offset: 100 + } + }); + + const instances = res.Result?.PlayInstanceInfo?.ByteInstances; + if (!instances || instances.length === 0) { + throw new Error("找不到点播域名,您也可以手动输入点播域名"); + } + const list = [] + for (const item of instances) { + for (const domain of item.Domains) { + list.push({ + value: item.Domain, + label: item.Domain, + domain: domain.Domain + }); + } + } + return this.ctx.utils.options.buildGroupOptions(list, this.certDomains); + } +} + +new VolcengineDeployToVOD(); diff --git a/packages/ui/certd-server/src/plugins/plugin-volcengine/ve-client.ts b/packages/ui/certd-server/src/plugins/plugin-volcengine/ve-client.ts index 445340df..adcf707a 100644 --- a/packages/ui/certd-server/src/plugins/plugin-volcengine/ve-client.ts +++ b/packages/ui/certd-server/src/plugins/plugin-volcengine/ve-client.ts @@ -28,7 +28,7 @@ export class VolcengineClient { service.ImportCertificate = async (body: { certName: string, cert: any }) => { const { certName, cert } = body; - const res = await service.request({ + const res = await service.request({ action: "ImportCertificate", method: "POST", body: { @@ -40,7 +40,7 @@ export class VolcengineClient { } } }); - return res.Result.InstanceId || res.Result.RepeatId + return res.Result.InstanceId || res.Result.RepeatId; }; return service; } @@ -59,6 +59,33 @@ export class VolcengineClient { return service; } + async getLiveService() { + const CommonService = await this.getServiceCls(); + + const service = new CommonService({ + serviceName: "live", + defaultVersion: "2023-01-01" + }); + service.setAccessKeyId(this.opts.access.accessKeyId); + service.setSecretKey(this.opts.access.secretAccessKey); + service.setRegion("cn-north-1"); + + return service; + } + + async getVodService(opts?: { version?: string }) { + const CommonService = await this.getServiceCls(); + + const service = new CommonService({ + serviceName: "vod", + defaultVersion: opts?.version || "2021-01-01" + }); + service.setAccessKeyId(this.opts.access.accessKeyId); + service.setSecretKey(this.opts.access.secretAccessKey); + + return service; + } + async getAlbService(opts: { region?: string }) { const CommonService = await this.getServiceCls(); From 96a0900edc95dcfd9acccf9d13592f12f5a09b3d Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Apr 2025 07:26:11 +0800 Subject: [PATCH 05/12] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=8151dns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/basic/src/utils/util.request.ts | 102 +++++---- packages/ui/certd-server/package.json | 1 + packages/ui/certd-server/src/plugins/index.ts | 1 + .../src/plugins/plugin-51dns/access.ts | 40 ++++ .../src/plugins/plugin-51dns/client.ts | 200 ++++++++++++++++++ .../src/plugins/plugin-51dns/dns-provider.ts | 97 +++++++++ .../src/plugins/plugin-51dns/index.ts | 3 + pnpm-lock.yaml | 9 +- 8 files changed, 398 insertions(+), 55 deletions(-) create mode 100644 packages/ui/certd-server/src/plugins/plugin-51dns/access.ts create mode 100644 packages/ui/certd-server/src/plugins/plugin-51dns/client.ts create mode 100644 packages/ui/certd-server/src/plugins/plugin-51dns/dns-provider.ts create mode 100644 packages/ui/certd-server/src/plugins/plugin-51dns/index.ts diff --git a/packages/core/basic/src/utils/util.request.ts b/packages/core/basic/src/utils/util.request.ts index 8a363e84..983b1e39 100644 --- a/packages/core/basic/src/utils/util.request.ts +++ b/packages/core/basic/src/utils/util.request.ts @@ -1,13 +1,13 @@ -import axios, { AxiosHeaders, AxiosRequestConfig } from 'axios'; -import { ILogger, logger } from './util.log.js'; -import { Logger } from 'log4js'; -import { HttpProxyAgent } from 'http-proxy-agent'; -import { HttpsProxyAgent } from 'https-proxy-agent'; -import nodeHttp from 'http'; -import * as https from 'node:https'; -import { merge } from 'lodash-es'; -import { safePromise } from './util.promise.js'; -import fs from 'fs'; +import axios, { AxiosHeaders, AxiosRequestConfig } from "axios"; +import { ILogger, logger } from "./util.log.js"; +import { Logger } from "log4js"; +import { HttpProxyAgent } from "http-proxy-agent"; +import { HttpsProxyAgent } from "https-proxy-agent"; +import nodeHttp from "http"; +import * as https from "node:https"; +import { merge } from "lodash-es"; +import { safePromise } from "./util.promise.js"; +import fs from "fs"; export class HttpError extends Error { status?: number; statusText?: string; @@ -22,10 +22,10 @@ export class HttpError extends Error { super(error.message || error.response?.statusText); const message = error?.message; - if (message && typeof message === 'string') { - if (message.indexOf && message.indexOf('ssl3_get_record:wrong version number') >= 0) { + if (message && typeof message === "string") { + if (message.indexOf && message.indexOf("ssl3_get_record:wrong version number") >= 0) { this.message = `${message}(http协议错误,服务端要求http协议,请检查是否使用了https请求)`; - } else if (message.indexOf('getaddrinfo EAI_AGAIN') >= 0) { + } else if (message.indexOf("getaddrinfo EAI_AGAIN") >= 0) { this.message = `${message}(无法解析域名,请检查网络连接或dns配置,更换docker-compose.yaml中dns配置)`; } } @@ -47,7 +47,7 @@ export class HttpError extends Error { }; let url = error.config?.url; if (error.config?.baseURL) { - url = (error.config?.baseURL || '') + url; + url = (error.config?.baseURL || "") + url; } if (url) { this.message = `${this.message} 【${url}】`; @@ -73,7 +73,7 @@ export const HttpCommonError = HttpError; let defaultAgents = createAgent(); export function setGlobalProxy(opts: { httpProxy?: string; httpsProxy?: string }) { - logger.info('setGlobalProxy:', opts); + logger.info("setGlobalProxy:", opts); defaultAgents = createAgent(opts); } @@ -102,12 +102,12 @@ export function createAxiosService({ logger }: { logger: Logger }) { if (config.skipSslVerify || config.httpProxy) { let rejectUnauthorized = true; if (config.skipSslVerify) { - logger.info('跳过SSL验证'); + logger.info("跳过SSL验证"); rejectUnauthorized = false; } const proxy: any = {}; if (config.httpProxy) { - logger.info('使用自定义http代理:', config.httpProxy); + logger.info("使用自定义http代理:", config.httpProxy); proxy.httpProxy = config.httpProxy; proxy.httpsProxy = config.httpProxy; } @@ -128,7 +128,7 @@ export function createAxiosService({ logger }: { logger: Logger }) { }, (error: Error) => { // 发送失败 - logger.error('接口请求失败:', error); + logger.error("接口请求失败:", error); return Promise.reject(error); } ); @@ -143,7 +143,7 @@ export function createAxiosService({ logger }: { logger: Logger }) { logger.info(`http response : status=${response?.status},data=${resData}`); } else { - logger.info('http response status:', response?.status); + logger.info("http response status:", response?.status); } if (response?.config?.returnResponse) { return response; @@ -154,53 +154,51 @@ export function createAxiosService({ logger }: { logger: Logger }) { const status = error.response?.status; switch (status) { case 400: - error.message = '请求错误'; + error.message = "请求错误"; break; case 401: - error.message = '认证/登录失败'; + error.message = "认证/登录失败"; break; case 403: - error.message = '拒绝访问'; + error.message = "拒绝访问"; break; case 404: error.message = `请求地址出错`; break; case 408: - error.message = '请求超时'; + error.message = "请求超时"; break; case 500: - error.message = '服务器内部错误'; + error.message = "服务器内部错误"; break; case 501: - error.message = '服务未实现'; + error.message = "服务未实现"; break; case 502: - error.message = '网关错误'; + error.message = "网关错误"; break; case 503: - error.message = '服务不可用'; + error.message = "服务不可用"; break; case 504: - error.message = '网关超时'; + error.message = "网关超时"; break; case 505: - error.message = 'HTTP版本不受支持'; + error.message = "HTTP版本不受支持"; break; default: break; } - logger.error( - `请求出错:status:${error.response?.status},statusText:${error.response?.statusText},url:${error.config?.url},method:${error.config?.method}。` - ); - logger.error('返回数据:', JSON.stringify(error.response?.data)); + logger.error(`请求出错:status:${error.response?.status},statusText:${error.response?.statusText},url:${error.config?.url},method:${error.config?.method}。`); + logger.error("返回数据:", JSON.stringify(error.response?.data)); if (error.response?.data) { const message = error.response.data.message || error.response.data.msg || error.response.data.error; - if (typeof message === 'string') { + if (typeof message === "string") { error.message = message; } } if (error instanceof AggregateError) { - logger.error('AggregateError', error); + logger.error("AggregateError", error); } const err = new HttpError(error); return Promise.reject(err); @@ -244,24 +242,24 @@ export function createAgent(opts: CreateAgentOptions = {}) { if (httpProxy) { process.env.HTTP_PROXY = httpProxy; process.env.http_proxy = httpProxy; - logger.info('use httpProxy:', httpProxy); + logger.info("use httpProxy:", httpProxy); httpAgent = new HttpProxyAgent(httpProxy, opts as any); merge(httpAgent.options, opts); } else { - process.env.HTTP_PROXY = ''; - process.env.http_proxy = ''; + process.env.HTTP_PROXY = ""; + process.env.http_proxy = ""; httpAgent = new nodeHttp.Agent(opts); } const httpsProxy = opts.httpsProxy; if (httpsProxy) { process.env.HTTPS_PROXY = httpsProxy; process.env.https_proxy = httpsProxy; - logger.info('use httpsProxy:', httpsProxy); + logger.info("use httpsProxy:", httpsProxy); httpsAgent = new HttpsProxyAgent(httpsProxy, opts as any); merge(httpsAgent.options, opts); } else { - process.env.HTTPS_PROXY = ''; - process.env.https_proxy = ''; + process.env.HTTPS_PROXY = ""; + process.env.https_proxy = ""; httpsAgent = new https.Agent(opts); } return { @@ -276,27 +274,27 @@ export async function download(req: { http: HttpClient; config: HttpRequestConfi http .request({ logRes: false, - responseType: 'stream', + responseType: "stream", ...config, }) .then(res => { const writer = fs.createWriteStream(savePath); res.pipe(writer); - writer.on('close', () => { - logger.info('文件下载成功'); + writer.on("close", () => { + logger.info("文件下载成功"); resolve(true); }); //error - writer.on('error', err => { - logger.error('下载失败', err); + writer.on("error", err => { + logger.error("下载失败", err); reject(err); }); //进度条打印 - const totalLength = res.headers['content-length']; + const totalLength = res.headers["content-length"]; let currentLength = 0; // 每5%打印一次 const step = (totalLength / 100) * 5; - res.on('data', (chunk: any) => { + res.on("data", (chunk: any) => { currentLength += chunk.length; if (currentLength % step < chunk.length) { const percent = ((currentLength / totalLength) * 100).toFixed(2); @@ -305,19 +303,19 @@ export async function download(req: { http: HttpClient; config: HttpRequestConfi }); }) .catch(err => { - logger.info('下载失败', err); + logger.info("下载失败", err); reject(err); }); }); } export function getCookie(response: any, name: string) { - const cookies = response.headers['set-cookie']; + const cookies = response.headers["set-cookie"]; //根据name 返回对应的cookie const found = cookies.find((cookie: any) => cookie.includes(name)); if (!found) { return null; } - const cookie = found.split(';')[0]; - return cookie.substring(cookie.indexOf('=') + 1); + const cookie = found.split(";")[0]; + return cookie.substring(cookie.indexOf("=") + 1); } diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index 3cbcb858..b53d43ca 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -76,6 +76,7 @@ "cos-nodejs-sdk-v5": "^2.14.6", "cron-parser": "^4.9.0", "cross-env": "^7.0.3", + "crypto-js": "^4.2.0", "dayjs": "^1.11.7", "form-data": "^4.0.0", "glob": "^11.0.0", diff --git a/packages/ui/certd-server/src/plugins/index.ts b/packages/ui/certd-server/src/plugins/index.ts index 587c33cd..594dd56e 100644 --- a/packages/ui/certd-server/src/plugins/index.ts +++ b/packages/ui/certd-server/src/plugins/index.ts @@ -18,3 +18,4 @@ export * from './plugin-dnsla/index.js'; export * from './plugin-upyun/index.js'; export * from './plugin-volcengine/index.js' export * from './plugin-jdcloud/index.js' +export * from './plugin-51dns/index.js' diff --git a/packages/ui/certd-server/src/plugins/plugin-51dns/access.ts b/packages/ui/certd-server/src/plugins/plugin-51dns/access.ts new file mode 100644 index 00000000..b665483e --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-51dns/access.ts @@ -0,0 +1,40 @@ +import { IsAccess, AccessInput, BaseAccess } from '@certd/pipeline'; + +/** + * 这个注解将注册一个授权配置 + * 在certd的后台管理系统中,用户可以选择添加此类型的授权 + */ +@IsAccess({ + name: '51dns', + title: '51dns授权', + icon: 'arcticons:dns-changer-3', + desc: '', +}) +export class Dns51Access extends BaseAccess { + /** + * 授权属性配置 + */ + @AccessInput({ + title: '用户名', + component: { + placeholder: '用户名或手机号', + }, + required: true, + encrypt: false, + }) + username = ''; + + @AccessInput({ + title: '登录密码', + component: { + name:"a-input-password", + vModel:"value", + placeholder: '密码', + }, + required: true, + encrypt: true, + }) + password = ''; +} + +new Dns51Access(); diff --git a/packages/ui/certd-server/src/plugins/plugin-51dns/client.ts b/packages/ui/certd-server/src/plugins/plugin-51dns/client.ts new file mode 100644 index 00000000..4f094135 --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-51dns/client.ts @@ -0,0 +1,200 @@ +import { createAxiosService, HttpClient, ILogger } from "@certd/basic"; +import { Dns51Access } from "./access.js"; + +export class Dns51Client { + logger: ILogger; + access: Dns51Access; + http: HttpClient; + cryptoJs: any; + isLogined = false; + _token = ""; + + constructor(options: { + logger: ILogger; + access: Dns51Access; + }) { + this.logger = options.logger; + this.access = options.access; + + this.http = createAxiosService({ + logger: this.logger + }); + + } + + + aes(val: string) { + if (!this.cryptoJs) { + throw new Error("crypto-js not init"); + } + const CryptoJS = this.cryptoJs; + var k = CryptoJS.enc.Utf8.parse("1234567890abcDEF"); + var iv = CryptoJS.enc.Utf8.parse("1234567890abcDEF"); + return CryptoJS.AES.encrypt(val, k, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.ZeroPadding + }).toString(); + } + + + async init() { + if (this.cryptoJs) { + return; + } + const CryptoJSModule = await import("crypto-js"); + this.cryptoJs = CryptoJSModule.default; + + } + + async login() { + if (this.isLogined) { + return; + } + await this.init(); + const res = await this.http.request({ + url: "https://www.51dns.com/login.html", + method: "get", + withCredentials: true, + logRes:false, + returnResponse:true + }); + + //提取 var csrfToken = "ieOfM21eDd9nWJv3OZtMJF6ogDsnPKQHJ17dlMck"; + const _token = res.data.match(/var csrfToken = "(.*?)"/)[1]; + this.logger.info("_token:", _token); + this._token = _token; + var obj = { + "email_or_phone": this.aes("18603046467"), + "password": this.aes("JiDian1Zu"), + "type": this.aes("account"), + "redirectTo": "https://www.51dns.com/domain", + "_token": _token + }; + const res2 = await this.http.request({ + url: "https://www.51dns.com/login", + method: "post", + data: { + ...obj + }, + withCredentials: true, + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + logRes:false, + returnResponse:true, + }); + + + // 提取 182****43522
+ // console.log(res2.headers) + // console.log(res2.data) + const username = res2.data.match(/(.*?)<\/span>/)[1]; + + this.logger.info("登录成功:username:", username); + this.isLogined = true; + } + + async getDomainId(domain: string) { + await this.login(); + + const res = await this.http.request({ + url: `https://www.51dns.com/domain?domain=${domain}&status=`, + method: "get", + withCredentials: true, + logRes:false, + returnResponse:true + }); + + // 提取 certd.top + const regex = new RegExp(``, "g"); + const matched = res.data.match(regex); + if (!matched || matched.length === 0) { + throw new Error(`域名${domain}不存在`); + } + return matched[1]; + + } + + async createRecord(param: { domain: string, data: any; domainId: void; host: string; ttl: number; type: string }) { + const { domain, data, host, type } = param; + const domainId = await this.getDomainId(domain); + const url = "https://www.51dns.com/domain/storenNewRecord"; + const req = { + _token: this._token, + domain_id: parseInt(domainId), + record: host, + type: type, + value: data, + ttl: 300, + view_id: 0 + }; + const res = await this.http.request({ + url, + method: "post", + data: req, + withCredentials: true, + headers: { + "Content-Type": "application/x-www-form-urlencoded" + } + }); + + /* + { + "status": 200, + "msg": "\u6b63\u786e", + "data": { + "record": "1111", + "type": "TXT", + "value": "2222", + "mx": "-", + "ttl": "300", + "view_id": "0", + "id": 601019779, + "domain_id": "193341603", + "trecord": "1111", + "view_name": "\u9ed8\u8ba4" + } +} + */ + if(res.status !== 200){ + throw new Error(`创建域名解析失败:${res.msg}`); + } + const id = res.data.id; + return { + id, + domainId + }; + + } + + async deleteRecord(param: { domainId: number; id: number }) { + const url ="https://www.51dns.com/domain/operateRecord" + /* + type: delete +ids[0]: 601019779 +domain_id: 193341603 +_token: ieOfM21eDd9nWJv3OZtMJF6ogDsnPKQHJ17dlMck + */ + const body = { + type: "delete", + ids: [param.id], + domain_id: param.domainId, + _token: this._token + } + const res = await this.http.request({ + url, + method: "post", + data: body, + withCredentials: true, + headers: { + "Content-Type": "application/x-www-form-urlencoded" + } + }); + if(res.status !== 200){ + throw new Error(`删除域名解析失败:${res.msg}`); + } + + } +} diff --git a/packages/ui/certd-server/src/plugins/plugin-51dns/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-51dns/dns-provider.ts new file mode 100644 index 00000000..033524fa --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-51dns/dns-provider.ts @@ -0,0 +1,97 @@ +import { AbstractDnsProvider, CreateRecordOptions, IsDnsProvider, RemoveRecordOptions } from "@certd/plugin-cert"; + +import { Dns51Access } from "./access.js"; +import { Dns51Client } from "./client.js"; + +export type Dns51Record = { + id: number; + domainId: number, + client: Dns51Client, +}; + +// 这里通过IsDnsProvider注册一个dnsProvider +@IsDnsProvider({ + name: '51dns', + title: '51dns', + desc: '51DNS', + icon: 'arcticons:dns-changer-3', + // 这里是对应的 cloudflare的access类型名称 + accessType: '51dns', +}) +export class Dns51DnsProvider extends AbstractDnsProvider { + // 通过Autowire传递context + access!: Dns51Access; + async onInstance() { + //一些初始化的操作 + // 也可以通过ctx成员变量传递context, 与Autowire效果一样 + this.access = this.ctx.access as Dns51Access; + } + + /** + * 创建dns解析记录,用于验证域名所有权 + */ + async createRecord(options: CreateRecordOptions): Promise { + /** + * fullRecord: '_acme-challenge.test.example.com', + * value: 一串uuid + * type: 'TXT', + * domain: 'example.com' + */ + const { fullRecord,hostRecord, value, type, domain } = options; + this.logger.info('添加域名解析:', fullRecord, value, type, domain); + + + const dns51Client = new Dns51Client({ + logger: this.logger, + access: this.access, + }); + + const domainId = await dns51Client.getDomainId(domain); + this.logger.info('获取domainId成功:', domainId); + + const res = await dns51Client.createRecord({ + domain: domain, + domainId: domainId, + type: 'TXT', + host: hostRecord, + data: value, + ttl: 300, + }) + return { + id: res.id, + domainId: domainId, + client: dns51Client, + }; + } + + + /** + * 删除dns解析记录,清理申请痕迹 + * @param options + */ + async removeRecord(options: RemoveRecordOptions): Promise { + const { fullRecord, value } = options.recordReq; + const record = options.recordRes; + this.logger.info('删除域名解析:', fullRecord, value); + if (!record) { + this.logger.info('record为空,不执行删除'); + return; + } + //这里调用删除txt dns解析记录接口 + /** + * 请求示例 + * DELETE /api/record?id=85371689655342080 HTTP/1.1 + * Authorization: Basic {token} + * 请求参数 + */ + const { client,id,domainId} = record + await client.deleteRecord({ + id, + domainId + }) + this.logger.info(`删除域名解析成功:fullRecord=${fullRecord},id=${id}`); + } +} + +//实例化这个provider,将其自动注册到系统中 +new Dns51DnsProvider(); diff --git a/packages/ui/certd-server/src/plugins/plugin-51dns/index.ts b/packages/ui/certd-server/src/plugins/plugin-51dns/index.ts new file mode 100644 index 00000000..3a9e1743 --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-51dns/index.ts @@ -0,0 +1,3 @@ +export * from './dns-provider.js'; +export * from './access.js'; +export * from './client.js'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8bc7dae..4286cb03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1566,6 +1566,9 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 dayjs: specifier: ^1.11.7 version: 1.11.13 @@ -20673,13 +20676,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: @@ -23393,7 +23396,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 8638fc91ff34fccaf12ff9874fd3fa9d2a8c18b7 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Apr 2025 11:37:42 +0800 Subject: [PATCH 06/12] =?UTF-8?q?perf:=20=E8=AF=81=E4=B9=A6=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=94=AF=E6=8C=8151dns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/plugins/plugin-51dns/client.ts | 139 +++++++++++------- .../src/plugins/plugin-51dns/dns-provider.ts | 21 +-- 2 files changed, 99 insertions(+), 61 deletions(-) diff --git a/packages/ui/certd-server/src/plugins/plugin-51dns/client.ts b/packages/ui/certd-server/src/plugins/plugin-51dns/client.ts index 4f094135..39cd86a5 100644 --- a/packages/ui/certd-server/src/plugins/plugin-51dns/client.ts +++ b/packages/ui/certd-server/src/plugins/plugin-51dns/client.ts @@ -1,5 +1,5 @@ -import { createAxiosService, HttpClient, ILogger } from "@certd/basic"; -import { Dns51Access } from "./access.js"; +import {createAxiosService, HttpClient, ILogger} from "@certd/basic"; +import {Dns51Access} from "./access.js"; export class Dns51Client { logger: ILogger; @@ -8,6 +8,7 @@ export class Dns51Client { cryptoJs: any; isLogined = false; _token = ""; + _cookie = ""; constructor(options: { logger: ILogger; @@ -56,17 +57,27 @@ export class Dns51Client { url: "https://www.51dns.com/login.html", method: "get", withCredentials: true, - logRes:false, - returnResponse:true + logRes: false, + returnResponse: true, + headers: { + // 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36', + 'Origin': 'https://www.51dns.com', + 'Referer': 'https://www.51dns.com', + }, }); + let setCookie = res.headers['set-cookie'] + let cookie = setCookie.map((item: any) => { + return item.split(';')[0] + }).join(';') + //提取 var csrfToken = "ieOfM21eDd9nWJv3OZtMJF6ogDsnPKQHJ17dlMck"; const _token = res.data.match(/var csrfToken = "(.*?)"/)[1]; this.logger.info("_token:", _token); this._token = _token; var obj = { - "email_or_phone": this.aes("18603046467"), - "password": this.aes("JiDian1Zu"), + "email_or_phone": this.aes(this.access.username), + "password": this.aes(this.access.password), "type": this.aes("account"), "redirectTo": "https://www.51dns.com/domain", "_token": _token @@ -78,20 +89,50 @@ export class Dns51Client { ...obj }, withCredentials: true, + logRes: false, + returnResponse: true, headers: { - "Content-Type": "application/x-www-form-urlencoded" - }, - logRes:false, - returnResponse:true, + 'Origin': 'https://www.51dns.com', + 'Referer': 'https://www.51dns.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + 'X-Requested-With': 'XMLHttpRequest' + } }); + this.logger.info("return headers:", JSON.stringify(res2.headers)) + if (res2.data.code == 0) { + setCookie = res2.headers['set-cookie'] + this._cookie = setCookie.map((item: any) => { + return item.split(';')[0] + }).join(';') + this.logger.info("cookie:", this._cookie) + this.logger.info("登录成功") + } else { + throw new Error("登录失败:", res2.data) + } - // 提取 182****43522
- // console.log(res2.headers) - // console.log(res2.data) - const username = res2.data.match(/(.*?)<\/span>/)[1]; + const res3 = await this.http.request({ + url: 'https://www.51dns.com/domain', + method: 'get', + withCredentials: true, + logRes: false, + returnResponse: true, + headers: { + // 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36', + 'Origin': 'https://www.51dns.com', + 'Referer': 'https://www.51dns.com/login.html', + 'Cookie': this._cookie, + } + }) + + const success2 = res3.data.includes('DNS解析') + + if (!success2) { + throw new Error("检查登录失败") + } + this.logger.info("检查登录成功") - this.logger.info("登录成功:username:", username); this.isLogined = true; } @@ -102,63 +143,58 @@ export class Dns51Client { url: `https://www.51dns.com/domain?domain=${domain}&status=`, method: "get", withCredentials: true, - logRes:false, - returnResponse:true + logRes: false, + returnResponse: true, + headers: this.getRequestHeaders() }); // 提取
certd.top - const regex = new RegExp(``, "g"); - const matched = res.data.match(regex); - if (!matched || matched.length === 0) { + const regExp = new RegExp(`]*>${domain}<\\/a>`, "i"); + const matched = res.data.match(regExp); + if (!matched || matched.length < 1) { throw new Error(`域名${domain}不存在`); } - return matched[1]; - + const domainId = matched[1]; + this.logger.info(`域名${domain}的id为${domainId}`) + return parseInt(domainId); } - async createRecord(param: { domain: string, data: any; domainId: void; host: string; ttl: number; type: string }) { - const { domain, data, host, type } = param; + private getRequestHeaders() { + return { + 'Origin': 'https://www.51dns.com', + 'Referer': 'https://www.51dns.com', + 'Cookie': this._cookie + }; + } + + async createRecord(param: { domain: string, data: any; domainId: number; host: string; ttl: number; type: string }) { + const {domain, data, host, type} = param; const domainId = await this.getDomainId(domain); const url = "https://www.51dns.com/domain/storenNewRecord"; const req = { _token: this._token, - domain_id: parseInt(domainId), + domain_id: domainId, record: host, type: type, value: data, ttl: 300, + mx:"", view_id: 0 }; + this.logger.info("req:", JSON.stringify(req)) const res = await this.http.request({ url, method: "post", data: req, withCredentials: true, headers: { - "Content-Type": "application/x-www-form-urlencoded" + ...this.getRequestHeaders(), + 'Content-Type': 'application/x-www-form-urlencoded' } }); - /* - { - "status": 200, - "msg": "\u6b63\u786e", - "data": { - "record": "1111", - "type": "TXT", - "value": "2222", - "mx": "-", - "ttl": "300", - "view_id": "0", - "id": 601019779, - "domain_id": "193341603", - "trecord": "1111", - "view_name": "\u9ed8\u8ba4" - } -} - */ - if(res.status !== 200){ + if (res.status !== 200) { throw new Error(`创建域名解析失败:${res.msg}`); } const id = res.data.id; @@ -170,13 +206,13 @@ export class Dns51Client { } async deleteRecord(param: { domainId: number; id: number }) { - const url ="https://www.51dns.com/domain/operateRecord" - /* - type: delete + const url = "https://www.51dns.com/domain/operateRecord" + /* + type: delete ids[0]: 601019779 domain_id: 193341603 _token: ieOfM21eDd9nWJv3OZtMJF6ogDsnPKQHJ17dlMck - */ + */ const body = { type: "delete", ids: [param.id], @@ -189,10 +225,11 @@ _token: ieOfM21eDd9nWJv3OZtMJF6ogDsnPKQHJ17dlMck data: body, withCredentials: true, headers: { - "Content-Type": "application/x-www-form-urlencoded" + ...this.getRequestHeaders(), + 'Content-Type': 'application/x-www-form-urlencoded' } }); - if(res.status !== 200){ + if (res.status !== 200) { throw new Error(`删除域名解析失败:${res.msg}`); } diff --git a/packages/ui/certd-server/src/plugins/plugin-51dns/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-51dns/dns-provider.ts index 033524fa..32d57231 100644 --- a/packages/ui/certd-server/src/plugins/plugin-51dns/dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-51dns/dns-provider.ts @@ -6,7 +6,6 @@ import { Dns51Client } from "./client.js"; export type Dns51Record = { id: number; domainId: number, - client: Dns51Client, }; // 这里通过IsDnsProvider注册一个dnsProvider @@ -21,10 +20,16 @@ export type Dns51Record = { export class Dns51DnsProvider extends AbstractDnsProvider { // 通过Autowire传递context access!: Dns51Access; + + client!:Dns51Client; async onInstance() { //一些初始化的操作 // 也可以通过ctx成员变量传递context, 与Autowire效果一样 this.access = this.ctx.access as Dns51Access; + this.client = new Dns51Client({ + logger: this.logger, + access: this.access, + }); } /** @@ -41,15 +46,12 @@ export class Dns51DnsProvider extends AbstractDnsProvider { this.logger.info('添加域名解析:', fullRecord, value, type, domain); - const dns51Client = new Dns51Client({ - logger: this.logger, - access: this.access, - }); - const domainId = await dns51Client.getDomainId(domain); + + const domainId = await this.client.getDomainId(domain); this.logger.info('获取domainId成功:', domainId); - const res = await dns51Client.createRecord({ + const res = await this.client.createRecord({ domain: domain, domainId: domainId, type: 'TXT', @@ -60,7 +62,6 @@ export class Dns51DnsProvider extends AbstractDnsProvider { return { id: res.id, domainId: domainId, - client: dns51Client, }; } @@ -84,8 +85,8 @@ export class Dns51DnsProvider extends AbstractDnsProvider { * Authorization: Basic {token} * 请求参数 */ - const { client,id,domainId} = record - await client.deleteRecord({ + const {id,domainId} = record + await this.client.deleteRecord({ id, domainId }) From dc5a5fa5431ce36bd1441ff277db238ac945646c Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Apr 2025 07:26:11 +0800 Subject: [PATCH 07/12] chore: --- .../src/plugins/plugin-51dns/client.test.mjs | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 packages/ui/certd-server/src/plugins/plugin-51dns/client.test.mjs diff --git a/packages/ui/certd-server/src/plugins/plugin-51dns/client.test.mjs b/packages/ui/certd-server/src/plugins/plugin-51dns/client.test.mjs new file mode 100644 index 00000000..e068ff6e --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-51dns/client.test.mjs @@ -0,0 +1,136 @@ +import CryptoJS from 'crypto-js' + +function aes(val) { + var k = CryptoJS.enc.Utf8.parse('1234567890abcDEF'); + var iv = CryptoJS.enc.Utf8.parse('1234567890abcDEF'); + const enc = CryptoJS.AES.encrypt(val, k, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.ZeroPadding + }).toString(); + return enc; +} + + +import axios from 'axios' + +const instance = axios.create({ + baseURL: 'https://www.51dns.com', + timeout: 5000, + withCredentials: true, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } +}) + +async function login() { + + const res = await instance.request({ + url: 'https://www.51dns.com/login.html', + method: 'get', + headers: { + // 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36', + 'Origin': 'https://www.51dns.com', + 'Referer': 'https://www.51dns.com', + } + }) + + //提取 var csrfToken = "ieOfM21eDd9nWJv3OZtMJF6ogDsnPKQHJ17dlMck"; + const _token = res.data.match(/var csrfToken = "(.*?)"/)[1] + console.log(_token) + console.log(res.headers) + + + const setCookie = res.headers['set-cookie'] + const cookie = setCookie.map(item => { + return item.split(';')[0] + }).join(';') + + + var obj = { + 'email_or_phone': aes(""), + 'password': aes(""), + 'type': aes('account'), + 'redirectTo': 'https://www.51dns.com/domain', + '_token': _token + } + console.log(JSON.stringify(obj, null, 2)) + const res2 = await instance.request({ + url: 'https://www.51dns.com/login', + method: 'post', + data: { + ...obj + }, + headers: { + /** + * Origin: + * https://www.51dns.com + * Referer: + * https://www.51dns.com/login.html + * User-Agent: + * Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36 + // __root_domain_v=.51dns.com; + */ + + // 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36', + 'Origin': 'https://www.51dns.com', + 'Referer': 'https://www.51dns.com/login.html', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + //X-Requested-With: + // XMLHttpRequest + 'X-Requested-With': 'XMLHttpRequest' + } + }) + + console.log(res2.headers) + if (res2.data.code == 0) { + console.log("登录成功") + } + + const setCookie2 = res2.headers['set-cookie'] + const cookie2 = setCookie2.map(item => { + return item.split(';')[0] + }).join(';') + + // + // // console.log(res2.data) + // // 提取 182****43522
+ // console.log(res2.data.match(/(.*?)<\/span>/)[1]) + // const success1 = res2.data.includes('DNS解析') + // console.log("success", success1) + + + const res3 = await instance.request({ + url: 'https://www.51dns.com/domain', + method: 'get', + withCredentials: true, + headers: { + // 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36', + 'Origin': 'https://www.51dns.com', + 'Referer': 'https://www.51dns.com/login.html', + 'Cookie': cookie2, + } + }) + + console.log(res3.statusText) + console.log(res3.headers) + const success2 = res3.data.includes('DNS解析') + console.log("success", success2) + + + /** + *
certd.top + + */ + //上面文本中间有换行,需要提取 193341603 部分,必须有certd.top,使用 new Regexp, .号要能匹配换行符,非贪婪模式 + const regExp = new RegExp(']*>certd\\.top<\\/a>',"i"); + + const domainId = res3.data.match(regExp)[1] + + + console.log("domainId", domainId) +} + +login() From d8d255980e37a438c179c7653d8f9b8e207e2123 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Apr 2025 15:53:19 +0800 Subject: [PATCH 08/12] chore: --- .../plugins/plugin-lib/src/ssh/ssh-access.ts | 18 +++++++++--------- packages/plugins/plugin-lib/src/ssh/ssh.ts | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/plugins/plugin-lib/src/ssh/ssh-access.ts b/packages/plugins/plugin-lib/src/ssh/ssh-access.ts index ecf75519..2247b9bf 100644 --- a/packages/plugins/plugin-lib/src/ssh/ssh-access.ts +++ b/packages/plugins/plugin-lib/src/ssh/ssh-access.ts @@ -63,15 +63,15 @@ export class SshAccess extends BaseAccess { }) passphrase!: string; - // @AccessInput({ - // title: "伪终端", - // helper: "如果登录报错:all authentication methods failed,可以尝试开启伪终端模式进行keyboard-interactive方式登录", - // component: { - // name: "a-switch", - // vModel: "checked", - // }, - // }) - // pty!: boolean; + @AccessInput({ + title: "伪终端", + helper: "如果登录报错:all authentication methods failed,可以尝试开启伪终端模式进行keyboard-interactive方式登录\n开启后对日志输出有一定的影响", + component: { + name: "a-switch", + vModel: "checked", + }, + }) + pty!: boolean; @AccessInput({ title: "socks代理", diff --git a/packages/plugins/plugin-lib/src/ssh/ssh.ts b/packages/plugins/plugin-lib/src/ssh/ssh.ts index b6322c47..1648c1e4 100644 --- a/packages/plugins/plugin-lib/src/ssh/ssh.ts +++ b/packages/plugins/plugin-lib/src/ssh/ssh.ts @@ -172,7 +172,7 @@ export class AsyncSsh2Client { this.logger.info(`执行命令:[${this.connConf.host}][exec]: \n` + script); // pty 伪终端,window下的输出会带上conhost.exe之类的多余的字符串,影响返回结果判断 // linux下 当使用keyboard-interactive 登录时,需要pty - const pty = !this.connConf.windows //linux下开启伪终端,windows下不开启 + const pty = this.connConf.pty; //linux下开启伪终端,windows下不开启 this.conn.exec(script, { pty, env: opts.env }, (err: Error, stream: any) => { if (err) { reject(err); From 0a6baf331b98fd4a4ef0124d1f6976d632f0afbf Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Apr 2025 22:12:51 +0800 Subject: [PATCH 09/12] build: prepare to build --- packages/core/basic/build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/basic/build.md b/packages/core/basic/build.md index 0b792c13..5b0d1491 100644 --- a/packages/core/basic/build.md +++ b/packages/core/basic/build.md @@ -1 +1 @@ -00:04 +22:12 From a188385817e8dbd270dbdbf7f86a5b812884cf59 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Apr 2025 22:27:50 +0800 Subject: [PATCH 10/12] v1.33.7 --- CHANGELOG.md | 11 ++++++++ lerna.json | 2 +- packages/core/acme-client/CHANGELOG.md | 4 +++ packages/core/acme-client/package.json | 4 +-- packages/core/basic/CHANGELOG.md | 6 +++++ packages/core/basic/package.json | 2 +- packages/core/pipeline/CHANGELOG.md | 4 +++ packages/core/pipeline/package.json | 6 ++--- packages/libs/lib-huawei/CHANGELOG.md | 4 +++ packages/libs/lib-huawei/package.json | 2 +- packages/libs/lib-iframe/CHANGELOG.md | 4 +++ packages/libs/lib-iframe/package.json | 2 +- packages/libs/lib-jdcloud/CHANGELOG.md | 4 +++ packages/libs/lib-jdcloud/package.json | 2 +- packages/libs/lib-k8s/CHANGELOG.md | 4 +++ packages/libs/lib-k8s/package.json | 4 +-- packages/libs/lib-server/CHANGELOG.md | 4 +++ packages/libs/lib-server/package.json | 10 ++++---- packages/libs/midway-flyway-js/CHANGELOG.md | 4 +++ packages/libs/midway-flyway-js/package.json | 2 +- packages/plugins/plugin-cert/CHANGELOG.md | 4 +++ packages/plugins/plugin-cert/package.json | 10 ++++---- packages/plugins/plugin-lib/CHANGELOG.md | 7 ++++++ packages/plugins/plugin-lib/package.json | 6 ++--- packages/ui/certd-client/CHANGELOG.md | 6 +++++ packages/ui/certd-client/package.json | 6 ++--- packages/ui/certd-server/CHANGELOG.md | 8 ++++++ packages/ui/certd-server/package.json | 28 ++++++++++----------- 28 files changed, 117 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c323ded..9dc7e21a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +### Performance Improvements + +* 添加部署证书至火山 Live ([abea80e](https://github.com/certd/certd/commit/abea80e3ab9b1672aebe1c5d5e856693b29931a8)) +* 优化首页插件列表展示 ([9b8f60b](https://github.com/certd/certd/commit/9b8f60b64b5f9a3db7dfa9b3dcbd9201984358d0)) +* 证书申请支持51dns ([8638fc9](https://github.com/certd/certd/commit/8638fc91ff34fccaf12ff9874fd3fa9d2a8c18b7)) +* 支持51dns ([96a0900](https://github.com/certd/certd/commit/96a0900edc95dcfd9acccf9d13592f12f5a09b3d)) +* ssh PTY模式登录设置 ([8385bcc](https://github.com/certd/certd/commit/8385bcc2d7f2411a07748bb5c53f9eaf4d38d7cc)) +* ssh伪终端模式优化,windows下不开启 ([42dfe93](https://github.com/certd/certd/commit/42dfe936b773b7bdd82ca3378363252ffffd7b71)) + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) ### Bug Fixes diff --git a/lerna.json b/lerna.json index f8702d59..dc2ef4c8 100644 --- a/lerna.json +++ b/lerna.json @@ -9,5 +9,5 @@ } }, "npmClient": "pnpm", - "version": "1.33.6" + "version": "1.33.7" } diff --git a/packages/core/acme-client/CHANGELOG.md b/packages/core/acme-client/CHANGELOG.md index fe16363c..deec53e4 100644 --- a/packages/core/acme-client/CHANGELOG.md +++ b/packages/core/acme-client/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/publishlab/node-acme-client/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/acme-client + ## [1.33.6](https://github.com/publishlab/node-acme-client/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/acme-client diff --git a/packages/core/acme-client/package.json b/packages/core/acme-client/package.json index 5474eb03..4f227675 100644 --- a/packages/core/acme-client/package.json +++ b/packages/core/acme-client/package.json @@ -3,7 +3,7 @@ "description": "Simple and unopinionated ACME client", "private": false, "author": "nmorsman", - "version": "1.33.6", + "version": "1.33.7", "type": "module", "module": "scr/index.js", "main": "src/index.js", @@ -18,7 +18,7 @@ "types" ], "dependencies": { - "@certd/basic": "^1.33.6", + "@certd/basic": "^1.33.7", "@peculiar/x509": "^1.11.0", "asn1js": "^3.0.5", "axios": "^1.7.2", diff --git a/packages/core/basic/CHANGELOG.md b/packages/core/basic/CHANGELOG.md index a5f97dc4..cbaffcd6 100644 --- a/packages/core/basic/CHANGELOG.md +++ b/packages/core/basic/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +### Performance Improvements + +* 支持51dns ([96a0900](https://github.com/certd/certd/commit/96a0900edc95dcfd9acccf9d13592f12f5a09b3d)) + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/basic diff --git a/packages/core/basic/package.json b/packages/core/basic/package.json index 87de0d49..811672b4 100644 --- a/packages/core/basic/package.json +++ b/packages/core/basic/package.json @@ -1,7 +1,7 @@ { "name": "@certd/basic", "private": false, - "version": "1.33.6", + "version": "1.33.7", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", diff --git a/packages/core/pipeline/CHANGELOG.md b/packages/core/pipeline/CHANGELOG.md index 51af93af..0fa368ea 100644 --- a/packages/core/pipeline/CHANGELOG.md +++ b/packages/core/pipeline/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/pipeline + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/pipeline diff --git a/packages/core/pipeline/package.json b/packages/core/pipeline/package.json index 373405fd..c7ff01f9 100644 --- a/packages/core/pipeline/package.json +++ b/packages/core/pipeline/package.json @@ -1,7 +1,7 @@ { "name": "@certd/pipeline", "private": false, - "version": "1.33.6", + "version": "1.33.7", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", @@ -16,8 +16,8 @@ "test": "mocha --loader=ts-node/esm" }, "dependencies": { - "@certd/basic": "^1.33.6", - "@certd/plus-core": "^1.33.6", + "@certd/basic": "^1.33.7", + "@certd/plus-core": "^1.33.7", "dayjs": "^1.11.7", "lodash-es": "^4.17.21", "reflect-metadata": "^0.1.13" diff --git a/packages/libs/lib-huawei/CHANGELOG.md b/packages/libs/lib-huawei/CHANGELOG.md index d6b06ca4..def9c537 100644 --- a/packages/libs/lib-huawei/CHANGELOG.md +++ b/packages/libs/lib-huawei/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/lib-huawei + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/lib-huawei diff --git a/packages/libs/lib-huawei/package.json b/packages/libs/lib-huawei/package.json index ef233272..481169fa 100644 --- a/packages/libs/lib-huawei/package.json +++ b/packages/libs/lib-huawei/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-huawei", "private": false, - "version": "1.33.6", + "version": "1.33.7", "main": "./dist/bundle.js", "module": "./dist/bundle.js", "types": "./dist/d/index.d.ts", diff --git a/packages/libs/lib-iframe/CHANGELOG.md b/packages/libs/lib-iframe/CHANGELOG.md index 2af7a119..83672c0c 100644 --- a/packages/libs/lib-iframe/CHANGELOG.md +++ b/packages/libs/lib-iframe/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/lib-iframe + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) ### Performance Improvements diff --git a/packages/libs/lib-iframe/package.json b/packages/libs/lib-iframe/package.json index c9843cf9..7cb4ca97 100644 --- a/packages/libs/lib-iframe/package.json +++ b/packages/libs/lib-iframe/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-iframe", "private": false, - "version": "1.33.6", + "version": "1.33.7", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", diff --git a/packages/libs/lib-jdcloud/CHANGELOG.md b/packages/libs/lib-jdcloud/CHANGELOG.md index f11d1082..6f080955 100644 --- a/packages/libs/lib-jdcloud/CHANGELOG.md +++ b/packages/libs/lib-jdcloud/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/jdcloud + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/jdcloud diff --git a/packages/libs/lib-jdcloud/package.json b/packages/libs/lib-jdcloud/package.json index 110a26b3..20b30c2f 100644 --- a/packages/libs/lib-jdcloud/package.json +++ b/packages/libs/lib-jdcloud/package.json @@ -1,6 +1,6 @@ { "name": "@certd/jdcloud", - "version": "1.33.6", + "version": "1.33.7", "description": "jdcloud openApi sdk", "main": "./dist/bundle.js", "module": "./dist/bundle.js", diff --git a/packages/libs/lib-k8s/CHANGELOG.md b/packages/libs/lib-k8s/CHANGELOG.md index dd2f7f7c..5869e69b 100644 --- a/packages/libs/lib-k8s/CHANGELOG.md +++ b/packages/libs/lib-k8s/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/lib-k8s + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/lib-k8s diff --git a/packages/libs/lib-k8s/package.json b/packages/libs/lib-k8s/package.json index d7d25b93..cf3e595d 100644 --- a/packages/libs/lib-k8s/package.json +++ b/packages/libs/lib-k8s/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-k8s", "private": false, - "version": "1.33.6", + "version": "1.33.7", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", @@ -16,7 +16,7 @@ "preview": "vite preview" }, "dependencies": { - "@certd/basic": "^1.33.6", + "@certd/basic": "^1.33.7", "@kubernetes/client-node": "0.21.0" }, "devDependencies": { diff --git a/packages/libs/lib-server/CHANGELOG.md b/packages/libs/lib-server/CHANGELOG.md index 759e632a..ffb32e5a 100644 --- a/packages/libs/lib-server/CHANGELOG.md +++ b/packages/libs/lib-server/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/lib-server + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/lib-server diff --git a/packages/libs/lib-server/package.json b/packages/libs/lib-server/package.json index a89374de..b1a135ff 100644 --- a/packages/libs/lib-server/package.json +++ b/packages/libs/lib-server/package.json @@ -1,6 +1,6 @@ { "name": "@certd/lib-server", - "version": "1.33.6", + "version": "1.33.7", "description": "midway with flyway, sql upgrade way ", "private": false, "type": "module", @@ -27,10 +27,10 @@ ], "license": "AGPL", "dependencies": { - "@certd/acme-client": "^1.33.6", - "@certd/basic": "^1.33.6", - "@certd/pipeline": "^1.33.6", - "@certd/plus-core": "^1.33.6", + "@certd/acme-client": "^1.33.7", + "@certd/basic": "^1.33.7", + "@certd/pipeline": "^1.33.7", + "@certd/plus-core": "^1.33.7", "@midwayjs/cache": "~3.14.0", "@midwayjs/core": "~3.20.3", "@midwayjs/i18n": "~3.20.3", diff --git a/packages/libs/midway-flyway-js/CHANGELOG.md b/packages/libs/midway-flyway-js/CHANGELOG.md index 14af9698..e06e51a7 100644 --- a/packages/libs/midway-flyway-js/CHANGELOG.md +++ b/packages/libs/midway-flyway-js/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/midway-flyway-js + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/midway-flyway-js diff --git a/packages/libs/midway-flyway-js/package.json b/packages/libs/midway-flyway-js/package.json index 0c07f198..04985e26 100644 --- a/packages/libs/midway-flyway-js/package.json +++ b/packages/libs/midway-flyway-js/package.json @@ -1,6 +1,6 @@ { "name": "@certd/midway-flyway-js", - "version": "1.33.6", + "version": "1.33.7", "description": "midway with flyway, sql upgrade way ", "private": false, "type": "module", diff --git a/packages/plugins/plugin-cert/CHANGELOG.md b/packages/plugins/plugin-cert/CHANGELOG.md index efe587a9..d64ba329 100644 --- a/packages/plugins/plugin-cert/CHANGELOG.md +++ b/packages/plugins/plugin-cert/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +**Note:** Version bump only for package @certd/plugin-cert + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/plugin-cert diff --git a/packages/plugins/plugin-cert/package.json b/packages/plugins/plugin-cert/package.json index 074cb4b5..710372f7 100644 --- a/packages/plugins/plugin-cert/package.json +++ b/packages/plugins/plugin-cert/package.json @@ -1,7 +1,7 @@ { "name": "@certd/plugin-cert", "private": false, - "version": "1.33.6", + "version": "1.33.7", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -15,10 +15,10 @@ "preview": "vite preview" }, "dependencies": { - "@certd/acme-client": "^1.33.6", - "@certd/basic": "^1.33.6", - "@certd/pipeline": "^1.33.6", - "@certd/plugin-lib": "^1.33.6", + "@certd/acme-client": "^1.33.7", + "@certd/basic": "^1.33.7", + "@certd/pipeline": "^1.33.7", + "@certd/plugin-lib": "^1.33.7", "@google-cloud/publicca": "^1.3.0", "dayjs": "^1.11.7", "jszip": "^3.10.1", diff --git a/packages/plugins/plugin-lib/CHANGELOG.md b/packages/plugins/plugin-lib/CHANGELOG.md index 28c312c8..f147a37a 100644 --- a/packages/plugins/plugin-lib/CHANGELOG.md +++ b/packages/plugins/plugin-lib/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +### Performance Improvements + +* ssh PTY模式登录设置 ([8385bcc](https://github.com/certd/certd/commit/8385bcc2d7f2411a07748bb5c53f9eaf4d38d7cc)) +* ssh伪终端模式优化,windows下不开启 ([42dfe93](https://github.com/certd/certd/commit/42dfe936b773b7bdd82ca3378363252ffffd7b71)) + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) **Note:** Version bump only for package @certd/plugin-lib diff --git a/packages/plugins/plugin-lib/package.json b/packages/plugins/plugin-lib/package.json index 625e36ef..2cf54d78 100644 --- a/packages/plugins/plugin-lib/package.json +++ b/packages/plugins/plugin-lib/package.json @@ -1,7 +1,7 @@ { "name": "@certd/plugin-lib", "private": false, - "version": "1.33.6", + "version": "1.33.7", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -16,8 +16,8 @@ }, "dependencies": { "@alicloud/pop-core": "^1.7.10", - "@certd/basic": "^1.33.6", - "@certd/pipeline": "^1.33.6", + "@certd/basic": "^1.33.7", + "@certd/pipeline": "^1.33.7", "@kubernetes/client-node": "0.21.0", "ali-oss": "^6.21.0", "basic-ftp": "^5.0.5", diff --git a/packages/ui/certd-client/CHANGELOG.md b/packages/ui/certd-client/CHANGELOG.md index 7b624c67..614a96a8 100644 --- a/packages/ui/certd-client/CHANGELOG.md +++ b/packages/ui/certd-client/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +### Performance Improvements + +* 优化首页插件列表展示 ([9b8f60b](https://github.com/certd/certd/commit/9b8f60b64b5f9a3db7dfa9b3dcbd9201984358d0)) + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) ### Bug Fixes diff --git a/packages/ui/certd-client/package.json b/packages/ui/certd-client/package.json index c562afb7..2930c792 100644 --- a/packages/ui/certd-client/package.json +++ b/packages/ui/certd-client/package.json @@ -1,6 +1,6 @@ { "name": "@certd/ui-client", - "version": "1.33.6", + "version": "1.33.7", "private": true, "scripts": { "dev": "vite --open", @@ -101,8 +101,8 @@ "zod-defaults": "^0.1.3" }, "devDependencies": { - "@certd/lib-iframe": "^1.33.6", - "@certd/pipeline": "^1.33.6", + "@certd/lib-iframe": "^1.33.7", + "@certd/pipeline": "^1.33.7", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.12", diff --git a/packages/ui/certd-server/CHANGELOG.md b/packages/ui/certd-server/CHANGELOG.md index 988e5790..7c6de581 100644 --- a/packages/ui/certd-server/CHANGELOG.md +++ b/packages/ui/certd-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +### Performance Improvements + +* 添加部署证书至火山 Live ([abea80e](https://github.com/certd/certd/commit/abea80e3ab9b1672aebe1c5d5e856693b29931a8)) +* 证书申请支持51dns ([8638fc9](https://github.com/certd/certd/commit/8638fc91ff34fccaf12ff9874fd3fa9d2a8c18b7)) +* 支持51dns ([96a0900](https://github.com/certd/certd/commit/96a0900edc95dcfd9acccf9d13592f12f5a09b3d)) + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) ### Bug Fixes diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index b53d43ca..4b5cf377 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -1,6 +1,6 @@ { "name": "@certd/ui-server", - "version": "1.33.6", + "version": "1.33.7", "description": "fast-server base midway", "private": true, "type": "module", @@ -38,19 +38,19 @@ "@aws-sdk/client-acm": "^3.699.0", "@aws-sdk/client-cloudfront": "^3.699.0", "@aws-sdk/client-s3": "^3.705.0", - "@certd/acme-client": "^1.33.6", - "@certd/basic": "^1.33.6", - "@certd/commercial-core": "^1.33.6", - "@certd/jdcloud": "^1.33.6", - "@certd/lib-huawei": "^1.33.6", - "@certd/lib-k8s": "^1.33.6", - "@certd/lib-server": "^1.33.6", - "@certd/midway-flyway-js": "^1.33.6", - "@certd/pipeline": "^1.33.6", - "@certd/plugin-cert": "^1.33.6", - "@certd/plugin-lib": "^1.33.6", - "@certd/plugin-plus": "^1.33.6", - "@certd/plus-core": "^1.33.6", + "@certd/acme-client": "^1.33.7", + "@certd/basic": "^1.33.7", + "@certd/commercial-core": "^1.33.7", + "@certd/jdcloud": "^1.33.7", + "@certd/lib-huawei": "^1.33.7", + "@certd/lib-k8s": "^1.33.7", + "@certd/lib-server": "^1.33.7", + "@certd/midway-flyway-js": "^1.33.7", + "@certd/pipeline": "^1.33.7", + "@certd/plugin-cert": "^1.33.7", + "@certd/plugin-lib": "^1.33.7", + "@certd/plugin-plus": "^1.33.7", + "@certd/plus-core": "^1.33.7", "@corsinvest/cv4pve-api-javascript": "^8.3.0", "@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120", "@huaweicloud/huaweicloud-sdk-core": "^3.1.120", From 95e05336c26ec84332aeee0e3faff8061b3c0d04 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Apr 2025 22:32:18 +0800 Subject: [PATCH 11/12] build: trigger build image --- build.trigger | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.trigger b/build.trigger index 225578b6..de3fb51f 100644 --- a/build.trigger +++ b/build.trigger @@ -1 +1 @@ -00:08 +22:32 From 8d9afa7592f4c7297c76c07bb6b506d42b2b8ee7 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 22 Apr 2025 22:32:56 +0800 Subject: [PATCH 12/12] build: publish --- docs/guide/changelogs/CHANGELOG.md | 11 +++++++++++ packages/core/acme-client/package.json | 2 +- packages/core/basic/package.json | 2 +- packages/core/pipeline/package.json | 2 +- packages/libs/lib-huawei/package.json | 2 +- packages/libs/lib-iframe/package.json | 2 +- packages/libs/lib-jdcloud/package.json | 2 +- packages/libs/lib-k8s/package.json | 2 +- packages/libs/lib-server/package.json | 2 +- packages/libs/midway-flyway-js/package.json | 2 +- packages/plugins/plugin-cert/package.json | 2 +- packages/plugins/plugin-lib/package.json | 2 +- 12 files changed, 22 insertions(+), 11 deletions(-) diff --git a/docs/guide/changelogs/CHANGELOG.md b/docs/guide/changelogs/CHANGELOG.md index 2c323ded..9dc7e21a 100644 --- a/docs/guide/changelogs/CHANGELOG.md +++ b/docs/guide/changelogs/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22) + +### Performance Improvements + +* 添加部署证书至火山 Live ([abea80e](https://github.com/certd/certd/commit/abea80e3ab9b1672aebe1c5d5e856693b29931a8)) +* 优化首页插件列表展示 ([9b8f60b](https://github.com/certd/certd/commit/9b8f60b64b5f9a3db7dfa9b3dcbd9201984358d0)) +* 证书申请支持51dns ([8638fc9](https://github.com/certd/certd/commit/8638fc91ff34fccaf12ff9874fd3fa9d2a8c18b7)) +* 支持51dns ([96a0900](https://github.com/certd/certd/commit/96a0900edc95dcfd9acccf9d13592f12f5a09b3d)) +* ssh PTY模式登录设置 ([8385bcc](https://github.com/certd/certd/commit/8385bcc2d7f2411a07748bb5c53f9eaf4d38d7cc)) +* ssh伪终端模式优化,windows下不开启 ([42dfe93](https://github.com/certd/certd/commit/42dfe936b773b7bdd82ca3378363252ffffd7b71)) + ## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20) ### Bug Fixes diff --git a/packages/core/acme-client/package.json b/packages/core/acme-client/package.json index 4f227675..01e88030 100644 --- a/packages/core/acme-client/package.json +++ b/packages/core/acme-client/package.json @@ -67,5 +67,5 @@ "bugs": { "url": "https://github.com/publishlab/node-acme-client/issues" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/core/basic/package.json b/packages/core/basic/package.json index 811672b4..58036850 100644 --- a/packages/core/basic/package.json +++ b/packages/core/basic/package.json @@ -44,5 +44,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/core/pipeline/package.json b/packages/core/pipeline/package.json index c7ff01f9..f8f345e9 100644 --- a/packages/core/pipeline/package.json +++ b/packages/core/pipeline/package.json @@ -43,5 +43,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/libs/lib-huawei/package.json b/packages/libs/lib-huawei/package.json index 481169fa..81b73987 100644 --- a/packages/libs/lib-huawei/package.json +++ b/packages/libs/lib-huawei/package.json @@ -23,5 +23,5 @@ "prettier": "^2.8.8", "tslib": "^2.8.1" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/libs/lib-iframe/package.json b/packages/libs/lib-iframe/package.json index 7cb4ca97..a8f0eab7 100644 --- a/packages/libs/lib-iframe/package.json +++ b/packages/libs/lib-iframe/package.json @@ -30,5 +30,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/libs/lib-jdcloud/package.json b/packages/libs/lib-jdcloud/package.json index 20b30c2f..767d1803 100644 --- a/packages/libs/lib-jdcloud/package.json +++ b/packages/libs/lib-jdcloud/package.json @@ -60,5 +60,5 @@ "fetch" ] }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/libs/lib-k8s/package.json b/packages/libs/lib-k8s/package.json index cf3e595d..9e241f3b 100644 --- a/packages/libs/lib-k8s/package.json +++ b/packages/libs/lib-k8s/package.json @@ -31,5 +31,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/libs/lib-server/package.json b/packages/libs/lib-server/package.json index b1a135ff..5553473b 100644 --- a/packages/libs/lib-server/package.json +++ b/packages/libs/lib-server/package.json @@ -61,5 +61,5 @@ "typeorm": "^0.3.11", "typescript": "^5.4.2" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/libs/midway-flyway-js/package.json b/packages/libs/midway-flyway-js/package.json index 04985e26..6a28ae20 100644 --- a/packages/libs/midway-flyway-js/package.json +++ b/packages/libs/midway-flyway-js/package.json @@ -46,5 +46,5 @@ "typeorm": "^0.3.11", "typescript": "^5.4.2" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/plugins/plugin-cert/package.json b/packages/plugins/plugin-cert/package.json index 710372f7..e8dda165 100644 --- a/packages/plugins/plugin-cert/package.json +++ b/packages/plugins/plugin-cert/package.json @@ -41,5 +41,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" } diff --git a/packages/plugins/plugin-lib/package.json b/packages/plugins/plugin-lib/package.json index 2cf54d78..8e627bfb 100644 --- a/packages/plugins/plugin-lib/package.json +++ b/packages/plugins/plugin-lib/package.json @@ -48,5 +48,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "8abe62886ab50634b4b05abedd2981ec8ee0422e" + "gitHead": "a188385817e8dbd270dbdbf7f86a5b812884cf59" }