mirror of https://github.com/certd/certd
				
				
				
			fix: 部署到腾讯云cdn选择证书任务步骤限制只能选证书
							parent
							
								
									17ead547aa
								
							
						
					
					
						commit
						3345c145b8
					
				|  | @ -12,6 +12,9 @@ export default { | ||||||
|     modelValue: { |     modelValue: { | ||||||
|       type: String, |       type: String, | ||||||
|       default: undefined |       default: undefined | ||||||
|  |     }, | ||||||
|  |     from: { | ||||||
|  |       type: String | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   emits: ["update:modelValue"], |   emits: ["update:modelValue"], | ||||||
|  | @ -32,6 +35,9 @@ export default { | ||||||
|         currentStepIndex: currentStepIndex.value, |         currentStepIndex: currentStepIndex.value, | ||||||
|         currentTask: currentTask.value |         currentTask: currentTask.value | ||||||
|       }); |       }); | ||||||
|  |       if (props.from) { | ||||||
|  |         options.value = options.value.filter((item: any) => item.type === props.from); | ||||||
|  |       } | ||||||
|       if (props.modelValue == null && options.value.length > 0) { |       if (props.modelValue == null && options.value.length > 0) { | ||||||
|         ctx.emit("update:modelValue", options.value[0].value); |         ctx.emit("update:modelValue", options.value[0].value); | ||||||
|       } |       } | ||||||
|  |  | ||||||
|  | @ -4,8 +4,9 @@ import { TencentAccess } from '../../access/index.js'; | ||||||
| import { CertInfo } from '@certd/plugin-cert'; | import { CertInfo } from '@certd/plugin-cert'; | ||||||
| 
 | 
 | ||||||
| @IsTaskPlugin({ | @IsTaskPlugin({ | ||||||
|   name: 'DeployCertToTencentCDN', |   name: 'DeployCertToTencentEO', | ||||||
|   title: '部署到腾讯云CDN', |   title: '部署到腾讯云EO', | ||||||
|  |   desc: '腾讯云边缘安全加速平台 EO', | ||||||
|   group: pluginGroups.tencent.key, |   group: pluginGroups.tencent.key, | ||||||
|   default: { |   default: { | ||||||
|     strategy: { |     strategy: { | ||||||
|  |  | ||||||
|  | @ -0,0 +1,115 @@ | ||||||
|  | import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; | ||||||
|  | import tencentcloud from 'tencentcloud-sdk-nodejs'; | ||||||
|  | import { TencentAccess } from '../../access/index.js'; | ||||||
|  | import { CertInfo } from '@certd/plugin-cert'; | ||||||
|  | 
 | ||||||
|  | @IsTaskPlugin({ | ||||||
|  |   name: 'DeployCertToTencentCDN', | ||||||
|  |   title: '部署到腾讯云CDN', | ||||||
|  |   group: pluginGroups.tencent.key, | ||||||
|  |   default: { | ||||||
|  |     strategy: { | ||||||
|  |       runStrategy: RunStrategy.SkipWhenSucceed, | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  | }) | ||||||
|  | export class DeployToCdnPlugin extends AbstractTaskPlugin { | ||||||
|  |   @TaskInput({ | ||||||
|  |     title: '域名证书', | ||||||
|  |     helper: '请选择前置任务输出的域名证书', | ||||||
|  |     component: { | ||||||
|  |       name: 'pi-output-selector', | ||||||
|  |       from: 'CertApply', | ||||||
|  |     }, | ||||||
|  |     required: true, | ||||||
|  |   }) | ||||||
|  |   cert!: CertInfo; | ||||||
|  | 
 | ||||||
|  |   @TaskInput({ | ||||||
|  |     title: 'Access提供者', | ||||||
|  |     helper: 'access 授权', | ||||||
|  |     component: { | ||||||
|  |       name: 'pi-access-selector', | ||||||
|  |       type: 'tencent', | ||||||
|  |     }, | ||||||
|  |     required: true, | ||||||
|  |   }) | ||||||
|  |   accessId!: string; | ||||||
|  | 
 | ||||||
|  |   @TaskInput({ | ||||||
|  |     title: '证书名称', | ||||||
|  |     helper: '证书上传后将以此参数作为名称前缀', | ||||||
|  |   }) | ||||||
|  |   certName!: string; | ||||||
|  | 
 | ||||||
|  |   @TaskInput({ | ||||||
|  |     title: 'cdn加速域名', | ||||||
|  |     rules: [{ required: true, message: '该项必填' }], | ||||||
|  |   }) | ||||||
|  |   domainName!: string; | ||||||
|  | 
 | ||||||
|  |   // @TaskInput({
 | ||||||
|  |   //   title: "CDN接口",
 | ||||||
|  |   //   helper: "CDN接口端点",
 | ||||||
|  |   //   component: {
 | ||||||
|  |   //     name: "a-select",
 | ||||||
|  |   //     type: "tencent",
 | ||||||
|  |   //   },
 | ||||||
|  |   //   required: true,
 | ||||||
|  |   // })
 | ||||||
|  |   // endpoint!: string;
 | ||||||
|  | 
 | ||||||
|  |   async onInstance() {} | ||||||
|  | 
 | ||||||
|  |   async execute(): Promise<void> { | ||||||
|  |     const accessProvider: TencentAccess = (await this.accessService.getById(this.accessId)) as TencentAccess; | ||||||
|  |     const client = this.getClient(accessProvider); | ||||||
|  |     const params = this.buildParams(); | ||||||
|  |     await this.doRequest(client, params); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   getClient(accessProvider: TencentAccess) { | ||||||
|  |     const CdnClient = tencentcloud.cdn.v20180606.Client; | ||||||
|  | 
 | ||||||
|  |     const clientConfig = { | ||||||
|  |       credential: { | ||||||
|  |         secretId: accessProvider.secretId, | ||||||
|  |         secretKey: accessProvider.secretKey, | ||||||
|  |       }, | ||||||
|  |       region: '', | ||||||
|  |       profile: { | ||||||
|  |         httpProfile: { | ||||||
|  |           endpoint: 'cdn.tencentcloudapi.com', | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     return new CdnClient(clientConfig); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   buildParams() { | ||||||
|  |     return { | ||||||
|  |       Https: { | ||||||
|  |         Switch: 'on', | ||||||
|  |         CertInfo: { | ||||||
|  |           Certificate: this.cert.crt, | ||||||
|  |           PrivateKey: this.cert.key, | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       Domain: this.domainName, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   async doRequest(client: any, params: any) { | ||||||
|  |     const ret = await client.UpdateDomainConfig(params); | ||||||
|  |     this.checkRet(ret); | ||||||
|  |     this.logger.info('设置腾讯云CDN证书成功:', ret.RequestId); | ||||||
|  |     return ret.RequestId; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   checkRet(ret: any) { | ||||||
|  |     if (!ret || ret.Error) { | ||||||
|  |       throw new Error('执行失败:' + ret.Error.Code + ',' + ret.Error.Message); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	 xiaojunnuo
						xiaojunnuo