From 5a20242111d6bd255b25dac86fe1f062c8543096 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 28 Nov 2024 16:14:52 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E4=B8=83=E7=89=9B?= =?UTF-8?q?=E4=BA=91cdn=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8F=AF=E4=BB=A5=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/deploy-to-cdn/index.ts | 52 +++++++++++++------ 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/packages/ui/certd-server/src/plugins/plugin-qiniu/plugin/deploy-to-cdn/index.ts b/packages/ui/certd-server/src/plugins/plugin-qiniu/plugin/deploy-to-cdn/index.ts index e16a8f221..4234457c6 100644 --- a/packages/ui/certd-server/src/plugins/plugin-qiniu/plugin/deploy-to-cdn/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-qiniu/plugin/deploy-to-cdn/index.ts @@ -1,6 +1,7 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; -import { QiniuAccess, QiniuClient } from '@certd/plugin-plus'; +import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine, QiniuAccess, QiniuClient } from '@certd/plugin-plus'; import { CertInfo } from '@certd/plugin-cert'; +import { optionsUtils } from '@certd/basic/dist/utils/util.options.js'; @IsTaskPlugin({ name: 'QiniuDeployCertToCDN', @@ -15,21 +16,6 @@ import { CertInfo } from '@certd/plugin-cert'; }, }) export class QiniuDeployCertToCDN extends AbstractTaskPlugin { - @TaskInput({ - title: 'CDN加速域名', - helper: '你在七牛云上配置的CDN加速域名,比如:certd.handsfree.work', - component: { - name: 'a-select', - vModel: 'value', - mode: 'tags', - open: false, - tokenSeparators: [',', ' ', ',', '、', '|'], - }, - rules: [{ type: 'domains', allowDotStart: true }], - required: true, - }) - domainName!: string | string[]; - @TaskInput({ title: '域名证书', helper: '请选择前置任务输出的域名证书,或者上传到七牛云的证书id', @@ -41,6 +27,9 @@ export class QiniuDeployCertToCDN extends AbstractTaskPlugin { }) cert!: CertInfo | string; + @TaskInput(createCertDomainGetterInputDefine({ props: { required: false } })) + certDomains!: string[]; + @TaskInput({ title: 'Access授权', helper: '七牛云授权', @@ -52,6 +41,17 @@ export class QiniuDeployCertToCDN extends AbstractTaskPlugin { }) accessId!: string; + @TaskInput( + createRemoteSelectInputDefine({ + title: 'CDN加速域名', + helper: '你在七牛云上配置的CDN加速域名,比如:certd.handsfree.work', + rules: [{ type: 'domains', allowDotStart: true }], + action: QiniuDeployCertToCDN.prototype.onGetDomainList.name, + required: true, + }) + ) + domainName!: string | string[]; + async onInstance() {} async execute(): Promise { this.logger.info('开始部署证书到七牛云cdn'); @@ -101,5 +101,25 @@ export class QiniuDeployCertToCDN extends AbstractTaskPlugin { this.logger.info('部署完成'); } + + async onGetDomainList() { + const access = await this.accessService.getById(this.accessId); + const qiniuClient = new QiniuClient({ + http: this.ctx.http, + access, + }); + const url = `https://api.qiniu.com/domain?limit=1000`; + const res = await qiniuClient.doRequest(url, 'get'); + + const options = res.domains.map((item: any) => { + return { + value: item.name, + label: item.name, + domain: item.name, + }; + }); + + return optionsUtils.buildGroupOptions(options, this.certDomains); + } } new QiniuDeployCertToCDN();