@certd/plugin-lib 1.37.17 → 1.38.1

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cert/cert-reader.d.ts +62 -0
  3. package/dist/cert/cert-reader.js +205 -0
  4. package/dist/cert/consts.d.ts +2 -0
  5. package/dist/cert/consts.js +2 -0
  6. package/dist/cert/convert.d.ts +24 -0
  7. package/dist/cert/convert.js +122 -0
  8. package/dist/cert/dns-provider/api.d.ts +76 -0
  9. package/dist/cert/dns-provider/api.js +1 -0
  10. package/dist/cert/dns-provider/base.d.ts +27 -0
  11. package/dist/cert/dns-provider/base.js +48 -0
  12. package/dist/cert/dns-provider/decorator.d.ts +3 -0
  13. package/dist/cert/dns-provider/decorator.js +20 -0
  14. package/dist/cert/dns-provider/domain-parser.d.ts +9 -0
  15. package/dist/cert/dns-provider/domain-parser.js +63 -0
  16. package/dist/cert/dns-provider/index.d.ts +5 -0
  17. package/dist/cert/dns-provider/index.js +5 -0
  18. package/dist/cert/dns-provider/registry.d.ts +1 -0
  19. package/dist/cert/dns-provider/registry.js +2 -0
  20. package/dist/cert/index.d.ts +4 -0
  21. package/dist/cert/index.js +4 -0
  22. package/dist/common/index.js +0 -1
  23. package/dist/common/util.js +0 -1
  24. package/dist/index.d.ts +1 -8
  25. package/dist/index.js +1 -9
  26. package/dist/lib/index.js +0 -1
  27. package/dist/lib/ocr-api.js +0 -1
  28. package/dist/service/index.js +0 -1
  29. package/dist/service/site-info.js +0 -1
  30. package/package.json +13 -9
  31. package/tsconfig.json +2 -1
  32. package/dist/aliyun/access/aliesa-access.d.ts +0 -5
  33. package/dist/aliyun/access/aliesa-access.js +0 -61
  34. package/dist/aliyun/access/alioss-access.d.ts +0 -6
  35. package/dist/aliyun/access/alioss-access.js +0 -89
  36. package/dist/aliyun/access/aliyun-access.d.ts +0 -30
  37. package/dist/aliyun/access/aliyun-access.js +0 -126
  38. package/dist/aliyun/access/index.d.ts +0 -3
  39. package/dist/aliyun/access/index.js +0 -4
  40. package/dist/aliyun/index.d.ts +0 -2
  41. package/dist/aliyun/index.js +0 -3
  42. package/dist/aliyun/lib/base-client.d.ts +0 -16
  43. package/dist/aliyun/lib/base-client.js +0 -67
  44. package/dist/aliyun/lib/index.d.ts +0 -3
  45. package/dist/aliyun/lib/index.js +0 -4
  46. package/dist/aliyun/lib/oss-client.d.ts +0 -19
  47. package/dist/aliyun/lib/oss-client.js +0 -76
  48. package/dist/aliyun/lib/ssl-client.d.ts +0 -49
  49. package/dist/aliyun/lib/ssl-client.js +0 -133
  50. package/dist/ctyun/access/ctyun-access.d.ts +0 -5
  51. package/dist/ctyun/access/ctyun-access.js +0 -49
  52. package/dist/ctyun/index.d.ts +0 -1
  53. package/dist/ctyun/index.js +0 -2
  54. package/dist/ftp/access.d.ts +0 -12
  55. package/dist/ftp/access.js +0 -99
  56. package/dist/ftp/client.d.ts +0 -16
  57. package/dist/ftp/client.js +0 -57
  58. package/dist/ftp/index.d.ts +0 -2
  59. package/dist/ftp/index.js +0 -3
  60. package/dist/oss/api.d.ts +0 -46
  61. package/dist/oss/api.js +0 -48
  62. package/dist/oss/factory.d.ts +0 -10
  63. package/dist/oss/factory.js +0 -46
  64. package/dist/oss/impls/alioss.d.ts +0 -13
  65. package/dist/oss/impls/alioss.js +0 -55
  66. package/dist/oss/impls/ftp.d.ts +0 -12
  67. package/dist/oss/impls/ftp.js +0 -75
  68. package/dist/oss/impls/qiniuoss.d.ts +0 -13
  69. package/dist/oss/impls/qiniuoss.js +0 -47
  70. package/dist/oss/impls/s3.d.ts +0 -13
  71. package/dist/oss/impls/s3.js +0 -92
  72. package/dist/oss/impls/sftp.d.ts +0 -10
  73. package/dist/oss/impls/sftp.js +0 -79
  74. package/dist/oss/impls/ssh.d.ts +0 -11
  75. package/dist/oss/impls/ssh.js +0 -59
  76. package/dist/oss/impls/tencentcos.d.ts +0 -13
  77. package/dist/oss/impls/tencentcos.js +0 -51
  78. package/dist/oss/index.d.ts +0 -2
  79. package/dist/oss/index.js +0 -3
  80. package/dist/qiniu/access-oss.d.ts +0 -5
  81. package/dist/qiniu/access-oss.js +0 -47
  82. package/dist/qiniu/access.d.ts +0 -5
  83. package/dist/qiniu/access.js +0 -43
  84. package/dist/qiniu/index.d.ts +0 -3
  85. package/dist/qiniu/index.js +0 -4
  86. package/dist/qiniu/lib/sdk.d.ts +0 -34
  87. package/dist/qiniu/lib/sdk.js +0 -162
  88. package/dist/s3/access.d.ts +0 -25
  89. package/dist/s3/access.js +0 -134
  90. package/dist/s3/index.d.ts +0 -1
  91. package/dist/s3/index.js +0 -2
  92. package/dist/ssh/index.d.ts +0 -3
  93. package/dist/ssh/index.js +0 -4
  94. package/dist/ssh/sftp-access.d.ts +0 -5
  95. package/dist/ssh/sftp-access.js +0 -51
  96. package/dist/ssh/ssh-access.d.ts +0 -17
  97. package/dist/ssh/ssh-access.js +0 -214
  98. package/dist/ssh/ssh.d.ts +0 -138
  99. package/dist/ssh/ssh.js +0 -589
  100. package/dist/tencent/access-cos.d.ts +0 -6
  101. package/dist/tencent/access-cos.js +0 -83
  102. package/dist/tencent/access.d.ts +0 -10
  103. package/dist/tencent/access.js +0 -90
  104. package/dist/tencent/index.d.ts +0 -3
  105. package/dist/tencent/index.js +0 -4
  106. package/dist/tencent/lib/cos-client.d.ts +0 -19
  107. package/dist/tencent/lib/cos-client.js +0 -98
  108. package/dist/tencent/lib/index.d.ts +0 -2
  109. package/dist/tencent/lib/index.js +0 -3
  110. package/dist/tencent/lib/ssl-client.d.ts +0 -32
  111. package/dist/tencent/lib/ssl-client.js +0 -86
@@ -1,83 +0,0 @@
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 TencentCosAccess = class TencentCosAccess extends BaseAccess {
12
- accessId = "";
13
- region;
14
- bucket = "";
15
- };
16
- __decorate([
17
- AccessInput({
18
- title: "腾讯云授权",
19
- component: {
20
- name: "access-selector",
21
- vModel: "modelValue",
22
- type: "tencent",
23
- },
24
- helper: "请选择腾讯云授权",
25
- required: true,
26
- }),
27
- __metadata("design:type", Object)
28
- ], TencentCosAccess.prototype, "accessId", void 0);
29
- __decorate([
30
- AccessInput({
31
- title: "所在地域",
32
- helper: "存储桶所在地域",
33
- component: {
34
- name: "a-auto-complete",
35
- vModel: "value",
36
- options: [
37
- { value: "", label: "--------中国大陆地区-------", disabled: true },
38
- { value: "ap-beijing-1", label: "北京1区" },
39
- { value: "ap-beijing", label: "北京" },
40
- { value: "ap-nanjing", label: "南京" },
41
- { value: "ap-shanghai", label: "上海" },
42
- { value: "ap-guangzhou", label: "广州" },
43
- { value: "ap-chengdu", label: "成都" },
44
- { value: "ap-chongqing", label: "重庆" },
45
- { value: "ap-shenzhen-fsi", label: "深圳金融" },
46
- { value: "ap-shanghai-fsi", label: "上海金融" },
47
- { value: "ap-beijing-fsi", label: "北京金融" },
48
- { value: "", label: "--------中国香港及境外-------", disabled: true },
49
- { value: "ap-hongkong", label: "中国香港" },
50
- { value: "ap-singapore", label: "新加坡" },
51
- { value: "ap-mumbai", label: "孟买" },
52
- { value: "ap-jakarta", label: "雅加达" },
53
- { value: "ap-seoul", label: "首尔" },
54
- { value: "ap-bangkok", label: "曼谷" },
55
- { value: "ap-tokyo", label: "东京" },
56
- { value: "na-siliconvalley", label: "硅谷" },
57
- { value: "na-ashburn", label: "弗吉尼亚" },
58
- { value: "sa-saopaulo", label: "圣保罗" },
59
- { value: "eu-frankfurt", label: "法兰克福" },
60
- ],
61
- },
62
- }),
63
- __metadata("design:type", String)
64
- ], TencentCosAccess.prototype, "region", void 0);
65
- __decorate([
66
- AccessInput({
67
- title: "Bucket",
68
- helper: "存储桶名称",
69
- required: true,
70
- }),
71
- __metadata("design:type", Object)
72
- ], TencentCosAccess.prototype, "bucket", void 0);
73
- TencentCosAccess = __decorate([
74
- IsAccess({
75
- name: "tencentcos",
76
- title: "腾讯云COS授权",
77
- icon: "svg:icon-tencentcloud",
78
- desc: "腾讯云对象存储授权,包含地域和存储桶",
79
- })
80
- ], TencentCosAccess);
81
- export { TencentCosAccess };
82
- new TencentCosAccess();
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW5jZW50L2FjY2Vzcy1jb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRN0QsSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBaUIsU0FBUSxVQUFVO0lBVzlDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFtQ2QsTUFBTSxDQUFVO0lBT2hCLE1BQU0sR0FBRyxFQUFFLENBQUM7Q0FDYixDQUFBO0FBM0NDO0lBVkMsV0FBVyxDQUFDO1FBQ1gsS0FBSyxFQUFFLE9BQU87UUFDZCxTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLElBQUksRUFBRSxTQUFTO1NBQ2hCO1FBQ0QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDOztrREFDWTtBQW1DZDtJQWpDQyxXQUFXLENBQUM7UUFDWCxLQUFLLEVBQUUsTUFBTTtRQUNiLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxpQkFBaUI7WUFDdkIsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUM3RCxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDeEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3BDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUNwQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDckMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3RDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUNwQyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDdEMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDM0MsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDM0MsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDMUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUM5RCxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDdkMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBQ3ZDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUNuQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFDckMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUNwQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDMUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ3RDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUN0QyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUN6QztTQUNGO0tBQ0YsQ0FBQzs7Z0RBQ2M7QUFPaEI7SUFMQyxXQUFXLENBQUM7UUFDWCxLQUFLLEVBQUUsUUFBUTtRQUNmLE1BQU0sRUFBRSxPQUFPO1FBQ2YsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDOztnREFDVTtBQXJERCxnQkFBZ0I7SUFONUIsUUFBUSxDQUFDO1FBQ1IsSUFBSSxFQUFFLFlBQVk7UUFDbEIsS0FBSyxFQUFFLFVBQVU7UUFDakIsSUFBSSxFQUFFLHVCQUF1QjtRQUM3QixJQUFJLEVBQUUsb0JBQW9CO0tBQzNCLENBQUM7R0FDVyxnQkFBZ0IsQ0FzRDVCOztBQUVELElBQUksZ0JBQWdCLEVBQUUsQ0FBQyJ9
@@ -1,10 +0,0 @@
1
- import { BaseAccess } from "@certd/pipeline";
2
- export declare class TencentAccess extends BaseAccess {
3
- secretId: string;
4
- secretKey: string;
5
- accountType: string;
6
- closeExpiresNotify: boolean;
7
- isIntl(): boolean;
8
- intlDomain(): "" | "intl.";
9
- buildEndpoint(endpoint: string): string;
10
- }
@@ -1,90 +0,0 @@
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 TencentAccess = class TencentAccess extends BaseAccess {
12
- secretId = "";
13
- secretKey = "";
14
- accountType;
15
- closeExpiresNotify = true;
16
- isIntl() {
17
- return this.accountType === "intl";
18
- }
19
- intlDomain() {
20
- return this.isIntl() ? "intl." : "";
21
- }
22
- buildEndpoint(endpoint) {
23
- return `${this.intlDomain()}${endpoint}`;
24
- }
25
- };
26
- __decorate([
27
- AccessInput({
28
- title: "secretId",
29
- helper: "使用对应的插件需要有对应的权限,比如上传证书,需要证书管理权限;部署到clb需要clb相关权限\n前往[密钥管理](https://console.cloud.tencent.com/cam/capi)进行创建",
30
- component: {
31
- placeholder: "secretId",
32
- },
33
- rules: [{ required: true, message: "该项必填" }],
34
- }),
35
- __metadata("design:type", Object)
36
- ], TencentAccess.prototype, "secretId", void 0);
37
- __decorate([
38
- AccessInput({
39
- title: "secretKey",
40
- component: {
41
- placeholder: "secretKey",
42
- },
43
- encrypt: true,
44
- rules: [{ required: true, message: "该项必填" }],
45
- }),
46
- __metadata("design:type", Object)
47
- ], TencentAccess.prototype, "secretKey", void 0);
48
- __decorate([
49
- AccessInput({
50
- title: "站点类型",
51
- value: "cn",
52
- component: {
53
- name: "a-select",
54
- options: [
55
- {
56
- label: "国内站",
57
- value: "cn",
58
- },
59
- {
60
- label: "国际站",
61
- value: "intl",
62
- },
63
- ],
64
- },
65
- encrypt: false,
66
- rules: [{ required: true, message: "该项必填" }],
67
- }),
68
- __metadata("design:type", String)
69
- ], TencentAccess.prototype, "accountType", void 0);
70
- __decorate([
71
- AccessInput({
72
- title: "关闭证书过期通知",
73
- value: true,
74
- component: {
75
- name: "a-switch",
76
- vModel: "checked",
77
- },
78
- }),
79
- __metadata("design:type", Boolean)
80
- ], TencentAccess.prototype, "closeExpiresNotify", void 0);
81
- TencentAccess = __decorate([
82
- IsAccess({
83
- name: "tencent",
84
- title: "腾讯云",
85
- icon: "svg:icon-tencentcloud",
86
- order: 0,
87
- })
88
- ], TencentAccess);
89
- export { TencentAccess };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbmNlbnQvYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUTdELElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWMsU0FBUSxVQUFVO0lBUzNDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFTZCxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBcUJmLFdBQVcsQ0FBUztJQVVwQixrQkFBa0IsR0FBWSxJQUFJLENBQUM7SUFFbkMsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUM7SUFDckMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFnQjtRQUM1QixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRixDQUFBO0FBckRDO0lBUkMsV0FBVyxDQUFDO1FBQ1gsS0FBSyxFQUFFLFVBQVU7UUFDakIsTUFBTSxFQUFFLDJHQUEyRztRQUNuSCxTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsVUFBVTtTQUN4QjtRQUNELEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7S0FDN0MsQ0FBQzs7K0NBQ1k7QUFTZDtJQVJDLFdBQVcsQ0FBQztRQUNYLEtBQUssRUFBRSxXQUFXO1FBQ2xCLFNBQVMsRUFBRTtZQUNULFdBQVcsRUFBRSxXQUFXO1NBQ3pCO1FBQ0QsT0FBTyxFQUFFLElBQUk7UUFDYixLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0tBQzdDLENBQUM7O2dEQUNhO0FBcUJmO0lBbkJDLFdBQVcsQ0FBQztRQUNYLEtBQUssRUFBRSxNQUFNO1FBQ2IsS0FBSyxFQUFFLElBQUk7UUFDWCxTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsVUFBVTtZQUNoQixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsS0FBSyxFQUFFLEtBQUs7b0JBQ1osS0FBSyxFQUFFLElBQUk7aUJBQ1o7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLEtBQUs7b0JBQ1osS0FBSyxFQUFFLE1BQU07aUJBQ2Q7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFFLEtBQUs7UUFDZCxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0tBQzdDLENBQUM7O2tEQUNrQjtBQVVwQjtJQVJDLFdBQVcsQ0FBQztRQUNYLEtBQUssRUFBRSxVQUFVO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFVBQVU7WUFDaEIsTUFBTSxFQUFFLFNBQVM7U0FDbEI7S0FDRixDQUFDOzt5REFDaUM7QUFqRHhCLGFBQWE7SUFOekIsUUFBUSxDQUFDO1FBQ1IsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsS0FBSztRQUNaLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDO0dBQ1csYUFBYSxDQThEekIifQ==
@@ -1,3 +0,0 @@
1
- export * from "./access.js";
2
- export * from "./access-cos.js";
3
- export * from "./lib/index.js";
@@ -1,4 +0,0 @@
1
- export * from "./access.js";
2
- export * from "./access-cos.js";
3
- export * from "./lib/index.js";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVuY2VudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUMifQ==
@@ -1,19 +0,0 @@
1
- import { TencentAccess } from "../access.js";
2
- import { ILogger } from "@certd/basic";
3
- export declare class TencentCosClient {
4
- access: TencentAccess;
5
- logger: ILogger;
6
- region: string;
7
- bucket: string;
8
- constructor(opts: {
9
- access: TencentAccess;
10
- logger: ILogger;
11
- region: string;
12
- bucket: string;
13
- });
14
- getCosClient(): Promise<import("cos-nodejs-sdk-v5")>;
15
- uploadFile(key: string, file: Buffer | string): Promise<unknown>;
16
- removeFile(key: string): Promise<unknown>;
17
- downloadFile(key: string, savePath: string): Promise<unknown>;
18
- listDir(dirKey: string): Promise<unknown>;
19
- }
@@ -1,98 +0,0 @@
1
- import { safePromise } from "@certd/basic";
2
- import fs from "fs";
3
- export class TencentCosClient {
4
- access;
5
- logger;
6
- region;
7
- bucket;
8
- constructor(opts) {
9
- this.access = opts.access;
10
- this.logger = opts.logger;
11
- this.bucket = opts.bucket;
12
- this.region = opts.region;
13
- }
14
- async getCosClient() {
15
- const sdk = await import("cos-nodejs-sdk-v5");
16
- const clientConfig = {
17
- SecretId: this.access.secretId,
18
- SecretKey: this.access.secretKey,
19
- };
20
- return new sdk.default(clientConfig);
21
- }
22
- async uploadFile(key, file) {
23
- const cos = await this.getCosClient();
24
- return safePromise((resolve, reject) => {
25
- let readableStream = file;
26
- if (typeof file === "string") {
27
- readableStream = fs.createReadStream(file);
28
- }
29
- cos.putObject({
30
- Bucket: this.bucket /* 必须 */,
31
- Region: this.region /* 必须 */,
32
- Key: key /* 必须 */,
33
- Body: readableStream, // 上传文件对象
34
- onProgress: function (progressData) {
35
- console.log(JSON.stringify(progressData));
36
- },
37
- }, function (err, data) {
38
- if (err) {
39
- reject(err);
40
- return;
41
- }
42
- resolve(data);
43
- });
44
- });
45
- }
46
- async removeFile(key) {
47
- const cos = await this.getCosClient();
48
- return safePromise((resolve, reject) => {
49
- cos.deleteObject({
50
- Bucket: this.bucket,
51
- Region: this.region,
52
- Key: key,
53
- }, function (err, data) {
54
- if (err) {
55
- reject(err);
56
- return;
57
- }
58
- resolve(data);
59
- });
60
- });
61
- }
62
- async downloadFile(key, savePath) {
63
- const cos = await this.getCosClient();
64
- const writeStream = fs.createWriteStream(savePath);
65
- return safePromise((resolve, reject) => {
66
- cos.getObject({
67
- Bucket: this.bucket,
68
- Region: this.region,
69
- Key: key,
70
- Output: writeStream,
71
- }, function (err, data) {
72
- if (err) {
73
- reject(err);
74
- return;
75
- }
76
- resolve(data);
77
- });
78
- });
79
- }
80
- async listDir(dirKey) {
81
- const cos = await this.getCosClient();
82
- return safePromise((resolve, reject) => {
83
- cos.getBucket({
84
- Bucket: this.bucket,
85
- Region: this.region,
86
- Prefix: dirKey,
87
- MaxKeys: 1000,
88
- }, function (err, data) {
89
- if (err) {
90
- reject(err);
91
- return;
92
- }
93
- resolve(data.Contents);
94
- });
95
- });
96
- }
97
- }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW5jZW50L2xpYi9jb3MtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFnQjtJQUN0QixNQUFNLENBQVU7SUFDaEIsTUFBTSxDQUFTO0lBQ2YsTUFBTSxDQUFTO0lBRWYsWUFBWSxJQUFnRjtRQUMxRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUc7WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUM5QixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ2pDLENBQUM7UUFDRixPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFXLEVBQUUsSUFBcUI7UUFDakQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsT0FBTyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxjQUFjLEdBQUcsSUFBVyxDQUFDO1lBQ2pDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzdCLGNBQWMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELEdBQUcsQ0FBQyxTQUFTLENBQ1g7Z0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtnQkFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtnQkFDNUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxRQUFRO2dCQUNqQixJQUFJLEVBQUUsY0FBYyxFQUFFLFNBQVM7Z0JBQy9CLFVBQVUsRUFBRSxVQUFVLFlBQVk7b0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2FBQ0YsRUFDRCxVQUFVLEdBQUcsRUFBRSxJQUFJO2dCQUNqQixJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDWixPQUFPO2dCQUNULENBQUM7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLE9BQU8sV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLEdBQUcsQ0FBQyxZQUFZLENBQ2Q7Z0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLEdBQUcsRUFBRSxHQUFHO2FBQ1QsRUFDRCxVQUFVLEdBQUcsRUFBRSxJQUFJO2dCQUNqQixJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDWixPQUFPO2dCQUNULENBQUM7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFXLEVBQUUsUUFBZ0I7UUFDOUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLEdBQUcsQ0FBQyxTQUFTLENBQ1g7Z0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLEdBQUcsRUFBRSxHQUFHO2dCQUNSLE1BQU0sRUFBRSxXQUFXO2FBQ3BCLEVBQ0QsVUFBVSxHQUFHLEVBQUUsSUFBSTtnQkFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ1osT0FBTztnQkFDVCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBYztRQUMxQixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxPQUFPLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxHQUFHLENBQUMsU0FBUyxDQUNYO2dCQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixNQUFNLEVBQUUsTUFBTTtnQkFDZCxPQUFPLEVBQUUsSUFBSTthQUNkLEVBQ0QsVUFBVSxHQUFHLEVBQUUsSUFBSTtnQkFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ1osT0FBTztnQkFDVCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
@@ -1,2 +0,0 @@
1
- export * from "./ssl-client.js";
2
- export * from "./cos-client.js";
@@ -1,3 +0,0 @@
1
- export * from "./ssl-client.js";
2
- export * from "./cos-client.js";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVuY2VudC9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDIn0=
@@ -1,32 +0,0 @@
1
- import { ILogger } from "@certd/basic";
2
- import { TencentAccess } from "../access.js";
3
- export type TencentCertInfo = {
4
- key: string;
5
- crt: string;
6
- };
7
- export declare class TencentSslClient {
8
- access: TencentAccess;
9
- logger: ILogger;
10
- region?: string;
11
- constructor(opts: {
12
- access: TencentAccess;
13
- logger: ILogger;
14
- region?: string;
15
- });
16
- getSslClient(): Promise<any>;
17
- checkRet(ret: any): void;
18
- uploadToTencent(opts: {
19
- certName: string;
20
- cert: TencentCertInfo;
21
- }): Promise<string>;
22
- switchCertNotify(certIds: string[], disabled: boolean): Promise<any>;
23
- deployCertificateInstance(params: any): Promise<any>;
24
- DescribeHostUploadUpdateRecordDetail(params: any): Promise<any>;
25
- UploadUpdateCertificateInstance(params: any): Promise<any>;
26
- DescribeCertificates(params: {
27
- Limit?: number;
28
- Offset?: number;
29
- SearchKey?: string;
30
- }): Promise<any>;
31
- doRequest(action: string, params: any): Promise<any>;
32
- }
@@ -1,86 +0,0 @@
1
- export class TencentSslClient {
2
- access;
3
- logger;
4
- region;
5
- constructor(opts) {
6
- this.access = opts.access;
7
- this.logger = opts.logger;
8
- this.region = opts.region;
9
- }
10
- async getSslClient() {
11
- const sdk = await import("tencentcloud-sdk-nodejs/tencentcloud/services/ssl/v20191205/index.js");
12
- const SslClient = sdk.v20191205.Client;
13
- const clientConfig = {
14
- credential: {
15
- secretId: this.access.secretId,
16
- secretKey: this.access.secretKey,
17
- },
18
- region: this.region,
19
- profile: {
20
- httpProfile: {
21
- endpoint: this.access.isIntl() ? "ssl.intl.tencentcloudapi.com" : "ssl.tencentcloudapi.com",
22
- },
23
- },
24
- };
25
- return new SslClient(clientConfig);
26
- }
27
- checkRet(ret) {
28
- if (!ret || ret.Error) {
29
- throw new Error("请求失败:" + ret.Error.Code + "," + ret.Error.Message + ",requestId" + ret.RequestId);
30
- }
31
- }
32
- async uploadToTencent(opts) {
33
- const client = await this.getSslClient();
34
- const params = {
35
- CertificatePublicKey: opts.cert.crt,
36
- CertificatePrivateKey: opts.cert.key,
37
- Alias: opts.certName,
38
- };
39
- const ret = await client.UploadCertificate(params);
40
- this.checkRet(ret);
41
- this.logger.info(`证书[${opts.certName}]上传成功:tencentCertId=`, ret.CertificateId);
42
- if (this.access.closeExpiresNotify) {
43
- await this.switchCertNotify([ret.CertificateId], true);
44
- }
45
- return ret.CertificateId;
46
- }
47
- async switchCertNotify(certIds, disabled) {
48
- const client = await this.getSslClient();
49
- const params = {
50
- CertificateIds: certIds,
51
- SwitchStatus: disabled ? 1 : 0, //1是忽略通知,0是不忽略
52
- };
53
- const ret = await client.ModifyCertificatesExpiringNotificationSwitch(params);
54
- this.checkRet(ret);
55
- this.logger.info(`关闭证书${certIds}过期通知成功`);
56
- return ret.RequestId;
57
- }
58
- async deployCertificateInstance(params) {
59
- return await this.doRequest("DeployCertificateInstance", params);
60
- }
61
- async DescribeHostUploadUpdateRecordDetail(params) {
62
- return await this.doRequest("DescribeHostUploadUpdateRecordDetail", params);
63
- }
64
- async UploadUpdateCertificateInstance(params) {
65
- return await this.doRequest("UploadUpdateCertificateInstance", params);
66
- }
67
- async DescribeCertificates(params) {
68
- return await this.doRequest("DescribeCertificates", {
69
- ExpirationSort: "ASC",
70
- ...params,
71
- });
72
- }
73
- async doRequest(action, params) {
74
- const client = await this.getSslClient();
75
- try {
76
- const res = await client.request(action, params);
77
- this.checkRet(res);
78
- return res;
79
- }
80
- catch (e) {
81
- this.logger.error(`action ${action} error: ${e.message},requestId=${e.RequestId}`);
82
- throw e;
83
- }
84
- }
85
- }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NsLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW5jZW50L2xpYi9zc2wtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFnQjtJQUN0QixNQUFNLENBQVU7SUFDaEIsTUFBTSxDQUFVO0lBQ2hCLFlBQVksSUFBaUU7UUFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUNELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7UUFDakcsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFFdkMsTUFBTSxZQUFZLEdBQUc7WUFDbkIsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQzlCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7YUFDakM7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFO2dCQUNQLFdBQVcsRUFBRTtvQkFDWCxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtpQkFDNUY7YUFDRjtTQUNGLENBQUM7UUFFRixPQUFPLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBUTtRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUss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