chore: 证书支持jks格式

This commit is contained in:
xiaojunnuo
2024-10-30 01:44:02 +08:00
parent ccfe922c30
commit 385757b54b
10 changed files with 111 additions and 72 deletions

View File

@@ -1,8 +1,8 @@
//转换为import
import childProcess from "child_process";
import { safePromise } from "./util.promise.js";
import { ILogger, logger } from "./util.log.js";
import childProcess from 'child_process';
import { safePromise } from './util.promise.js';
import { ILogger, logger } from './util.log.js';
import iconv from 'iconv-lite';
export type ExecOption = {
cmd: string | string[];
env: any;
@@ -11,12 +11,12 @@ export type ExecOption = {
};
async function exec(opts: ExecOption): Promise<string> {
let cmd = "";
let cmd = '';
const log = opts.logger || logger;
if (opts.cmd instanceof Array) {
for (const item of opts.cmd) {
if (cmd) {
cmd += " && " + item;
cmd += ' && ' + item;
} else {
cmd = item;
}
@@ -38,7 +38,7 @@ async function exec(opts: ExecOption): Promise<string> {
log.error(`exec error: ${error}`);
reject(error);
} else {
const res = stdout.toString("utf-8");
const res = stdout.toString('utf-8');
log.info(`stdout: ${res}`);
resolve(res);
}
@@ -55,13 +55,31 @@ export type SpawnOption = {
logger?: ILogger;
options?: any;
};
function isWindows() {
return process.platform === 'win32';
}
function convert(buffer: any) {
if (isWindows()) {
const decoded = iconv.decode(buffer, 'GBK');
// 检查是否有有效字符
return decoded && decoded.trim().length > 0 ? decoded : buffer.toString();
} else {
return buffer;
}
}
// function convert(buffer: any) {
// return buffer;
// }
async function spawn(opts: SpawnOption): Promise<string> {
let cmd = "";
let cmd = '';
const log = opts.logger || logger;
if (opts.cmd instanceof Array) {
for (const item of opts.cmd) {
if (cmd) {
cmd += " && " + item;
cmd += ' && ' + item;
} else {
cmd = item;
}
@@ -70,8 +88,8 @@ async function spawn(opts: SpawnOption): Promise<string> {
cmd = opts.cmd;
}
log.info(`执行命令: ${cmd}`);
let stdout = "";
let stderr = "";
let stdout = '';
let stderr = '';
return safePromise((resolve, reject) => {
const ls = childProcess.spawn(cmd, {
shell: true,
@@ -81,21 +99,23 @@ async function spawn(opts: SpawnOption): Promise<string> {
},
...opts.options,
});
ls.stdout.on("data", (data) => {
ls.stdout.on('data', data => {
data = convert(data);
log.info(`stdout: ${data}`);
stdout += data;
});
ls.stderr.on("data", (data) => {
log.error(`stderr: ${data}`);
ls.stderr.on('data', data => {
data = convert(data);
log.warn(`stderr: ${data}`);
stderr += data;
});
ls.on("error", (error) => {
ls.on('error', error => {
log.error(`child process error: ${error}`);
reject(error);
});
ls.on("close", (code: number) => {
ls.on('close', (code: number) => {
if (code !== 0) {
log.error(`child process exited with code ${code}`);
reject(new Error(stderr));