mirror of https://github.com/certd/certd
fix: 修复部署flexcdn问题
parent
b71e30755d
commit
76b19a4980
|
@ -20,3 +20,4 @@ export * from './plugin-volcengine/index.js'
|
||||||
export * from './plugin-jdcloud/index.js'
|
export * from './plugin-jdcloud/index.js'
|
||||||
export * from './plugin-51dns/index.js'
|
export * from './plugin-51dns/index.js'
|
||||||
export * from './plugin-notification/index.js'
|
export * from './plugin-notification/index.js'
|
||||||
|
export * from './plugin-flex/index.js'
|
||||||
|
|
|
@ -15,9 +15,9 @@ import { FlexCDNClient } from "../client.js";
|
||||||
default: {
|
default: {
|
||||||
//默认值配置照抄即可
|
//默认值配置照抄即可
|
||||||
strategy: {
|
strategy: {
|
||||||
runStrategy: RunStrategy.SkipWhenSucceed,
|
runStrategy: RunStrategy.SkipWhenSucceed
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
})
|
})
|
||||||
//类名规范,跟上面插件名称(name)一致
|
//类名规范,跟上面插件名称(name)一致
|
||||||
export class FlexCDNRefreshCert extends AbstractTaskPlugin {
|
export class FlexCDNRefreshCert extends AbstractTaskPlugin {
|
||||||
|
@ -27,8 +27,8 @@ export class FlexCDNRefreshCert extends AbstractTaskPlugin {
|
||||||
helper: "请选择前置任务输出的域名证书",
|
helper: "请选择前置任务输出的域名证书",
|
||||||
component: {
|
component: {
|
||||||
name: "output-selector",
|
name: "output-selector",
|
||||||
from: [...CertApplyPluginNames],
|
from: [...CertApplyPluginNames]
|
||||||
},
|
}
|
||||||
// required: true, // 必填
|
// required: true, // 必填
|
||||||
})
|
})
|
||||||
cert!: CertInfo;
|
cert!: CertInfo;
|
||||||
|
@ -41,9 +41,9 @@ export class FlexCDNRefreshCert extends AbstractTaskPlugin {
|
||||||
title: "FlexCDN授权",
|
title: "FlexCDN授权",
|
||||||
component: {
|
component: {
|
||||||
name: "access-selector",
|
name: "access-selector",
|
||||||
type: "FlexCDN", //固定授权类型
|
type: "flexcdn" //固定授权类型
|
||||||
},
|
},
|
||||||
required: true, //必填
|
required: true //必填
|
||||||
})
|
})
|
||||||
accessId!: string;
|
accessId!: string;
|
||||||
//
|
//
|
||||||
|
@ -52,13 +52,14 @@ export class FlexCDNRefreshCert extends AbstractTaskPlugin {
|
||||||
createRemoteSelectInputDefine({
|
createRemoteSelectInputDefine({
|
||||||
title: "证书Id",
|
title: "证书Id",
|
||||||
helper: "要更新的Flex证书id",
|
helper: "要更新的Flex证书id",
|
||||||
action: FlexCDNRefreshCert.prototype.onGetCertList.name,
|
action: FlexCDNRefreshCert.prototype.onGetCertList.name
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
certList!: number[];
|
certList!: number[];
|
||||||
|
|
||||||
//插件实例化时执行的方法
|
//插件实例化时执行的方法
|
||||||
async onInstance() {}
|
async onInstance() {
|
||||||
|
}
|
||||||
|
|
||||||
//插件执行方法
|
//插件执行方法
|
||||||
async execute(): Promise<void> {
|
async execute(): Promise<void> {
|
||||||
|
@ -67,7 +68,7 @@ export class FlexCDNRefreshCert extends AbstractTaskPlugin {
|
||||||
const client = new FlexCDNClient({
|
const client = new FlexCDNClient({
|
||||||
http: this.ctx.http,
|
http: this.ctx.http,
|
||||||
logger: this.logger,
|
logger: this.logger,
|
||||||
access,
|
access
|
||||||
});
|
});
|
||||||
await client.getToken();
|
await client.getToken();
|
||||||
for (const item of this.certList) {
|
for (const item of this.certList) {
|
||||||
|
@ -76,18 +77,23 @@ export class FlexCDNRefreshCert extends AbstractTaskPlugin {
|
||||||
const res = await client.doRequest({
|
const res = await client.doRequest({
|
||||||
url: `/SSLCertService/findEnabledSSLCertConfig`,
|
url: `/SSLCertService/findEnabledSSLCertConfig`,
|
||||||
data: {
|
data: {
|
||||||
sslCertId: item,
|
sslCertId: item
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const sslCert = JSON.parse(this.ctx.utils.hash.base64Decode(res.sslCertJSON))
|
||||||
|
this.logger.info(`证书信息:${sslCert.name},${sslCert.dnsNames}`);
|
||||||
|
const body = {
|
||||||
|
name: sslCert.name,
|
||||||
|
sslCertId: item,
|
||||||
|
certData: this.cert.crt,
|
||||||
|
keyData: this.cert.key
|
||||||
|
};
|
||||||
await client.doRequest({
|
await client.doRequest({
|
||||||
url: `/SSLCertService/updateSSLCert`,
|
url: `/SSLCertService/updateSSLCert`,
|
||||||
data: {
|
data: {
|
||||||
...res,
|
sslCertJSON:this.ctx.utils.hash.base64(JSON.stringify(body))
|
||||||
sslCertId: item,
|
}
|
||||||
certData: this.cert.crt,
|
|
||||||
keyData: this.cert.key,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.logger.info(`更新证书${item}成功`);
|
this.logger.info(`更新证书${item}成功`);
|
||||||
|
@ -101,28 +107,29 @@ export class FlexCDNRefreshCert extends AbstractTaskPlugin {
|
||||||
const client = new FlexCDNClient({
|
const client = new FlexCDNClient({
|
||||||
http: this.ctx.http,
|
http: this.ctx.http,
|
||||||
logger: this.logger,
|
logger: this.logger,
|
||||||
access,
|
access
|
||||||
});
|
});
|
||||||
await client.getToken();
|
await client.getToken();
|
||||||
const res = await client.doRequest({
|
const res = await client.doRequest({
|
||||||
url: "/SSLCertService/listSSLCerts",
|
url: "/SSLCertService/listSSLCerts",
|
||||||
data: { size: 1000},
|
data: { size: 1000 },
|
||||||
method: "POST",
|
method: "POST"
|
||||||
});
|
});
|
||||||
const list = res.sslCertsJSON;
|
const list = JSON.parse(this.ctx.utils.hash.base64Decode(res.sslCertsJSON));
|
||||||
if (!list || list.length === 0) {
|
if (!list || list.length === 0) {
|
||||||
throw new Error("没有找到证书,请先在控制台上传一次证书且关联网站");
|
throw new Error("没有找到证书,请先在控制台上传一次证书且关联网站");
|
||||||
}
|
}
|
||||||
|
|
||||||
const options = list.map((item: any) => {
|
const options = list.map((item: any) => {
|
||||||
return {
|
return {
|
||||||
label: `${item.name}<${item.id}-${item.firstServerName}>`,
|
label: `${item.name}<${item.id}-${item.dnsNames[0]}>`,
|
||||||
value: item.id,
|
value: item.id,
|
||||||
domain: JSON.parse(item.serverNamesJSON),
|
domain: item.dnsNames
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
return this.ctx.utils.options.buildGroupOptions(options, this.certDomains);
|
return this.ctx.utils.options.buildGroupOptions(options, this.certDomains);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//实例化一下,注册插件
|
//实例化一下,注册插件
|
||||||
new FlexCDNRefreshCert();
|
new FlexCDNRefreshCert();
|
||||||
|
|
Loading…
Reference in New Issue