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: '',