mirror of
https://github.com/certd/certd.git
synced 2026-04-21 10:27:25 +08:00
129 lines
2.9 KiB
TypeScript
129 lines
2.9 KiB
TypeScript
import {AccessInput, BaseAccess, IsAccess} from "@certd/pipeline";
|
|
import {KsyunClient} from './client.js'
|
|
import {CertInfo} from "@certd/plugin-cert";
|
|
|
|
/**
|
|
*/
|
|
@IsAccess({
|
|
name: "ksyun",
|
|
title: "金山云授权",
|
|
desc: "",
|
|
icon: "svg:icon-ksyun"
|
|
})
|
|
export class KsyunAccess extends BaseAccess {
|
|
|
|
@AccessInput({
|
|
title: 'AccessKeyID',
|
|
component: {
|
|
placeholder: 'AccessKeyID',
|
|
},
|
|
helper: "[获取密钥](https://uc.console.ksyun.com/pro/iam/#/set/keyManage)",
|
|
required: true,
|
|
})
|
|
accessKeyId = '';
|
|
@AccessInput({
|
|
title: 'AccessKeySecret',
|
|
component: {
|
|
placeholder: 'AccessKeySecret',
|
|
},
|
|
required: true,
|
|
encrypt: true,
|
|
})
|
|
accessKeySecret = '';
|
|
|
|
|
|
@AccessInput({
|
|
title: "测试",
|
|
component: {
|
|
name: "api-test",
|
|
action: "TestRequest"
|
|
},
|
|
helper: "点击测试接口是否正常"
|
|
})
|
|
testRequest = true;
|
|
|
|
async onTestRequest() {
|
|
const client = await this.getCdnClient()
|
|
await this.getCertList({client})
|
|
return "ok"
|
|
}
|
|
|
|
|
|
async getCertList(opts?:{client:KsyunClient,pageNo?:number;pageSize?:number}) {
|
|
const res = await opts.client.doRequest({
|
|
action: "GetCertificates",
|
|
version: "2016-09-01",
|
|
method:"POST",
|
|
url:"/2016-09-01/cert/GetCertificates",
|
|
data:{
|
|
PageNum:opts?.pageNo || 1,
|
|
PageSize: opts?.pageSize || 30
|
|
}
|
|
})
|
|
this.ctx.logger.info(res)
|
|
return res
|
|
}
|
|
|
|
/**
|
|
* CertificateId 是 string 证书对应的唯一ID
|
|
* CertificateName 是 String 安全证书名称
|
|
* ServerCertificate 是 String 域名对应的安全证书内容
|
|
* PrivateKey
|
|
* @param opts
|
|
*/
|
|
async updateCert(opts:{
|
|
client:KsyunClient,
|
|
certId:string,
|
|
certName:string,
|
|
cert:CertInfo
|
|
}){
|
|
const res = await opts.client.doRequest({
|
|
action: "SetCertificate",
|
|
version: "2016-09-01",
|
|
method:"POST",
|
|
url:"/2016-09-01/cert/SetCertificate",
|
|
data:{
|
|
CertificateId: opts.certId,
|
|
CertificateName: opts.certName,
|
|
ServerCertificate: opts.cert.crt,
|
|
PrivateKey: opts.cert.key
|
|
}
|
|
})
|
|
this.ctx.logger.info(res)
|
|
return res
|
|
}
|
|
|
|
async getCert(opts:{client:KsyunClient,certId:string}){
|
|
const res = await opts.client.doRequest({
|
|
action: "GetCertificates",
|
|
version: "2016-09-01",
|
|
method:"POST",
|
|
url:"/2016-09-01/cert/GetCertificates",
|
|
data:{
|
|
CertificateId: opts.certId,
|
|
}
|
|
})
|
|
this.ctx.logger.info(res)
|
|
const list = res.Certificates
|
|
if (list.length > 0) {
|
|
return list[0]
|
|
}
|
|
throw new Error(`未找到证书:${opts.certId}`)
|
|
}
|
|
|
|
async getCdnClient() {
|
|
return new KsyunClient({
|
|
accessKeyId: this.accessKeyId,
|
|
secretAccessKey: this.accessKeySecret,
|
|
region: 'cn-beijing-6',
|
|
service: 'cdn',
|
|
endpoint: 'cdn.api.ksyun.com',
|
|
logger: this.ctx.logger,
|
|
http: this.ctx.http
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
new KsyunAccess();
|