diff --git a/packages/ui/certd-client/src/components/plugins/common/remote-auto-complete.vue b/packages/ui/certd-client/src/components/plugins/common/remote-auto-complete.vue new file mode 100644 index 00000000..9ca1e915 --- /dev/null +++ b/packages/ui/certd-client/src/components/plugins/common/remote-auto-complete.vue @@ -0,0 +1,162 @@ + + + + diff --git a/packages/ui/certd-client/src/components/plugins/index.ts b/packages/ui/certd-client/src/components/plugins/index.ts index 4b6152c7..61fadc99 100644 --- a/packages/ui/certd-client/src/components/plugins/index.ts +++ b/packages/ui/certd-client/src/components/plugins/index.ts @@ -1,4 +1,5 @@ import SynologyIdDeviceGetter from "./synology/device-id-getter.vue"; +import RemoteAutoComplete from "./common/remote-auto-complete.vue"; import RemoteSelect from "./common/remote-select.vue"; import RemoteInput from "./common/remote-input.vue"; import CertDomainsGetter from "./common/cert-domains-getter.vue"; @@ -21,6 +22,7 @@ export default { app.component("ApiTest", ApiTest); app.component("SynologyDeviceIdGetter", SynologyIdDeviceGetter); + app.component("RemoteAutoComplete", RemoteAutoComplete); app.component("RemoteSelect", RemoteSelect); app.component("RemoteInput", RemoteInput); app.component("CertDomainsGetter", CertDomainsGetter); diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-esa/index.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-esa/index.ts index 6b26a998..ff994a0c 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-esa/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-esa/index.ts @@ -26,7 +26,7 @@ export class AliyunDeployCertToESA extends AbstractTaskPlugin { helper: "请选择证书申请任务输出的域名证书", component: { name: "output-selector", - from: [...CertApplyPluginNames] + from: [...CertApplyPluginNames, 'uploadCertToAliyun'] }, required: true }) diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-oss/index.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-oss/index.ts index dfa15bc4..5d81a591 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-oss/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-oss/index.ts @@ -59,6 +59,15 @@ export class DeployCertToAliyunOSS extends AbstractTaskPlugin { @TaskInput({ title: 'Bucket', helper: '存储桶名称', + component: { + name: 'remote-auto-complete', + vModel: 'value', + type: 'plugin', + action: 'onGetBucketList', + search: false, + pager: false, + watches: ['accessId', 'region'] + }, required: true, }) bucket!: string; @@ -91,7 +100,7 @@ export class DeployCertToAliyunOSS extends AbstractTaskPlugin { @TaskInput({ title: '证书服务接入点', helper: '不会选就按默认', - value: 'cas.aliyuncs.com', + value: 'cn-hangzhou', component: { name: 'a-select', options: [ @@ -101,6 +110,7 @@ export class DeployCertToAliyunOSS extends AbstractTaskPlugin { ], }, required: true, + order: -99, }) casRegion!: string; @@ -112,6 +122,7 @@ export class DeployCertToAliyunOSS extends AbstractTaskPlugin { type: 'aliyun', }, required: true, + order: -98, }) accessId!: string; @@ -170,6 +181,24 @@ export class DeployCertToAliyunOSS extends AbstractTaskPlugin { }); } + async onGetBucketList(data: any) { + console.log('data', data) + + const access = (await this.getAccess(this.accessId)) as AliyunAccess; + const client = await this.getClient(access); + + let res; + const buckets = [] + do{ + const requestData = {'marker': res?.nextMarker || null, 'max-keys': 1000}; + res = await client.listBuckets(requestData) + buckets.push(...(res?.buckets || [])) + } while (!!res?.nextMarker) + return buckets + .filter(bucket => bucket?.region === this.region) + .map(bucket => ({label: `${bucket.name}<${bucket.region}>`, value: bucket.name})); + } + async doRequest(client: any, params: any) { params = client._bucketRequestParams('POST', this.bucket, { cname: '',