hivessh
Version:
HiveSsh is an innovative library designed to streamline SSH2 connections and simplify task execution on Linux servers.
36 lines • 6.24 kB
JavaScript
import { promises as afs } from "fs";
import { parseHostId } from "./HostId.js";
import { pathType } from "./utils/base.js";
export const defaultSshHostSettings = {
host: undefined,
port: 22,
user: "root",
hops: undefined,
id: undefined,
readyTimeout: 1000 * 8,
};
export function completeTargetSettings(options) {
return {
...defaultSshHostSettings,
...options,
id: parseHostId(options),
};
}
export async function loadSettings(options) {
const ret = completeTargetSettings(options);
if (Array.isArray(options.hops)) {
ret.hops = await Promise.all(options.hops.map(loadSettings));
}
if (typeof ret.privateKey != "string" &&
typeof ret.privateKeyPath == "string") {
if ((await pathType(ret.privateKeyPath)) != "FILE") {
throw new Error("Private key not exist at '" +
ret.privateKeyPath + "'");
}
ret.privateKey = await afs.readFile(ret.privateKeyPath, {
encoding: "utf8"
});
}
return ret;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3NoSG9zdE9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU3NoSG9zdE9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFcEMsT0FBTyxFQUFVLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUF5QzFDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFvQjtJQUNuRCxJQUFJLEVBQUUsU0FBZ0I7SUFDdEIsSUFBSSxFQUFFLEVBQUU7SUFDUixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxTQUFTO0lBQ2YsRUFBRSxFQUFFLFNBQWdCO0lBQ3BCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQztDQUN6QixDQUFBO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxPQUF1QjtJQUV2QixPQUFPO1FBQ0gsR0FBRyxzQkFBc0I7UUFDekIsR0FBRyxPQUFPO1FBQ1YsRUFBRSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUM7S0FDM0IsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDOUIsT0FBdUI7SUFFdkIsTUFBTSxHQUFHLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFM0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDWixZQUFZLENBQ2YsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELElBQ0ksT0FBTyxHQUFHLENBQUMsVUFBVSxJQUFJLFFBQVE7UUFDakMsT0FBTyxHQUFHLENBQUMsY0FBYyxJQUFJLFFBQVEsRUFDdkMsQ0FBQztRQUNDLElBQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNqRCxNQUFNLElBQUksS0FBSyxDQUNYLDRCQUE0QjtnQkFDNUIsR0FBRyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQzNCLENBQUE7UUFDTCxDQUFDO1FBRUQsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQy9CLEdBQUcsQ0FBQyxjQUFjLEVBQ2xCO1lBQ0ksUUFBUSxFQUFFLE1BQU07U0FDbkIsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELE9BQU8sR0FBc0IsQ0FBQTtBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgYWZzIH0gZnJvbSBcImZzXCJcbmltcG9ydCB7IENvbm5lY3RDb25maWcgfSBmcm9tIFwic3NoMlwiXG5pbXBvcnQgeyBIb3N0SWQsIHBhcnNlSG9zdElkIH0gZnJvbSBcIi4vSG9zdElkLmpzXCJcbmltcG9ydCB7IHBhdGhUeXBlIH0gZnJvbSBcIi4vdXRpbHMvYmFzZS5qc1wiXG5cbmV4cG9ydCB0eXBlIFNzaDJTc2hPcHRpb25zID0gT21pdDxDb25uZWN0Q29uZmlnLCBcImhvc3RcIiB8IFwicG9ydFwiIHwgXCJ1c2VyXCIgfCBcInBhc3NwaHJhc2VcIiB8IFwicHJpdmF0ZUtleVwiIHwgXCJwYXNzcGhyYXNlXCIgfCBcInBhc3N3b3JkXCI+XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3NoSG9zdEJhc2VPcHRpb25zIHtcbiAgICBob3N0OiBzdHJpbmcsXG4gICAgcG9ydD86IG51bWJlcixcbiAgICB1c2VyPzogc3RyaW5nLFxuICAgIHByaXZhdGVLZXk/OiBzdHJpbmcsXG4gICAgcHJpdmF0ZUtleVBhdGg/OiBzdHJpbmcsXG4gICAgcGFzc3BocmFzZT86IHN0cmluZyxcbiAgICBwYXNzd29yZD86IHN0cmluZyxcbiAgICBob3BzPzogSG9wSG9zdE9wdGlvbnNbXSB8IHVuZGVmaW5lZCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTc2hIb3N0QmFzZVNldHRpbmdzIHtcbiAgICBob3N0OiBzdHJpbmcsXG4gICAgcG9ydDogbnVtYmVyLFxuICAgIHVzZXI6IHN0cmluZyxcbiAgICBwcml2YXRlS2V5Pzogc3RyaW5nLFxuICAgIHByaXZhdGVLZXlQYXRoPzogc3RyaW5nLFxuICAgIHBhc3NwaHJhc2U/OiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ/OiBzdHJpbmcsXG4gICAgaG9wczogSG9wSG9zdFNldHRpbmdzW10gfCB1bmRlZmluZWQsXG59XG5cblxuZXhwb3J0IHR5cGUgU3NoSG9zdE9wdGlvbnMgPSBTc2hIb3N0QmFzZU9wdGlvbnMgJiBTc2gyU3NoT3B0aW9uc1xuZXhwb3J0IHR5cGUgU3NoSG9zdFRhcmdldFNldHRpbmdzID1cbiAgICBPbWl0PFNzaEhvc3RCYXNlU2V0dGluZ3MsIFwiaG9wc1wiPiAmXG4gICAgUGljazxTc2hIb3N0QmFzZU9wdGlvbnMsIFwiaG9wc1wiPiAmXG4gICAgU3NoMlNzaE9wdGlvbnMgJiB7XG4gICAgICAgIGlkOiBIb3N0SWQsXG4gICAgfVxuZXhwb3J0IHR5cGUgU3NoSG9zdFNldHRpbmdzID0gU3NoSG9zdEJhc2VTZXR0aW5ncyAmIFNzaDJTc2hPcHRpb25zICYge1xuICAgIGlkOiBIb3N0SWQsXG59XG5cbmV4cG9ydCB0eXBlIEhvcEhvc3RPcHRpb25zID0gT21pdDxTc2hIb3N0T3B0aW9ucywgXCJob3BzXCIgfCBcImlkXCI+XG5leHBvcnQgdHlwZSBIb3BIb3N0U2V0dGluZ3MgPSBPbWl0PFNzaEhvc3RTZXR0aW5ncywgXCJob3BzXCIgfCBcImlkXCI+XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0U3NoSG9zdFNldHRpbmdzOiBTc2hIb3N0U2V0dGluZ3MgPSB7XG4gICAgaG9zdDogdW5kZWZpbmVkIGFzIGFueSxcbiAgICBwb3J0OiAyMixcbiAgICB1c2VyOiBcInJvb3RcIixcbiAgICBob3BzOiB1bmRlZmluZWQsXG4gICAgaWQ6IHVuZGVmaW5lZCBhcyBhbnksXG4gICAgcmVhZHlUaW1lb3V0OiAxMDAwICogOCxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsZXRlVGFyZ2V0U2V0dGluZ3MoXG4gICAgb3B0aW9uczogU3NoSG9zdE9wdGlvbnNcbik6IFNzaEhvc3RUYXJnZXRTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGVmYXVsdFNzaEhvc3RTZXR0aW5ncyxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaWQ6IHBhcnNlSG9zdElkKG9wdGlvbnMpLFxuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRTZXR0aW5ncyhcbiAgICBvcHRpb25zOiBTc2hIb3N0T3B0aW9uc1xuKTogUHJvbWlzZTxTc2hIb3N0U2V0dGluZ3M+IHtcbiAgICBjb25zdCByZXQgPSBjb21wbGV0ZVRhcmdldFNldHRpbmdzKG9wdGlvbnMpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLmhvcHMpKSB7XG4gICAgICAgIHJldC5ob3BzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBvcHRpb25zLmhvcHMubWFwKFxuICAgICAgICAgICAgICAgIGxvYWRTZXR0aW5nc1xuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgICB0eXBlb2YgcmV0LnByaXZhdGVLZXkgIT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICB0eXBlb2YgcmV0LnByaXZhdGVLZXlQYXRoID09IFwic3RyaW5nXCJcbiAgICApIHtcbiAgICAgICAgaWYgKChhd2FpdCBwYXRoVHlwZShyZXQucHJpdmF0ZUtleVBhdGgpKSAhPSBcIkZJTEVcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiUHJpdmF0ZSBrZXkgbm90IGV4aXN0IGF0ICdcIiArXG4gICAgICAgICAgICAgICAgcmV0LnByaXZhdGVLZXlQYXRoICsgXCInXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldC5wcml2YXRlS2V5ID0gYXdhaXQgYWZzLnJlYWRGaWxlKFxuICAgICAgICAgICAgcmV0LnByaXZhdGVLZXlQYXRoLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIlxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldCBhcyBTc2hIb3N0U2V0dGluZ3Ncbn1cbiJdfQ==