hivessh
Version:
HiveSsh is an innovative library designed to streamline SSH2 connections and simplify task execution on Linux servers.
50 lines • 6.18 kB
JavaScript
export function parseHostId(settings) {
const value = (settings.user ?? "root") +
"@" +
settings.host +
":" +
(settings.port ?? 22);
if (!isHostId(value)) {
throw new Error("Value '" + value + "' is not a valid host id");
}
return value;
}
export const allowedRuleChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.:";
export const allowedIdRuleChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@";
export function throwCharsetError(value, chatSet) {
for (const char of value) {
if (!chatSet.includes(char)) {
throw new Error("Illegal character in selector value: '" + char + "'");
}
}
}
export function matchesCharset(value, chatSet) {
for (const char of value) {
if (!chatSet.includes(char)) {
return false;
}
}
return true;
}
export function isHostId(value) {
if (typeof value !== "string") {
return false;
}
if (!value.includes("@")) {
return false;
}
const parts = value.split("@");
if (parts.length != 2 ||
parts[0].length == 0 ||
parts[1].length == 0) {
return false;
}
if (!matchesCharset(parts[0], allowedRuleChars)) {
return false;
}
if (!matchesCharset(parts[1], allowedRuleChars + ".:")) {
return false;
}
return true;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9zdElkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0hvc3RJZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLFVBQVUsV0FBVyxDQUN2QixRQUlDO0lBRUQsTUFBTSxLQUFLLEdBQ1AsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQztRQUN6QixHQUFHO1FBQ0gsUUFBUSxDQUFDLElBQUk7UUFDYixHQUFHO1FBQ0gsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXpCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLEdBQUcsMEJBQTBCLENBQUMsQ0FBQTtJQUNuRSxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUN6QixtRUFBbUUsQ0FBQTtBQUV2RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FDM0IsaUVBQWlFLENBQUE7QUFFckUsTUFBTSxVQUFVLGlCQUFpQixDQUM3QixLQUFhLEVBQ2IsT0FBZTtJQUVmLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUMxRSxDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUMxQixLQUFhLEVBQ2IsT0FBZTtJQUVmLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLEtBQUssQ0FBQTtRQUNoQixDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFBO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3BCLEtBQVU7SUFFVixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzlCLElBQ0ksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQztRQUNwQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFDdEIsQ0FBQztRQUNDLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxJQUNJLENBQUMsY0FBYyxDQUNYLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixnQkFBZ0IsQ0FDbkIsRUFDSCxDQUFDO1FBQ0MsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUVELElBQ0ksQ0FBQyxjQUFjLENBQ1gsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLGdCQUFnQixHQUFHLElBQUksQ0FDMUIsRUFDSCxDQUFDO1FBQ0MsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEhvc3RJZCA9IGAke3N0cmluZ31AJHtzdHJpbmd9YFxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSG9zdElkKFxuICAgIHNldHRpbmdzOiB7XG4gICAgICAgIGhvc3Q6IHN0cmluZyxcbiAgICAgICAgdXNlcj86IHN0cmluZyxcbiAgICAgICAgcG9ydD86IG51bWJlcixcbiAgICB9XG4pOiBIb3N0SWQge1xuICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgKHNldHRpbmdzLnVzZXIgPz8gXCJyb290XCIpICtcbiAgICAgICAgXCJAXCIgK1xuICAgICAgICBzZXR0aW5ncy5ob3N0ICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICAoc2V0dGluZ3MucG9ydCA/PyAyMilcblxuICAgIGlmICghaXNIb3N0SWQodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZhbHVlICdcIiArIHZhbHVlICsgXCInIGlzIG5vdCBhIHZhbGlkIGhvc3QgaWRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbn1cblxuZXhwb3J0IGNvbnN0IGFsbG93ZWRSdWxlQ2hhcnMgPVxuICAgIFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODktLjpcIlxuXG5leHBvcnQgY29uc3QgYWxsb3dlZElkUnVsZUNoYXJzID1cbiAgICBcImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5QFwiXG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0NoYXJzZXRFcnJvcihcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGNoYXRTZXQ6IHN0cmluZyxcbik6IHZvaWQgfCBuZXZlciB7XG4gICAgZm9yIChjb25zdCBjaGFyIG9mIHZhbHVlKSB7XG4gICAgICAgIGlmICghY2hhdFNldC5pbmNsdWRlcyhjaGFyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBjaGFyYWN0ZXIgaW4gc2VsZWN0b3IgdmFsdWU6ICdcIiArIGNoYXIgKyBcIidcIilcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoZXNDaGFyc2V0KFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgY2hhdFNldDogc3RyaW5nLFxuKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBjaGFyIG9mIHZhbHVlKSB7XG4gICAgICAgIGlmICghY2hhdFNldC5pbmNsdWRlcyhjaGFyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIb3N0SWQoXG4gICAgdmFsdWU6IGFueVxuKTogdmFsdWUgaXMgSG9zdElkIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmICghdmFsdWUuaW5jbHVkZXMoXCJAXCIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoXCJAXCIpXG4gICAgaWYgKFxuICAgICAgICBwYXJ0cy5sZW5ndGggIT0gMiB8fFxuICAgICAgICBwYXJ0c1swXS5sZW5ndGggPT0gMCB8fFxuICAgICAgICBwYXJ0c1sxXS5sZW5ndGggPT0gMFxuICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAgICFtYXRjaGVzQ2hhcnNldChcbiAgICAgICAgICAgIHBhcnRzWzBdLFxuICAgICAgICAgICAgYWxsb3dlZFJ1bGVDaGFyc1xuICAgICAgICApXG4gICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgICAgIW1hdGNoZXNDaGFyc2V0KFxuICAgICAgICAgICAgcGFydHNbMV0sXG4gICAgICAgICAgICBhbGxvd2VkUnVsZUNoYXJzICsgXCIuOlwiXG4gICAgICAgIClcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbn0iXX0=