@certd/plugin-lib 1.27.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ import { BaseAccess } from "@certd/pipeline";
2
+ export declare class AliyunAccess extends BaseAccess {
3
+ accessKeyId: string;
4
+ accessKeySecret: string;
5
+ }
@@ -0,0 +1,48 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { IsAccess, AccessInput, BaseAccess } from "@certd/pipeline";
11
+ let AliyunAccess = class AliyunAccess extends BaseAccess {
12
+ accessKeyId = "";
13
+ accessKeySecret = "";
14
+ };
15
+ __decorate([
16
+ AccessInput({
17
+ title: "accessKeyId",
18
+ component: {
19
+ placeholder: "accessKeyId",
20
+ },
21
+ helper: "登录阿里云控制台->AccessKey管理页面获取。",
22
+ required: true,
23
+ }),
24
+ __metadata("design:type", Object)
25
+ ], AliyunAccess.prototype, "accessKeyId", void 0);
26
+ __decorate([
27
+ AccessInput({
28
+ title: "accessKeySecret",
29
+ component: {
30
+ placeholder: "accessKeySecret",
31
+ },
32
+ required: true,
33
+ encrypt: true,
34
+ helper: "注意:证书申请需要dns解析权限;其他阿里云插件,需要对应的权限,比如证书上传需要证书管理权限;嫌麻烦就用主账号的全量权限的accessKey",
35
+ }),
36
+ __metadata("design:type", Object)
37
+ ], AliyunAccess.prototype, "accessKeySecret", void 0);
38
+ AliyunAccess = __decorate([
39
+ IsAccess({
40
+ name: "aliyun",
41
+ title: "阿里云授权",
42
+ desc: "",
43
+ icon: "ant-design:aliyun-outlined",
44
+ })
45
+ ], AliyunAccess);
46
+ export { AliyunAccess };
47
+ new AliyunAccess();
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpeXVuLWFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGl5dW4vYWNjZXNzL2FsaXl1bi1hY2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRN0QsSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBYSxTQUFRLFVBQVU7SUFTMUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQVVqQixlQUFlLEdBQUcsRUFBRSxDQUFDO0NBQ3RCLENBQUE7QUFYQztJQVJDLFdBQVcsQ0FBQztRQUNYLEtBQUssRUFBRSxhQUFhO1FBQ3BCLFNBQVMsRUFBRTtZQUNULFdBQVcsRUFBRSxhQUFhO1NBQzNCO1FBQ0QsTUFBTSxFQUFFLDRCQUE0QjtRQUNwQyxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUM7O2lEQUNlO0FBVWpCO0lBVEMsV0FBVyxDQUFDO1FBQ1gsS0FBSyxFQUFFLGlCQUFpQjtRQUN4QixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsaUJBQWlCO1NBQy9CO1FBQ0QsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSx5RUFBeUU7S0FDbEYsQ0FBQzs7cURBQ21CO0FBbkJWLFlBQVk7SUFOeEIsUUFBUSxDQUFDO1FBQ1IsSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsT0FBTztRQUNkLElBQUksRUFBRSxFQUFFO1FBQ1IsSUFBSSxFQUFFLDRCQUE0QjtLQUNuQyxDQUFDO0dBQ1csWUFBWSxDQW9CeEI7O0FBRUQsSUFBSSxZQUFZLEVBQUUsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ export * from './aliyun-access.js';
@@ -0,0 +1,2 @@
1
+ export * from './aliyun-access.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxpeXVuL2FjY2Vzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDIn0=
@@ -0,0 +1,2 @@
1
+ export * from "./lib/index.js";
2
+ export * from "./access/index.js";
@@ -0,0 +1,3 @@
1
+ export * from "./lib/index.js";
2
+ export * from "./access/index.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxpeXVuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQyJ9
@@ -0,0 +1,16 @@
1
+ import { ILogger } from "@certd/basic";
2
+ export declare class AliyunClient {
3
+ client: any;
4
+ logger: ILogger;
5
+ agent: any;
6
+ useROAClient: boolean;
7
+ constructor(opts: {
8
+ logger: ILogger;
9
+ useROAClient?: boolean;
10
+ });
11
+ getSdk(): Promise<any>;
12
+ getROAClient(): Promise<any>;
13
+ init(opts: any): Promise<any>;
14
+ checkRet(ret: any): void;
15
+ request(name: string, params: any, requestOption?: any): Promise<any>;
16
+ }
@@ -0,0 +1,67 @@
1
+ import { getGlobalAgents } from "@certd/basic";
2
+ export class AliyunClient {
3
+ client;
4
+ logger;
5
+ agent;
6
+ useROAClient;
7
+ constructor(opts) {
8
+ this.logger = opts.logger;
9
+ this.useROAClient = opts.useROAClient || false;
10
+ const agents = getGlobalAgents();
11
+ this.agent = agents.httpsAgent;
12
+ }
13
+ async getSdk() {
14
+ if (this.useROAClient) {
15
+ return await this.getROAClient();
16
+ }
17
+ const Core = await import("@alicloud/pop-core");
18
+ return Core.default;
19
+ }
20
+ async getROAClient() {
21
+ const Core = await import("@alicloud/pop-core");
22
+ console.log("aliyun sdk", Core);
23
+ // @ts-ignore
24
+ return Core.ROAClient;
25
+ }
26
+ async init(opts) {
27
+ const Core = await this.getSdk();
28
+ this.client = new Core(opts);
29
+ return this.client;
30
+ }
31
+ checkRet(ret) {
32
+ if (ret.code != null) {
33
+ throw new Error("执行失败:" + ret.Message);
34
+ }
35
+ }
36
+ async request(name, params, requestOption = {
37
+ method: "POST",
38
+ formatParams: false,
39
+ }) {
40
+ if (!this.useROAClient) {
41
+ requestOption.agent = this.agent;
42
+ }
43
+ const getNumberFromEnv = (key, defValue) => {
44
+ const value = process.env[key];
45
+ if (value) {
46
+ try {
47
+ return parseInt(value);
48
+ }
49
+ catch (e) {
50
+ this.logger.error(`环境变量${key}设置错误,应该是一个数字,当前值为${value},将使用默认值:${defValue}`);
51
+ return defValue;
52
+ }
53
+ }
54
+ else {
55
+ return defValue;
56
+ }
57
+ };
58
+ // 连接超时设置,仅对当前请求有效。
59
+ requestOption.connectTimeout = getNumberFromEnv("ALIYUN_CLIENT_CONNECT_TIMEOUT", 8000);
60
+ // 读超时设置,仅对当前请求有效。
61
+ requestOption.readTimeout = getNumberFromEnv("ALIYUN_CLIENT_READ_TIMEOUT", 8000);
62
+ const res = await this.client.request(name, params, requestOption);
63
+ this.checkRet(res);
64
+ return res;
65
+ }
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxpeXVuL2xpYi9iYXNlLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFXLE1BQU0sY0FBYyxDQUFDO0FBRXhELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE1BQU0sQ0FBTTtJQUNaLE1BQU0sQ0FBVTtJQUNoQixLQUFLLENBQU07SUFDWCxZQUFZLENBQVU7SUFFdEIsWUFBWSxJQUFpRDtRQUMzRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFTO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBUTtRQUNmLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUNYLElBQVksRUFDWixNQUFXLEVBQ1gsZ0JBQXFCO1FBQ25CLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLEtBQUs7S0FDcEI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxRQUFnQixFQUFFLEVBQUU7WUFDekQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLElBQUksQ0FBQztvQkFDSCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsQ0FBQztnQkFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsb0JBQW9CLEtBQUssV0FBVyxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUM1RSxPQUFPLFFBQVEsQ0FBQztnQkFDbEIsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsbUJBQW1CO1FBQ25CLGFBQWEsQ0FBQyxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkYsa0JBQWtCO1FBQ2xCLGFBQWEsQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFakYsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,2 @@
1
+ export * from "./base-client.js";
2
+ export * from "./ssl-client.js";
@@ -0,0 +1,3 @@
1
+ export * from "./base-client.js";
2
+ export * from "./ssl-client.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxpeXVuL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUMifQ==
@@ -0,0 +1,34 @@
1
+ import { ILogger } from "@certd/basic";
2
+ import { AliyunAccess } from "../access/index.js";
3
+ import { AliyunClient } from "./index.js";
4
+ import { CertInfo } from "@certd/plugin-cert";
5
+ export type AliyunSslClientOpts = {
6
+ access: AliyunAccess;
7
+ logger: ILogger;
8
+ endpoint: string;
9
+ };
10
+ export type AliyunSslGetResourceListReq = {
11
+ cloudProduct: string;
12
+ };
13
+ export type AliyunSslCreateDeploymentJobReq = {
14
+ name: string;
15
+ jobType: string;
16
+ contactIds: string[];
17
+ resourceIds: string[];
18
+ certIds: string[];
19
+ };
20
+ export type AliyunSslUploadCertReq = {
21
+ name: string;
22
+ cert: CertInfo;
23
+ };
24
+ export declare class AliyunSslClient {
25
+ opts: AliyunSslClientOpts;
26
+ constructor(opts: AliyunSslClientOpts);
27
+ checkRet(ret: any): void;
28
+ getClient(): Promise<AliyunClient>;
29
+ uploadCert(req: AliyunSslUploadCertReq): Promise<any>;
30
+ getResourceList(req: AliyunSslGetResourceListReq): Promise<any>;
31
+ createDeploymentJob(req: AliyunSslCreateDeploymentJobReq): Promise<any>;
32
+ getContactList(): Promise<any>;
33
+ doRequest(action: string, params: any, requestOption: any): Promise<any>;
34
+ }
@@ -0,0 +1,89 @@
1
+ import { AliyunClient } from "./index.js";
2
+ export class AliyunSslClient {
3
+ opts;
4
+ constructor(opts) {
5
+ this.opts = opts;
6
+ }
7
+ checkRet(ret) {
8
+ if (ret.code != null) {
9
+ throw new Error("执行失败:" + ret.Message);
10
+ }
11
+ }
12
+ async getClient() {
13
+ const access = this.opts.access;
14
+ const client = new AliyunClient({ logger: this.opts.logger });
15
+ await client.init({
16
+ accessKeyId: access.accessKeyId,
17
+ accessKeySecret: access.accessKeySecret,
18
+ endpoint: `https://${this.opts.endpoint || "cas.aliyuncs.com"}`,
19
+ apiVersion: "2020-04-07",
20
+ });
21
+ return client;
22
+ }
23
+ async uploadCert(req) {
24
+ const client = await this.getClient();
25
+ const params = {
26
+ Name: req.name,
27
+ Cert: req.cert.crt,
28
+ Key: req.cert.key,
29
+ };
30
+ const requestOption = {
31
+ method: "POST",
32
+ };
33
+ this.opts.logger.info("开始上传证书");
34
+ const ret = await client.request("UploadUserCertificate", params, requestOption);
35
+ this.checkRet(ret);
36
+ this.opts.logger.info("证书上传成功:aliyunCertId=", ret.CertId);
37
+ //output
38
+ return ret.CertId;
39
+ }
40
+ async getResourceList(req) {
41
+ const client = await this.getClient();
42
+ const params = {
43
+ CloudName: "aliyun",
44
+ CloudProduct: req.cloudProduct,
45
+ };
46
+ const requestOption = {
47
+ method: "POST",
48
+ formatParams: false,
49
+ };
50
+ const res = await client.request("ListCloudResources", params, requestOption);
51
+ this.checkRet(res);
52
+ return res;
53
+ }
54
+ async createDeploymentJob(req) {
55
+ const client = await this.getClient();
56
+ const params = {
57
+ Name: req.name,
58
+ JobType: req.jobType,
59
+ ContactIds: req.contactIds.join(","),
60
+ ResourceIds: req.resourceIds.join(","),
61
+ CertIds: req.certIds.join(","),
62
+ };
63
+ const requestOption = {
64
+ method: "POST",
65
+ formatParams: false,
66
+ };
67
+ const res = await client.request("CreateDeploymentJob", params, requestOption);
68
+ this.checkRet(res);
69
+ return res;
70
+ }
71
+ async getContactList() {
72
+ const params = {};
73
+ const requestOption = {
74
+ method: "POST",
75
+ formatParams: false,
76
+ };
77
+ const client = await this.getClient();
78
+ const res = await client.request("ListContact", params, requestOption);
79
+ this.checkRet(res);
80
+ return res;
81
+ }
82
+ async doRequest(action, params, requestOption) {
83
+ const client = await this.getClient();
84
+ const res = await client.request(action, params, requestOption);
85
+ this.checkRet(res);
86
+ return res;
87
+ }
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NsLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGl5dW4vbGliL3NzbC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQTBCMUMsTUFBTSxPQUFPLGVBQWU7SUFDMUIsSUFBSSxDQUFzQjtJQUMxQixZQUFZLElBQXlCO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBUTtRQUNmLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM5RCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDaEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtZQUN2QyxRQUFRLEVBQUUsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxrQkFBa0IsRUFBRTtZQUMvRCxVQUFVLEVBQUUsWUFBWTtTQUN6QixDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUEyQjtRQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxNQUFNLE1BQU0s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
@@ -0,0 +1,19 @@
1
+ export declare function createCertDomainGetterInputDefine(opts?: {
2
+ certInputKey?: string;
3
+ props?: any;
4
+ }): any;
5
+ export declare function createRemoteSelectInputDefine(opts?: {
6
+ title: string;
7
+ certDomainsInputKey?: string;
8
+ accessIdInputKey?: string;
9
+ typeName?: string;
10
+ action: string;
11
+ type?: string;
12
+ watches?: string[];
13
+ helper?: string;
14
+ formItem?: any;
15
+ mode?: string;
16
+ multi?: boolean;
17
+ required?: boolean;
18
+ rules?: any;
19
+ }): any;
@@ -0,0 +1,57 @@
1
+ import { merge } from "lodash-es";
2
+ export function createCertDomainGetterInputDefine(opts) {
3
+ const certInputKey = opts?.certInputKey || "cert";
4
+ return merge({
5
+ title: "当前证书域名",
6
+ component: {
7
+ name: "cert-domains-getter",
8
+ },
9
+ mergeScript: `
10
+ return {
11
+ component:{
12
+ inputKey: ctx.compute(({form})=>{
13
+ return form.${certInputKey}
14
+ }),
15
+ }
16
+ }
17
+ `,
18
+ required: true,
19
+ }, opts?.props);
20
+ }
21
+ export function createRemoteSelectInputDefine(opts) {
22
+ const title = opts?.title || "请选择";
23
+ const certDomainsInputKey = opts?.certDomainsInputKey || "certDomains";
24
+ const accessIdInputKey = opts?.accessIdInputKey || "accessId";
25
+ const typeName = opts?.typeName;
26
+ const action = opts?.action;
27
+ const type = opts?.type || "plugin";
28
+ const watches = opts?.watches || [];
29
+ const helper = opts?.helper || "请选择";
30
+ const mode = opts?.mode || "tags";
31
+ const item = {
32
+ title,
33
+ component: {
34
+ name: "remote-select",
35
+ vModel: "value",
36
+ mode,
37
+ type,
38
+ typeName,
39
+ action,
40
+ watches: [certDomainsInputKey, accessIdInputKey, ...watches],
41
+ },
42
+ rules: opts?.rules,
43
+ required: true,
44
+ mergeScript: `
45
+ return {
46
+ component:{
47
+ form: ctx.compute(({form})=>{
48
+ return form
49
+ })
50
+ },
51
+ }
52
+ `,
53
+ helper,
54
+ };
55
+ return merge(item, opts?.formItem);
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbEMsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLElBQTZDO0lBQzdGLE1BQU0sWUFBWSxHQUFHLElBQUksRUFBRSxZQUFZLElBQUksTUFBTSxDQUFDO0lBQ2xELE9BQU8sS0FBSyxDQUNWO1FBQ0UsS0FBSyxFQUFFLFFBQVE7UUFDZixTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUscUJBQXFCO1NBQzVCO1FBQ0QsV0FBVyxFQUFFOzs7OzhCQUlXLFlBQVk7Ozs7U0FJakM7UUFDSCxRQUFRLEVBQUUsSUFBSTtLQUNmLEVBQ0QsSUFBSSxFQUFFLEtBQUssQ0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxJQWM3QztJQUNDLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLElBQUksS0FBSyxDQUFDO0lBQ25DLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxFQUFFLG1CQUFtQixJQUFJLGFBQWEsQ0FBQztJQUN2RSxNQUFNLGdCQUFnQixHQUFHLElBQUksRUFBRSxnQkFBZ0IsSUFBSSxVQUFVLENBQUM7SUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFDO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDO0lBQ2xDLE1BQU0sSUFBSSxHQUFHO1FBQ1gsS0FBSztRQUNMLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxlQUFlO1lBQ3JCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsSUFBSTtZQUNKLElBQUk7WUFDSixRQUFRO1lBQ1IsTUFBTTtZQUNOLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDO1NBQzdEO1FBQ0QsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ2xCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsV0FBVyxFQUFFOzs7Ozs7OztTQVFSO1FBQ0wsTUFBTTtLQUNQLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ export * from "./ssh/index.js";
2
+ export * from "./aliyun/index.js";
3
+ export * from "./common/index.js";
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./ssh/index.js";
2
+ export * from "./aliyun/index.js";
3
+ export * from "./common/index.js";
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUMifQ==
@@ -0,0 +1,2 @@
1
+ export * from "./ssh.js";
2
+ export * from "./ssh-access.js";
@@ -0,0 +1,3 @@
1
+ export * from "./ssh.js";
2
+ export * from "./ssh-access.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3NoL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsaUJBQWlCLENBQUMifQ==
@@ -0,0 +1,13 @@
1
+ import { BaseAccess } from "@certd/pipeline";
2
+ import { ConnectConfig } from "ssh2";
3
+ export declare class SshAccess extends BaseAccess implements ConnectConfig {
4
+ host: string;
5
+ port: number;
6
+ username: string;
7
+ password: string;
8
+ privateKey: string;
9
+ passphrase: string;
10
+ socksProxy: string;
11
+ windows: boolean;
12
+ encoding: string;
13
+ }
@@ -0,0 +1,139 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { AccessInput, BaseAccess, IsAccess } from "@certd/pipeline";
11
+ let SshAccess = class SshAccess extends BaseAccess {
12
+ host;
13
+ port;
14
+ username;
15
+ password;
16
+ privateKey;
17
+ passphrase;
18
+ socksProxy;
19
+ windows = false;
20
+ encoding;
21
+ };
22
+ __decorate([
23
+ AccessInput({
24
+ title: "主机地址",
25
+ component: {
26
+ placeholder: "主机域名或IP地址",
27
+ },
28
+ required: true,
29
+ }),
30
+ __metadata("design:type", String)
31
+ ], SshAccess.prototype, "host", void 0);
32
+ __decorate([
33
+ AccessInput({
34
+ title: "端口",
35
+ value: 22,
36
+ component: {
37
+ name: "a-input-number",
38
+ placeholder: "22",
39
+ },
40
+ rules: [{ required: true, message: "此项必填" }],
41
+ }),
42
+ __metadata("design:type", Number)
43
+ ], SshAccess.prototype, "port", void 0);
44
+ __decorate([
45
+ AccessInput({
46
+ title: "用户名",
47
+ value: "root",
48
+ rules: [{ required: true, message: "此项必填" }],
49
+ }),
50
+ __metadata("design:type", String)
51
+ ], SshAccess.prototype, "username", void 0);
52
+ __decorate([
53
+ AccessInput({
54
+ title: "密码",
55
+ component: {
56
+ name: "a-input-password",
57
+ vModel: "value",
58
+ },
59
+ encrypt: true,
60
+ helper: "登录密码或密钥必填一项",
61
+ }),
62
+ __metadata("design:type", String)
63
+ ], SshAccess.prototype, "password", void 0);
64
+ __decorate([
65
+ AccessInput({
66
+ title: "私钥登录",
67
+ helper: "私钥或密码必填一项",
68
+ component: {
69
+ name: "a-textarea",
70
+ vModel: "value",
71
+ },
72
+ encrypt: true,
73
+ }),
74
+ __metadata("design:type", String)
75
+ ], SshAccess.prototype, "privateKey", void 0);
76
+ __decorate([
77
+ AccessInput({
78
+ title: "私钥密码",
79
+ helper: "如果你的私钥有密码的话",
80
+ component: {
81
+ name: "a-input-password",
82
+ vModel: "value",
83
+ },
84
+ encrypt: true,
85
+ }),
86
+ __metadata("design:type", String)
87
+ ], SshAccess.prototype, "passphrase", void 0);
88
+ __decorate([
89
+ AccessInput({
90
+ title: "socks代理",
91
+ helper: "socks代理配置,格式:socks5://user:password@host:port",
92
+ component: {
93
+ name: "a-input",
94
+ vModel: "value",
95
+ placeholder: "socks5://user:password@host:port",
96
+ },
97
+ encrypt: false,
98
+ }),
99
+ __metadata("design:type", String)
100
+ ], SshAccess.prototype, "socksProxy", void 0);
101
+ __decorate([
102
+ AccessInput({
103
+ title: "是否Windows",
104
+ helper: "如果是Windows主机,请勾选此项\n并且需要windows[安装OpenSSH](https://certd.docmirror.cn/guide/use/host/windows.html)",
105
+ component: {
106
+ name: "a-switch",
107
+ vModel: "checked",
108
+ },
109
+ }),
110
+ __metadata("design:type", Object)
111
+ ], SshAccess.prototype, "windows", void 0);
112
+ __decorate([
113
+ AccessInput({
114
+ title: "命令编码",
115
+ helper: "如果是Windows主机,且出现乱码了,请尝试设置为GBK",
116
+ component: {
117
+ name: "a-select",
118
+ vModel: "value",
119
+ options: [
120
+ { value: "", label: "默认" },
121
+ { value: "GBK", label: "GBK" },
122
+ { value: "UTF8", label: "UTF-8" },
123
+ ],
124
+ },
125
+ }),
126
+ __metadata("design:type", String)
127
+ ], SshAccess.prototype, "encoding", void 0);
128
+ SshAccess = __decorate([
129
+ IsAccess({
130
+ name: "ssh",
131
+ title: "主机登录授权",
132
+ desc: "",
133
+ icon: "clarity:host-line",
134
+ input: {},
135
+ })
136
+ ], SshAccess);
137
+ export { SshAccess };
138
+ new SshAccess();
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoLWFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zc2gvc3NoLWFjY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVU3RCxJQUFNLFNBQVMsR0FBZixNQUFNLFNBQVUsU0FBUSxVQUFVO0lBUXZDLElBQUksQ0FBVTtJQVVkLElBQUksQ0FBVTtJQU1kLFFBQVEsQ0FBVTtJQVVsQixRQUFRLENBQVU7SUFVbEIsVUFBVSxDQUFVO0lBV3BCLFVBQVUsQ0FBVTtJQVlwQixVQUFVLENBQVU7SUFVcEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQWVoQixRQUFRLENBQVM7Q0FDbEIsQ0FBQTtBQXJGQztJQVBDLFdBQVcsQ0FBQztRQUNYLEtBQUssRUFBRSxNQUFNO1FBQ2IsU0FBUyxFQUFFO1lBQ1QsV0FBVyxFQUFFLFdBQVc7U0FDekI7UUFDRCxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUM7O3VDQUNZO0FBVWQ7SUFUQyxXQUFXLENBQUM7UUFDWCxLQUFLLEVBQUUsSUFBSTtRQUNYLEtBQUssRUFBRSxFQUFFO1FBQ1QsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixXQUFXLEVBQUUsSUFBSTtTQUNsQjtRQUNELEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7S0FDN0MsQ0FBQzs7dUNBQ1k7QUFNZDtJQUxDLFdBQVcsQ0FBQztRQUNYLEtBQUssRUFBRSxLQUFLO1FBQ1osS0FBSyxFQUFFLE1BQU07UUFDYixLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0tBQzdDLENBQUM7OzJDQUNnQjtBQVVsQjtJQVRDLFdBQVcsQ0FBQztRQUNYLEtBQUssRUFBRSxJQUFJO1FBQ1gsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixNQUFNLEVBQUUsT0FBTztTQUNoQjtRQUNELE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLGFBQWE7S0FDdEIsQ0FBQzs7MkNBQ2dCO0FBVWxCO0lBVEMsV0FBVyxDQUFDO1FBQ1gsS0FBSyxFQUFFLE1BQU07UUFDYixNQUFNLEVBQUUsV0FBVztRQUNuQixTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsWUFBWTtZQUNsQixNQUFNLEVBQUUsT0FBTztTQUNoQjtRQUNELE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQzs7NkNBQ2tCO0FBV3BCO0lBVEMsV0FBVyxDQUFDO1FBQ1gsS0FBSyxFQUFFLE1BQU07UUFDYixNQUFNLEVBQUUsYUFBYTtRQUNyQixTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLE1BQU0sRUFBRSxPQUFPO1NBQ2hCO1FBQ0QsT0FBTyxFQUFFLElBQUk7S0FDZCxDQUFDOzs2Q0FDa0I7QUFZcEI7SUFWQyxXQUFXLENBQUM7UUFDWCxLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsK0NBQStDO1FBQ3ZELFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixXQUFXLEVBQUUsa0NBQWtDO1NBQ2hEO1FBQ0QsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDOzs2Q0FDa0I7QUFVcEI7SUFSQyxXQUFXLENBQUM7UUFDWCxLQUFLLEVBQUUsV0FBVztRQUNsQixNQUFNLEVBQUUsb0dBQW9HO1FBQzVHLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxVQUFVO1lBQ2hCLE1BQU0sRUFBRSxTQUFTO1NBQ2xCO0tBQ0YsQ0FBQzs7MENBQ2M7QUFlaEI7SUFiQyxXQUFXLENBQUM7UUFDWCxLQUFLLEVBQUUsTUFBTTtRQUNiLE1BQU0sRUFBRSwrQkFBK0I7UUFDdkMsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFVBQVU7WUFDaEIsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQzFCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUM5QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTthQUNsQztTQUNGO0tBQ0YsQ0FBQzs7MkNBQ2U7QUE1Rk4sU0FBUztJQVByQixRQUFRLENBQUM7UUFDUixJQUFJLEVBQUUsS0FBSztRQUNYLEtBQUssRUFBRSxRQUFRO1FBQ2YsSUFBSSxFQUFFLEVBQUU7UUFDUixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxFQUFFO0tBQ1YsQ0FBQztHQUNXLFNBQVMsQ0E2RnJCOztBQUVELElBQUksU0FBUyxFQUFFLENBQUMifQ==
@@ -0,0 +1,70 @@
1
+ import ssh2 from "ssh2";
2
+ import { ILogger } from "@certd/basic";
3
+ import { SshAccess } from "./ssh-access.js";
4
+ export declare class AsyncSsh2Client {
5
+ conn: ssh2.Client;
6
+ logger: ILogger;
7
+ connConf: SshAccess & ssh2.ConnectConfig;
8
+ windows: boolean;
9
+ encoding: string;
10
+ constructor(connConf: SshAccess, logger: ILogger);
11
+ convert(iconv: any, buffer: Buffer): any;
12
+ connect(): Promise<unknown>;
13
+ getSftp(): Promise<unknown>;
14
+ fastPut(options: {
15
+ sftp: any;
16
+ localPath: string;
17
+ remotePath: string;
18
+ }): Promise<unknown>;
19
+ exec(script: string, opts?: {
20
+ throwOnStdErr?: boolean;
21
+ }): Promise<string>;
22
+ shell(script: string | string[]): Promise<string>;
23
+ end(): void;
24
+ private parseSocksProxyFromUri;
25
+ }
26
+ export declare class SshClient {
27
+ logger: ILogger;
28
+ constructor(logger: ILogger);
29
+ /**
30
+ *
31
+ * @param connectConf
32
+ {
33
+ host: '192.168.100.100',
34
+ port: 22,
35
+ username: 'frylock',
36
+ password: 'nodejsrules'
37
+ }
38
+ * @param options
39
+ */
40
+ uploadFiles(options: {
41
+ connectConf: SshAccess;
42
+ transports: any;
43
+ mkdirs: boolean;
44
+ }): Promise<void>;
45
+ isCmd(conn: AsyncSsh2Client): Promise<boolean>;
46
+ getIsCmd(options: {
47
+ connectConf: SshAccess;
48
+ }): Promise<boolean>;
49
+ /**
50
+ *
51
+ * Set-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
52
+ * Start-Service sshd
53
+ *
54
+ * Set-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\cmd.exe"
55
+ * @param options
56
+ */
57
+ exec(options: {
58
+ connectConf: SshAccess;
59
+ script: string | Array<string>;
60
+ env?: any;
61
+ }): Promise<string>;
62
+ shell(options: {
63
+ connectConf: SshAccess;
64
+ script: string | Array<string>;
65
+ }): Promise<string>;
66
+ _call<T = any>(options: {
67
+ connectConf: SshAccess;
68
+ callable: (conn: AsyncSsh2Client) => Promise<T>;
69
+ }): Promise<T>;
70
+ }