UNPKG

hivessh

Version:

HiveSsh is an innovative library designed to streamline SSH2 connections and simplify task execution on Linux servers.

52 lines 7.9 kB
import { Client as SshClient } from "ssh2"; export function createClient(settings) { return new Promise((res, rej) => { const hopClient = new SshClient(); hopClient.on("ready", () => res(hopClient)); hopClient.on("error", (err) => rej(err)); hopClient.connect({ ...settings, host: settings.sock ? undefined : settings.host, port: settings.sock ? undefined : settings.port, }); }); } export function createForward(ssh, srcHost, srcPort, targetHost, targetPort) { return new Promise((res, rej) => { ssh.forwardOut(srcHost, srcPort, targetHost, targetPort, (err, stream) => { if (err) { ssh.end(); rej(err); return; } res(stream); }); }); } export async function handleHops(settings, defaultSrcHost = "127.0.0.1", defaultSrcPort = 60022) { const hops = settings.hops; if (hops === undefined || hops.length == 0) { return createClient(settings); } let lastHop = await createClient(hops[0]); for (let i = 1; i < hops.length; i++) { const nextSetting = hops[i]; const channel = await createForward(lastHop, defaultSrcHost, defaultSrcPort, nextSetting.host, nextSetting.port); lastHop = await createClient({ ...nextSetting, host: undefined, port: undefined, sock: channel, }); } const channel = await createForward(lastHop, defaultSrcHost, defaultSrcPort, settings.host, settings.port); const finalSshClient = await createClient({ ...settings, host: undefined, port: undefined, sock: channel, }); return finalSshClient; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9zdEhvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ib3N0SG9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsTUFBTSxJQUFJLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxRCxNQUFNLFVBQVUsWUFBWSxDQUN4QixRQUF5QjtJQUV6QixPQUFPLElBQUksT0FBTyxDQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7UUFFakMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFDM0MsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBRXhDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDZCxHQUFHLFFBQVE7WUFDWCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUMvQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSTtTQUNsRCxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUN6QixHQUFjLEVBQ2QsT0FBZSxFQUNmLE9BQWUsRUFDZixVQUFrQixFQUNsQixVQUFrQjtJQUVsQixPQUFPLElBQUksT0FBTyxDQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUMzQyxHQUFHLENBQUMsVUFBVSxDQUNWLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFVBQVUsRUFDVixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNaLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO2dCQUNULEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDUixPQUFNO1lBQ1YsQ0FBQztZQUVELEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNmLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQzVCLFFBQTZCLEVBQzdCLGlCQUF5QixXQUFXLEVBQ3BDLGlCQUF5QixLQUFLO0lBRTlCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUE7SUFDMUIsSUFDSSxJQUFJLEtBQUssU0FBUztRQUNsQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFDbEIsQ0FBQztRQUNDLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFRCxJQUFJLE9BQU8sR0FBYyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVwRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ25DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUzQixNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FDL0IsT0FBTyxFQUNQLGNBQWMsRUFDZCxjQUFjLEVBQ2QsV0FBVyxDQUFDLElBQUksRUFDaEIsV0FBVyxDQUFDLElBQUksQ0FDbkIsQ0FBQTtRQUVELE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztZQUN6QixHQUFHLFdBQVc7WUFDZCxJQUFJLEVBQUUsU0FBZ0I7WUFDdEIsSUFBSSxFQUFFLFNBQWdCO1lBQ3RCLElBQUksRUFBRSxPQUFPO1NBQ2hCLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FDL0IsT0FBTyxFQUNQLGNBQWMsRUFDZCxjQUFjLEVBQ2QsUUFBUSxDQUFDLElBQUksRUFDYixRQUFRLENBQUMsSUFBSSxDQUNoQixDQUFBO0lBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxZQUFZLENBQUM7UUFDdEMsR0FBRyxRQUFRO1FBQ1gsSUFBSSxFQUFFLFNBQWdCO1FBQ3RCLElBQUksRUFBRSxTQUFnQjtRQUN0QixJQUFJLEVBQUUsT0FBTztLQUNoQixDQUFDLENBQUE7SUFFRixPQUFPLGNBQWMsQ0FBQTtBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpZW50Q2hhbm5lbCwgQ2xpZW50IGFzIFNzaENsaWVudCB9IGZyb20gXCJzc2gyXCI7XG5pbXBvcnQgeyBIb3BIb3N0U2V0dGluZ3MsIFNzaEhvc3RCYXNlU2V0dGluZ3MgfSBmcm9tIFwiLi9Tc2hIb3N0T3B0aW9ucy5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xpZW50KFxuICAgIHNldHRpbmdzOiBIb3BIb3N0U2V0dGluZ3MsXG4pOiBQcm9taXNlPFNzaENsaWVudD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxTc2hDbGllbnQ+KChyZXMsIHJlaikgPT4ge1xuICAgICAgICBjb25zdCBob3BDbGllbnQgPSBuZXcgU3NoQ2xpZW50KClcblxuICAgICAgICBob3BDbGllbnQub24oXCJyZWFkeVwiLCAoKSA9PiByZXMoaG9wQ2xpZW50KSlcbiAgICAgICAgaG9wQ2xpZW50Lm9uKFwiZXJyb3JcIiwgKGVycikgPT4gcmVqKGVycikpXG5cbiAgICAgICAgaG9wQ2xpZW50LmNvbm5lY3Qoe1xuICAgICAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgICAgICBob3N0OiBzZXR0aW5ncy5zb2NrID8gdW5kZWZpbmVkIDogc2V0dGluZ3MuaG9zdCxcbiAgICAgICAgICAgIHBvcnQ6IHNldHRpbmdzLnNvY2sgPyB1bmRlZmluZWQgOiBzZXR0aW5ncy5wb3J0LFxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3J3YXJkKFxuICAgIHNzaDogU3NoQ2xpZW50LFxuICAgIHNyY0hvc3Q6IHN0cmluZyxcbiAgICBzcmNQb3J0OiBudW1iZXIsXG4gICAgdGFyZ2V0SG9zdDogc3RyaW5nLFxuICAgIHRhcmdldFBvcnQ6IG51bWJlcixcbik6IFByb21pc2U8Q2xpZW50Q2hhbm5lbD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxDbGllbnRDaGFubmVsPigocmVzLCByZWopID0+IHtcbiAgICAgICAgc3NoLmZvcndhcmRPdXQoXG4gICAgICAgICAgICBzcmNIb3N0LFxuICAgICAgICAgICAgc3JjUG9ydCxcbiAgICAgICAgICAgIHRhcmdldEhvc3QsXG4gICAgICAgICAgICB0YXJnZXRQb3J0LFxuICAgICAgICAgICAgKGVyciwgc3RyZWFtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBzc2guZW5kKClcbiAgICAgICAgICAgICAgICAgICAgcmVqKGVycilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVzKHN0cmVhbSlcbiAgICAgICAgICAgIH0pXG4gICAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUhvcHMoXG4gICAgc2V0dGluZ3M6IFNzaEhvc3RCYXNlU2V0dGluZ3MsXG4gICAgZGVmYXVsdFNyY0hvc3Q6IHN0cmluZyA9IFwiMTI3LjAuMC4xXCIsXG4gICAgZGVmYXVsdFNyY1BvcnQ6IG51bWJlciA9IDYwMDIyLFxuKTogUHJvbWlzZTxTc2hDbGllbnQ+IHtcbiAgICBjb25zdCBob3BzID0gc2V0dGluZ3MuaG9wc1xuICAgIGlmIChcbiAgICAgICAgaG9wcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIGhvcHMubGVuZ3RoID09IDBcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNsaWVudChzZXR0aW5ncylcbiAgICB9XG5cbiAgICBsZXQgbGFzdEhvcDogU3NoQ2xpZW50ID0gYXdhaXQgY3JlYXRlQ2xpZW50KGhvcHNbMF0pXG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGhvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbmV4dFNldHRpbmcgPSBob3BzW2ldXG5cbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IGF3YWl0IGNyZWF0ZUZvcndhcmQoXG4gICAgICAgICAgICBsYXN0SG9wLFxuICAgICAgICAgICAgZGVmYXVsdFNyY0hvc3QsXG4gICAgICAgICAgICBkZWZhdWx0U3JjUG9ydCxcbiAgICAgICAgICAgIG5leHRTZXR0aW5nLmhvc3QsXG4gICAgICAgICAgICBuZXh0U2V0dGluZy5wb3J0LFxuICAgICAgICApXG5cbiAgICAgICAgbGFzdEhvcCA9IGF3YWl0IGNyZWF0ZUNsaWVudCh7XG4gICAgICAgICAgICAuLi5uZXh0U2V0dGluZyxcbiAgICAgICAgICAgIGhvc3Q6IHVuZGVmaW5lZCBhcyBhbnksXG4gICAgICAgICAgICBwb3J0OiB1bmRlZmluZWQgYXMgYW55LFxuICAgICAgICAgICAgc29jazogY2hhbm5lbCxcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBjaGFubmVsID0gYXdhaXQgY3JlYXRlRm9yd2FyZChcbiAgICAgICAgbGFzdEhvcCxcbiAgICAgICAgZGVmYXVsdFNyY0hvc3QsXG4gICAgICAgIGRlZmF1bHRTcmNQb3J0LFxuICAgICAgICBzZXR0aW5ncy5ob3N0LFxuICAgICAgICBzZXR0aW5ncy5wb3J0LFxuICAgIClcblxuICAgIGNvbnN0IGZpbmFsU3NoQ2xpZW50ID0gYXdhaXQgY3JlYXRlQ2xpZW50KHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGhvc3Q6IHVuZGVmaW5lZCBhcyBhbnksXG4gICAgICAgIHBvcnQ6IHVuZGVmaW5lZCBhcyBhbnksXG4gICAgICAgIHNvY2s6IGNoYW5uZWwsXG4gICAgfSlcblxuICAgIHJldHVybiBmaW5hbFNzaENsaWVudFxufSJdfQ==