tapbundle/ts_node/classes.tapnodetools.ts

45 lines
1.0 KiB
TypeScript

import * as plugins from './plugins.js';
class TapNodeTools {
private smartshellInstance: plugins.smartshell.Smartshell;
constructor() {
}
public async runCommand(commandArg) {
if (!this.smartshellInstance) {
this.smartshellInstance = new plugins.smartshell.Smartshell({
executor: 'bash',
});
}
const result = await this.smartshellInstance.exec(commandArg);
return result;
}
public async createHttpsCert(commonName: string = 'localhost'): Promise<{ key: string, cert: string }> {
const key = plugins.crypto.generateKeyPairSync('rsa', {
modulusLength: 2048,
publicExponent: 65537,
});
const cert = '-----BEGIN CERTIFICATE-----\n' +
key.publicKey.export({
type: 'spki',
format: 'pem'
}) +
'\n-----END CERTIFICATE-----\n';
const keyContent = key.privateKey.export({
type: 'pkcs8',
format: 'pem',
});
return {
key: keyContent as string,
cert: cert,
}
}
}
export const tapNodeTools = new TapNodeTools();