"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ensureHostAndKeyPath = exports.findHostSection = exports.getConfigPath = exports.isHostDirective = exports.isDirective = exports.loadFromPath = exports.SSHConfig = void 0; const utils_fs_1 = require("@ionic/utils-fs"); const os = require("os"); const path = require("path"); const SSHConfig = require("ssh-config"); exports.SSHConfig = SSHConfig; async function loadFromPath(p) { const s = await utils_fs_1.fileToString(p); return SSHConfig.parse(s); } exports.loadFromPath = loadFromPath; function isDirective(entry) { return entry && entry.type === SSHConfig.DIRECTIVE; } exports.isDirective = isDirective; function isHostDirective(entry) { return isDirective(entry) && entry.param === 'Host'; } exports.isHostDirective = isHostDirective; function getConfigPath() { return path.resolve(os.homedir(), '.ssh', 'config'); } exports.getConfigPath = getConfigPath; function findHostSection(conf, host) { return conf.find({ Host: host }); } exports.findHostSection = findHostSection; function ensureHostAndKeyPath(conf, conn, keyPath) { const section = ensureHostSection(conf, conn.host); const index = conf.indexOf(section); ensureSectionLine(section, 'IdentityFile', keyPath); if (typeof conn.port === 'number' && conn.port !== 22) { ensureSectionLine(section, 'Port', String(conn.port)); } // massage the section for proper whitespace if (index === 0) { section.before = ''; } else { const previousSection = conf[index - 1]; if (isHostDirective(previousSection)) { const previousSectionLastEntry = previousSection.config[previousSection.config.length - 1]; if (previousSectionLastEntry) { previousSectionLastEntry.after = '\n'; } } else { previousSection.after = '\n'; } section.before = '\n'; } section.after = '\n'; if (!section.config) { section.config = []; } for (const entry of section.config) { entry.before = ' '; entry.after = '\n'; } if (index !== conf.length - 1) { const lastEntry = section.config[section.config.length - 1]; lastEntry.after = '\n\n'; } } exports.ensureHostAndKeyPath = ensureHostAndKeyPath; function ensureHostSection(conf, host) { let section = findHostSection(conf, host); if (!section) { conf.push(SSHConfig.parse(`\nHost ${host}\n`)[0]); section = findHostSection(conf, host); } if (!section) { throw new Error(`Could not find/insert section for host: ${host}`); } return section; } function ensureSectionLine(section, key, value) { const found = section.config.some(line => { if (isDirective(line)) { if (line.param === key) { line.value = value; return true; } } return false; }); if (!found) { section.config = section.config.concat(SSHConfig.parse(`${key} ${value}\n`)); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
doctor | Folder | 0755 |
|
|
integrations | Folder | 0755 |
|
|
oauth | Folder | 0755 |
|
|
project | Folder | 0755 |
|
|
utils | Folder | 0755 |
|
|
app.d.ts | File | 1.15 KB | 0644 |
|
app.js | File | 2.5 KB | 0644 |
|
build.d.ts | File | 3.43 KB | 0644 |
|
build.js | File | 8.51 KB | 0644 |
|
color.d.ts | File | 484 B | 0644 |
|
color.js | File | 768 B | 0644 |
|
command.d.ts | File | 924 B | 0644 |
|
command.js | File | 5.47 KB | 0644 |
|
config.d.ts | File | 843 B | 0644 |
|
config.js | File | 3.83 KB | 0644 |
|
cordova-res.d.ts | File | 1.07 KB | 0644 |
|
cordova-res.js | File | 2.62 KB | 0644 |
|
diff.d.ts | File | 100 B | 0644 |
|
diff.js | File | 709 B | 0644 |
|
environment.d.ts | File | 1004 B | 0644 |
|
environment.js | File | 516 B | 0644 |
|
errors.d.ts | File | 891 B | 0644 |
|
errors.js | File | 1.77 KB | 0644 |
|
events.d.ts | File | 240 B | 0644 |
|
events.js | File | 498 B | 0644 |
|
executor.d.ts | File | 1 KB | 0644 |
|
executor.js | File | 3.7 KB | 0644 |
|
generate.d.ts | File | 923 B | 0644 |
|
generate.js | File | 351 B | 0644 |
|
git.d.ts | File | 747 B | 0644 |
|
git.js | File | 1.66 KB | 0644 |
|
help.d.ts | File | 2.4 KB | 0644 |
|
help.js | File | 3.66 KB | 0644 |
|
helper.d.ts | File | 252 B | 0644 |
|
helper.js | File | 654 B | 0644 |
|
hooks.d.ts | File | 841 B | 0644 |
|
hooks.js | File | 4.72 KB | 0644 |
|
http.d.ts | File | 2.62 KB | 0644 |
|
http.js | File | 7.56 KB | 0644 |
|
index.d.ts | File | 226 B | 0644 |
|
index.js | File | 6.09 KB | 0644 |
|
ionitron.d.ts | File | 148 B | 0644 |
|
ionitron.js | File | 4.72 KB | 0644 |
|
namespace.d.ts | File | 854 B | 0644 |
|
namespace.js | File | 686 B | 0644 |
|
native-run.d.ts | File | 1.5 KB | 0644 |
|
native-run.js | File | 4.98 KB | 0644 |
|
open.d.ts | File | 164 B | 0644 |
|
open.js | File | 507 B | 0644 |
|
prompts.d.ts | File | 402 B | 0644 |
|
prompts.js | File | 716 B | 0644 |
|
security.d.ts | File | 511 B | 0644 |
|
security.js | File | 785 B | 0644 |
|
serve.d.ts | File | 5.79 KB | 0644 |
|
serve.js | File | 22.4 KB | 0644 |
|
session.d.ts | File | 921 B | 0644 |
|
session.js | File | 7.82 KB | 0644 |
|
shell.d.ts | File | 1.95 KB | 0644 |
|
shell.js | File | 8.41 KB | 0644 |
|
snapshot.d.ts | File | 765 B | 0644 |
|
snapshot.js | File | 1.13 KB | 0644 |
|
ssh-config.d.ts | File | 646 B | 0644 |
|
ssh-config.js | File | 3.04 KB | 0644 |
|
ssh.d.ts | File | 1.67 KB | 0644 |
|
ssh.js | File | 3.53 KB | 0644 |
|
start.d.ts | File | 1.34 KB | 0644 |
|
start.js | File | 12.1 KB | 0644 |
|
telemetry.d.ts | File | 972 B | 0644 |
|
telemetry.js | File | 3.59 KB | 0644 |
|
updates.d.ts | File | 1.01 KB | 0644 |
|
updates.js | File | 3.82 KB | 0644 |
|
user.d.ts | File | 865 B | 0644 |
|
user.js | File | 2.37 KB | 0644 |
|