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): 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();