feat(sshclient): add a promise-first SSH client with secure host verification and improve SSH key/config handling
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
import * as plugins from './smartssh.plugins.js';
|
||||
import * as helpers from './smartssh.classes.helpers.js';
|
||||
|
||||
import { SshDir } from './smartssh.classes.sshdir.js';
|
||||
import { SshConfig } from './smartssh.classes.sshconfig.js';
|
||||
import { SshConfig, type ISshConfigOptions } from './smartssh.classes.sshconfig.js';
|
||||
import { SshKey } from './smartssh.classes.sshkey.js';
|
||||
|
||||
/**
|
||||
@@ -13,10 +12,12 @@ export class SshInstance {
|
||||
private _sshConfig: SshConfig; // sshConfig (e.g. represents ~/.ssh/config)
|
||||
private _sshDir: SshDir; // points to sshDir class instance.
|
||||
private _sshSync: boolean; // if set to true, the ssh dir will be kept in sync automatically
|
||||
constructor(optionsArg: { sshDirPath?: string; sshSync?: boolean } = {}) {
|
||||
constructor(optionsArg: { sshDirPath?: string; sshSync?: boolean } & ISshConfigOptions = {}) {
|
||||
optionsArg ? void 0 : (optionsArg = {});
|
||||
this._sshKeyArray = [];
|
||||
this._sshConfig = new SshConfig(this._sshKeyArray);
|
||||
this._sshConfig = new SshConfig(this._sshKeyArray, {
|
||||
strictHostKeyChecking: optionsArg.strictHostKeyChecking,
|
||||
});
|
||||
this._sshDir = new SshDir(this._sshKeyArray, this._sshConfig, optionsArg.sshDirPath);
|
||||
this._sshSync = optionsArg.sshSync ?? false;
|
||||
}
|
||||
@@ -29,10 +30,10 @@ export class SshInstance {
|
||||
}
|
||||
removeKey(sshKeyArg: SshKey) {
|
||||
this._syncAuto('from');
|
||||
let filteredArray = this._sshKeyArray.filter((sshKeyArg2: SshKey) => {
|
||||
return sshKeyArg != sshKeyArg2;
|
||||
});
|
||||
this._sshKeyArray = filteredArray;
|
||||
const sshKeyIndex = this._sshKeyArray.indexOf(sshKeyArg);
|
||||
if (sshKeyIndex >= 0) {
|
||||
this._sshKeyArray.splice(sshKeyIndex, 1);
|
||||
}
|
||||
this._syncAuto('to');
|
||||
}
|
||||
replaceKey(sshKeyOldArg: SshKey, sshKeyNewArg: SshKey) {
|
||||
|
||||
Reference in New Issue
Block a user