@certd/plugin-lib 1.37.17 → 1.38.0

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 (114) hide show
  1. package/CHANGELOG.md +6 -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/check.d.ts +6 -0
  27. package/dist/lib/check.js +13 -0
  28. package/dist/lib/index.d.ts +1 -0
  29. package/dist/lib/index.js +1 -1
  30. package/dist/lib/ocr-api.js +0 -1
  31. package/dist/service/index.js +0 -1
  32. package/dist/service/site-info.js +0 -1
  33. package/package.json +13 -9
  34. package/tsconfig.json +2 -1
  35. package/dist/aliyun/access/aliesa-access.d.ts +0 -5
  36. package/dist/aliyun/access/aliesa-access.js +0 -61
  37. package/dist/aliyun/access/alioss-access.d.ts +0 -6
  38. package/dist/aliyun/access/alioss-access.js +0 -89
  39. package/dist/aliyun/access/aliyun-access.d.ts +0 -30
  40. package/dist/aliyun/access/aliyun-access.js +0 -126
  41. package/dist/aliyun/access/index.d.ts +0 -3
  42. package/dist/aliyun/access/index.js +0 -4
  43. package/dist/aliyun/index.d.ts +0 -2
  44. package/dist/aliyun/index.js +0 -3
  45. package/dist/aliyun/lib/base-client.d.ts +0 -16
  46. package/dist/aliyun/lib/base-client.js +0 -67
  47. package/dist/aliyun/lib/index.d.ts +0 -3
  48. package/dist/aliyun/lib/index.js +0 -4
  49. package/dist/aliyun/lib/oss-client.d.ts +0 -19
  50. package/dist/aliyun/lib/oss-client.js +0 -76
  51. package/dist/aliyun/lib/ssl-client.d.ts +0 -49
  52. package/dist/aliyun/lib/ssl-client.js +0 -133
  53. package/dist/ctyun/access/ctyun-access.d.ts +0 -5
  54. package/dist/ctyun/access/ctyun-access.js +0 -49
  55. package/dist/ctyun/index.d.ts +0 -1
  56. package/dist/ctyun/index.js +0 -2
  57. package/dist/ftp/access.d.ts +0 -12
  58. package/dist/ftp/access.js +0 -99
  59. package/dist/ftp/client.d.ts +0 -16
  60. package/dist/ftp/client.js +0 -57
  61. package/dist/ftp/index.d.ts +0 -2
  62. package/dist/ftp/index.js +0 -3
  63. package/dist/oss/api.d.ts +0 -46
  64. package/dist/oss/api.js +0 -48
  65. package/dist/oss/factory.d.ts +0 -10
  66. package/dist/oss/factory.js +0 -46
  67. package/dist/oss/impls/alioss.d.ts +0 -13
  68. package/dist/oss/impls/alioss.js +0 -55
  69. package/dist/oss/impls/ftp.d.ts +0 -12
  70. package/dist/oss/impls/ftp.js +0 -75
  71. package/dist/oss/impls/qiniuoss.d.ts +0 -13
  72. package/dist/oss/impls/qiniuoss.js +0 -47
  73. package/dist/oss/impls/s3.d.ts +0 -13
  74. package/dist/oss/impls/s3.js +0 -92
  75. package/dist/oss/impls/sftp.d.ts +0 -10
  76. package/dist/oss/impls/sftp.js +0 -79
  77. package/dist/oss/impls/ssh.d.ts +0 -11
  78. package/dist/oss/impls/ssh.js +0 -59
  79. package/dist/oss/impls/tencentcos.d.ts +0 -13
  80. package/dist/oss/impls/tencentcos.js +0 -51
  81. package/dist/oss/index.d.ts +0 -2
  82. package/dist/oss/index.js +0 -3
  83. package/dist/qiniu/access-oss.d.ts +0 -5
  84. package/dist/qiniu/access-oss.js +0 -47
  85. package/dist/qiniu/access.d.ts +0 -5
  86. package/dist/qiniu/access.js +0 -43
  87. package/dist/qiniu/index.d.ts +0 -3
  88. package/dist/qiniu/index.js +0 -4
  89. package/dist/qiniu/lib/sdk.d.ts +0 -34
  90. package/dist/qiniu/lib/sdk.js +0 -162
  91. package/dist/s3/access.d.ts +0 -25
  92. package/dist/s3/access.js +0 -134
  93. package/dist/s3/index.d.ts +0 -1
  94. package/dist/s3/index.js +0 -2
  95. package/dist/ssh/index.d.ts +0 -3
  96. package/dist/ssh/index.js +0 -4
  97. package/dist/ssh/sftp-access.d.ts +0 -5
  98. package/dist/ssh/sftp-access.js +0 -51
  99. package/dist/ssh/ssh-access.d.ts +0 -17
  100. package/dist/ssh/ssh-access.js +0 -214
  101. package/dist/ssh/ssh.d.ts +0 -138
  102. package/dist/ssh/ssh.js +0 -589
  103. package/dist/tencent/access-cos.d.ts +0 -6
  104. package/dist/tencent/access-cos.js +0 -83
  105. package/dist/tencent/access.d.ts +0 -10
  106. package/dist/tencent/access.js +0 -90
  107. package/dist/tencent/index.d.ts +0 -3
  108. package/dist/tencent/index.js +0 -4
  109. package/dist/tencent/lib/cos-client.d.ts +0 -19
  110. package/dist/tencent/lib/cos-client.js +0 -98
  111. package/dist/tencent/lib/index.d.ts +0 -2
  112. package/dist/tencent/lib/index.js +0 -3
  113. package/dist/tencent/lib/ssl-client.d.ts +0 -32
  114. package/dist/tencent/lib/ssl-client.js +0 -86
package/dist/ssh/ssh.js DELETED
@@ -1,589 +0,0 @@
1
- // @ts-ignore
2
- import path from "path";
3
- import { isArray } from "lodash-es";
4
- import { safePromise } from "@certd/basic";
5
- import fs from "fs";
6
- export class AsyncSsh2Client {
7
- conn;
8
- logger;
9
- connConf;
10
- windows = false;
11
- encoding;
12
- constructor(connConf, logger) {
13
- this.connConf = connConf;
14
- this.logger = logger;
15
- this.windows = connConf.windows || false;
16
- this.encoding = connConf.encoding;
17
- }
18
- convert(iconv, buffer) {
19
- if (this.encoding) {
20
- return iconv.decode(buffer, this.encoding);
21
- }
22
- return buffer.toString().replaceAll("\r\n", "\n");
23
- }
24
- async connect() {
25
- this.logger.info(`开始连接,${this.connConf.host}:${this.connConf.port}`);
26
- if (this.connConf.socksProxy) {
27
- this.logger.info(`使用代理${this.connConf.socksProxy}`);
28
- if (typeof this.connConf.port === "string") {
29
- this.connConf.port = parseInt(this.connConf.port);
30
- }
31
- const { SocksClient } = await import("socks");
32
- const proxyOption = this.parseSocksProxyFromUri(this.connConf.socksProxy);
33
- const info = await SocksClient.createConnection({
34
- proxy: proxyOption,
35
- command: "connect",
36
- destination: {
37
- host: this.connConf.host,
38
- port: this.connConf.port,
39
- },
40
- });
41
- this.logger.info("代理连接成功");
42
- this.connConf.sock = info.socket;
43
- }
44
- const ssh2 = await import("ssh2");
45
- const ssh2Constants = await import("ssh2/lib/protocol/constants.js");
46
- const { SUPPORTED_KEX, SUPPORTED_SERVER_HOST_KEY, SUPPORTED_CIPHER, SUPPORTED_MAC } = ssh2Constants.default;
47
- return safePromise((resolve, reject) => {
48
- try {
49
- const conn = new ssh2.default.Client();
50
- conn
51
- .on("error", (err) => {
52
- this.logger.error("连接失败", err);
53
- reject(err);
54
- })
55
- .on("ready", () => {
56
- this.logger.info("连接成功");
57
- this.conn = conn;
58
- resolve(this.conn);
59
- })
60
- .on("keyboard-interactive", (name, descr, lang, prompts, finish) => {
61
- // For illustration purposes only! It's not safe to do this!
62
- // You can read it from process.stdin or whatever else...
63
- const password = this.connConf.password;
64
- return finish([password]);
65
- // And remember, server may trigger this event multiple times
66
- // and for different purposes (not only auth)
67
- })
68
- .connect({
69
- ...this.connConf,
70
- tryKeyboard: true,
71
- algorithms: {
72
- serverHostKey: SUPPORTED_SERVER_HOST_KEY,
73
- cipher: SUPPORTED_CIPHER,
74
- hmac: SUPPORTED_MAC,
75
- kex: SUPPORTED_KEX,
76
- },
77
- });
78
- }
79
- catch (e) {
80
- reject(e);
81
- }
82
- });
83
- }
84
- async getSftp() {
85
- return safePromise((resolve, reject) => {
86
- this.logger.info("获取sftp");
87
- this.conn.sftp((err, sftp) => {
88
- if (err) {
89
- reject(err);
90
- return;
91
- }
92
- resolve(sftp);
93
- });
94
- });
95
- }
96
- async fastPut(options) {
97
- const { sftp, localPath, remotePath, opts } = options;
98
- return safePromise((resolve, reject) => {
99
- this.logger.info(`开始上传:${localPath} => ${remotePath}`);
100
- sftp.fastPut(localPath, remotePath, { ...(opts ?? {}) }, (err) => {
101
- if (err) {
102
- reject(err);
103
- this.logger.error("请确认路径是否包含文件名,路径本身不能是目录,路径不能有*?之类的特殊符号,要有写入权限");
104
- return;
105
- }
106
- this.logger.info(`上传文件成功:${localPath} => ${remotePath}`);
107
- resolve({});
108
- });
109
- });
110
- }
111
- async listDir(options) {
112
- const { sftp, remotePath } = options;
113
- return safePromise((resolve, reject) => {
114
- this.logger.info(`listDir:${remotePath}`);
115
- sftp.readdir(remotePath, (err, list) => {
116
- if (err) {
117
- reject(err);
118
- return;
119
- }
120
- resolve(list);
121
- });
122
- });
123
- }
124
- async unlink(options) {
125
- const { sftp, remotePath } = options;
126
- return safePromise((resolve, reject) => {
127
- this.logger.info(`开始删除远程文件:${remotePath}`);
128
- sftp.unlink(remotePath, (err) => {
129
- if (err) {
130
- reject(err);
131
- return;
132
- }
133
- this.logger.info(`删除文件成功:${remotePath}`);
134
- resolve({});
135
- });
136
- });
137
- }
138
- /**
139
- *
140
- * @param script
141
- * @param opts {withStdErr 返回{stdOut,stdErr}}
142
- */
143
- async exec(script, opts = {}) {
144
- if (!script) {
145
- this.logger.info("script 为空,取消执行");
146
- return;
147
- }
148
- let iconv = await import("iconv-lite");
149
- iconv = iconv.default;
150
- // if (this.connConf.windows) {
151
- // script += "\r\nexit\r\n";
152
- // //保证windows下正常退出
153
- // }
154
- if (script.includes(" -i ")) {
155
- this.logger.warn("不支持交互式命令,请不要使用-i参数");
156
- }
157
- return safePromise((resolve, reject) => {
158
- this.logger.info(`执行命令:[${this.connConf.host}][exec]: \n` + script);
159
- // pty 伪终端,window下的输出会带上conhost.exe之类的多余的字符串,影响返回结果判断
160
- // linux下 当使用keyboard-interactive 登录时,需要pty
161
- const pty = this.connConf.pty; //linux下开启伪终端,windows下不开启
162
- this.conn.exec(script, { pty, env: opts.env }, (err, stream) => {
163
- if (err) {
164
- reject(err);
165
- return;
166
- }
167
- let data = "";
168
- let stdErr = "";
169
- let hasErrorLog = false;
170
- stream
171
- .on("close", (code, signal) => {
172
- this.logger.info(`[${this.connConf.host}][close]:code:${code}`);
173
- /**
174
- * ]pipeline 执行命令:[10.123.0.2][exec]:cd /d D:\nginx-1.27.5 && D:\nginx-1.27.5\nginx.exe -t && D:\nginx-1.27.5\nginx.exe -s reload
175
- * [2025-07-09T10:24:11.219] [ERROR]pipeline - [10. 123.0. 2][error]: nginx: the configuration file D: \nginx-1.27. 5/conf/nginx. conf syntax is ok
176
- * [2025-07-09T10:24:11.231] [ERROR][10. 123. 0. 2] [error]: nginx: configuration file D: \nginx-1.27.5/conf/nginx.conf test is successful
177
- * pipeline-
178
- * [2025-07-09T10:24:11.473] [INFO]pipeline -[10.123.0.2][close]:code:0
179
- * [2025-07-09T10:24:11.473][ERRoR] pipeline- [step][主机一执行远程主机脚本命令]<id:53hyarN3yvmbijNuMiNAt>: [Eror: nginx: the configuration fileD:\nginx-1.27.5/conf/nginx.conf syntax is ok
180
- //需要忽略windows的错误
181
- */
182
- // if (opts.throwOnStdErr == null && this.windows) {
183
- // opts.throwOnStdErr = true;
184
- // }
185
- if (opts.throwOnStdErr && hasErrorLog) {
186
- reject(new Error(data));
187
- }
188
- if (code === 0) {
189
- if (opts.withStdErr === true) {
190
- //@ts-ignore
191
- resolve({
192
- stdErr,
193
- stdOut: data,
194
- });
195
- }
196
- else {
197
- resolve(data);
198
- }
199
- }
200
- else {
201
- reject(new Error(data));
202
- }
203
- })
204
- .on("data", (ret) => {
205
- const out = this.convert(iconv, ret);
206
- data += out;
207
- this.logger.info(`[${this.connConf.host}][info]: ` + out.trimEnd());
208
- })
209
- .on("error", (err) => {
210
- reject(err);
211
- this.logger.error(err);
212
- })
213
- .stderr.on("data", (ret) => {
214
- const err = this.convert(iconv, ret);
215
- stdErr += err;
216
- hasErrorLog = true;
217
- if (err.includes("sudo: a password is required")) {
218
- this.logger.warn("请配置sudo免密,否则命令无法执行");
219
- }
220
- this.logger.error(`[${this.connConf.host}][error]: ` + err.trimEnd());
221
- });
222
- });
223
- });
224
- }
225
- async shell(script) {
226
- const stripAnsiModule = await import("strip-ansi");
227
- const stripAnsi = stripAnsiModule.default;
228
- return safePromise((resolve, reject) => {
229
- this.logger.info(`执行shell脚本:[${this.connConf.host}][shell]: ` + script);
230
- this.conn.shell((err, stream) => {
231
- if (err) {
232
- reject(err);
233
- return;
234
- }
235
- let output = "";
236
- function ansiHandle(data) {
237
- data = data.replace(/\[[0-9]+;1H/g, "");
238
- data = stripAnsi(data);
239
- return data.replaceAll("\r\n", "\n");
240
- }
241
- stream
242
- .on("close", (code) => {
243
- this.logger.info("Stream :: close,code: " + code);
244
- resolve(output);
245
- })
246
- .on("data", (ret) => {
247
- const data = ansiHandle(ret.toString());
248
- this.logger.info(data);
249
- output += data;
250
- })
251
- .on("error", (err) => {
252
- reject(err);
253
- this.logger.error(err);
254
- })
255
- .stderr.on("data", (ret) => {
256
- const data = ansiHandle(ret.toString());
257
- output += data;
258
- this.logger.error(`[${this.connConf.host}][error]: ` + data);
259
- });
260
- //保证windows下正常退出
261
- const exit = "\r\nexit\r\n";
262
- stream.end(script + exit);
263
- });
264
- });
265
- }
266
- end() {
267
- if (this.conn) {
268
- this.conn.end();
269
- this.conn.destroy();
270
- this.conn = null;
271
- }
272
- }
273
- parseSocksProxyFromUri(socksProxyUri) {
274
- const url = new URL(socksProxyUri);
275
- let type = 5;
276
- if (url.protocol.startsWith("socks4")) {
277
- type = 4;
278
- }
279
- const proxy = {
280
- host: url.hostname,
281
- port: parseInt(url.port),
282
- type,
283
- };
284
- if (url.username) {
285
- proxy.userId = url.username;
286
- }
287
- if (url.password) {
288
- proxy.password = url.password;
289
- }
290
- return proxy;
291
- }
292
- async download(param) {
293
- return safePromise((resolve, reject) => {
294
- const { remotePath, savePath, sftp } = param;
295
- sftp.fastGet(remotePath, savePath, {
296
- step: (transferred, chunk, total) => {
297
- this.logger.info(`${transferred} / ${total}`);
298
- },
299
- }, (err) => {
300
- if (err) {
301
- reject(err);
302
- }
303
- else {
304
- resolve({});
305
- }
306
- });
307
- });
308
- }
309
- }
310
- export class SshClient {
311
- logger;
312
- /**
313
- *
314
- * @param connectConf
315
- {
316
- host: '192.168.100.100',
317
- port: 22,
318
- username: 'frylock',
319
- password: 'nodejsrules'
320
- }
321
- * @param options
322
- */
323
- async uploadFiles(options) {
324
- const { connectConf, transports, mkdirs, opts } = options;
325
- await this._call({
326
- connectConf,
327
- callable: async (conn) => {
328
- this.logger.info("开始上传");
329
- if (mkdirs !== false) {
330
- this.logger.info("初始化父目录");
331
- for (const transport of transports) {
332
- const filePath = path.dirname(transport.remotePath);
333
- let mkdirCmd = `mkdir -p ${filePath} `;
334
- if (conn.windows) {
335
- if (filePath.indexOf("/") > -1) {
336
- this.logger.info("--------------------------");
337
- this.logger.info("请注意:windows下,文件目录分隔应该写成\\而不是/");
338
- this.logger.info("--------------------------");
339
- }
340
- const isCmd = await this.isCmd(conn);
341
- if (!isCmd) {
342
- mkdirCmd = `New-Item -ItemType Directory -Path "${filePath}" -Force`;
343
- }
344
- else {
345
- mkdirCmd = `if not exist "${filePath}" mkdir "${filePath}"`;
346
- }
347
- }
348
- await conn.exec(mkdirCmd);
349
- }
350
- }
351
- if (options.uploadType === "scp") {
352
- //scp
353
- for (const transport of transports) {
354
- await this.scpUpload({ conn, ...transport, opts });
355
- await new Promise(resolve => setTimeout(resolve, 1000));
356
- }
357
- }
358
- else {
359
- const sftp = await conn.getSftp();
360
- for (const transport of transports) {
361
- await conn.fastPut({ sftp, ...transport, opts });
362
- }
363
- }
364
- this.logger.info("文件全部上传成功");
365
- },
366
- });
367
- }
368
- constructor(logger) {
369
- this.logger = logger;
370
- }
371
- async scpUpload(options) {
372
- const { conn, localPath, remotePath } = options;
373
- return safePromise((resolve, reject) => {
374
- // 关键步骤:构造 SCP 命令
375
- this.logger.info(`开始上传:${localPath} => ${remotePath}`);
376
- conn.conn.exec(`scp -t ${remotePath}`, // -t 表示目标模式
377
- (err, stream) => {
378
- if (err) {
379
- return reject(err);
380
- }
381
- try {
382
- // 准备 SCP 协议头
383
- const fileStats = fs.statSync(localPath);
384
- const fileName = path.basename(localPath);
385
- // SCP 协议格式:C[权限] [文件大小] [文件名]\n
386
- stream.write(`C0644 ${fileStats.size} ${fileName}\n`);
387
- // 通过管道传输文件
388
- fs.createReadStream(localPath)
389
- .on("error", e => {
390
- this.logger.info("read stream error", e);
391
- reject(e);
392
- })
393
- .pipe(stream)
394
- .on("finish", async () => {
395
- this.logger.info(`上传完成:${localPath} => ${remotePath}`);
396
- resolve(true);
397
- })
398
- .on("error", reject);
399
- }
400
- catch (e) {
401
- reject(e);
402
- }
403
- });
404
- });
405
- }
406
- async removeFiles(opts) {
407
- const { connectConf, files } = opts;
408
- await this._call({
409
- connectConf,
410
- callable: async (conn) => {
411
- const sftp = await conn.getSftp();
412
- this.logger.info("开始删除");
413
- for (const file of files) {
414
- await conn.unlink({
415
- sftp,
416
- remotePath: file,
417
- });
418
- }
419
- this.logger.info("文件全部删除成功");
420
- },
421
- });
422
- }
423
- async isCmd(conn) {
424
- const spec = await conn.exec("echo %COMSPEC% ");
425
- const ret = spec.toString().trim();
426
- if (ret.includes("%COMSPEC%") && !ret.includes("echo %COMSPEC%")) {
427
- return false;
428
- }
429
- else {
430
- return true;
431
- }
432
- }
433
- async getIsCmd(options) {
434
- const { connectConf } = options;
435
- return await this._call({
436
- connectConf,
437
- callable: async (conn) => {
438
- return await this.isCmd(conn);
439
- },
440
- });
441
- }
442
- /**
443
- *
444
- * Set-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
445
- * Start-Service sshd
446
- *
447
- * Set-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\cmd.exe"
448
- * @param options
449
- */
450
- async exec(options) {
451
- let { script } = options;
452
- const { connectConf, throwOnStdErr } = options;
453
- // this.logger.info('命令:', script);
454
- return await this._call({
455
- connectConf,
456
- callable: async (conn) => {
457
- let isWinCmd = false;
458
- const isLinux = !connectConf.windows;
459
- const envScripts = [];
460
- if (connectConf.windows) {
461
- isWinCmd = await this.isCmd(conn);
462
- }
463
- if (options.env) {
464
- for (const key in options.env) {
465
- if (isLinux) {
466
- envScripts.push(`export ${key}=${options.env[key]}`);
467
- }
468
- else if (isWinCmd) {
469
- //win cmd
470
- envScripts.push(`set ${key}=${options.env[key]}`);
471
- }
472
- else {
473
- //powershell
474
- envScripts.push(`$env:${key}="${options.env[key]}"`);
475
- }
476
- }
477
- }
478
- if (isWinCmd) {
479
- if (typeof script === "string") {
480
- script = script.split("\n");
481
- }
482
- //组合成&&的形式
483
- script = envScripts.concat(script);
484
- script = script;
485
- script = script.join(" && ");
486
- }
487
- else {
488
- const newLine = isLinux ? "\n" : "\r\n";
489
- if (isArray(script)) {
490
- script = script;
491
- script = script.join(newLine);
492
- }
493
- if (envScripts.length > 0) {
494
- script = envScripts.join(newLine) + newLine + script;
495
- }
496
- }
497
- if (isLinux) {
498
- if (options.connectConf.scriptType == "bash") {
499
- script = "#!/usr/bin/env bash \n" + script;
500
- }
501
- else if (options.connectConf.scriptType == "sh") {
502
- script = "#!/bin/sh\n" + script;
503
- }
504
- if (options.connectConf.scriptType != "fish" && options.stopOnError !== false) {
505
- script = "set -e\n" + script;
506
- }
507
- }
508
- return await conn.exec(script, { throwOnStdErr });
509
- },
510
- });
511
- }
512
- async shell(options) {
513
- let { script } = options;
514
- const { connectConf } = options;
515
- if (isArray(script)) {
516
- script = script;
517
- if (connectConf.windows) {
518
- script = script.join("\r\n");
519
- }
520
- else {
521
- script = script.join("\n");
522
- }
523
- }
524
- else {
525
- if (connectConf.windows) {
526
- //@ts-ignore
527
- script = script.replaceAll("\n", "\r\n");
528
- }
529
- }
530
- return await this._call({
531
- connectConf,
532
- callable: async (conn) => {
533
- return await conn.shell(script);
534
- },
535
- });
536
- }
537
- async _call(options) {
538
- const { connectConf, callable } = options;
539
- const conn = new AsyncSsh2Client(connectConf, this.logger);
540
- try {
541
- await conn.connect();
542
- }
543
- catch (e) {
544
- if (e.message?.indexOf("All configured authentication methods failed") > -1) {
545
- this.logger.error(e);
546
- throw new Error("登录失败,请检查用户名/密码/密钥是否正确");
547
- }
548
- throw e;
549
- }
550
- let timeoutId = null;
551
- try {
552
- timeoutId = setTimeout(() => {
553
- this.logger.info("执行超时,断开连接");
554
- conn.end();
555
- }, 1000 * (connectConf.timeout || 1800));
556
- return await callable(conn);
557
- }
558
- finally {
559
- clearTimeout(timeoutId);
560
- conn.end();
561
- }
562
- }
563
- async listDir(param) {
564
- return await this._call({
565
- connectConf: param.connectConf,
566
- callable: async (conn) => {
567
- const sftp = await conn.getSftp();
568
- return await conn.listDir({
569
- sftp,
570
- remotePath: param.dir,
571
- });
572
- },
573
- });
574
- }
575
- async download(param) {
576
- return await this._call({
577
- connectConf: param.connectConf,
578
- callable: async (conn) => {
579
- const sftp = await conn.getSftp();
580
- return await conn.download({
581
- sftp,
582
- remotePath: param.filePath,
583
- savePath: param.savePath,
584
- });
585
- },
586
- });
587
- }
588
- }
589
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NzaC9zc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBVyxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHcEQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBb0JwQixNQUFNLE9BQU8sZUFBZTtJQUMxQixJQUFJLENBQU07SUFDVixNQUFNLENBQVU7SUFDaEIsUUFBUSxDQUErQjtJQUN2QyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFFBQVEsQ0FBUztJQUNqQixZQUFZLFFBQW1CLEVBQUUsTUFBZTtRQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVUsRUFBRSxNQUFjO1FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxD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
@@ -1,6 +0,0 @@
1
- import { BaseAccess } from "@certd/pipeline";
2
- export declare class TencentCosAccess extends BaseAccess {
3
- accessId: string;
4
- region: string;
5
- bucket: string;
6
- }