smartssh/ts/smartssh.classes.sshconfig.ts

61 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-10-11 13:05:29 +02:00
import * as plugins from './smartssh.plugins.js';
import * as helpers from './smartssh.classes.helpers.js';
import { SshKey } from './smartssh.classes.sshkey.js';
2016-06-24 20:58:55 +02:00
export class SshConfig {
2018-09-17 22:32:31 +02:00
private _sshKeyArray: SshKey[];
constructor(sshKeyArrayArg: SshKey[]) {
this._sshKeyArray = sshKeyArrayArg;
}
2016-06-25 02:29:34 +02:00
2018-09-17 22:32:31 +02:00
/**
* stores a config file
*/
store(dirPathArg: string) {
2019-07-17 11:48:31 +02:00
let done = plugins.smartpromise.defer();
2018-09-17 22:32:31 +02:00
let configArray: configObject[] = [];
let configString;
for (let key in this._sshKeyArray) {
let sshKey = this._sshKeyArray[key];
if (sshKey.host) {
configString =
'Host ' +
sshKey.host +
'\n' +
' HostName ' +
sshKey.host +
'\n' +
' IdentityFile ~/.ssh/' +
sshKey.host +
'\n' +
' StrictHostKeyChecking no' +
'\n';
}
configArray.push({
configString: configString,
authorized: sshKey.authorized,
2022-10-11 13:05:29 +02:00
sshKey: sshKey,
2018-09-17 22:32:31 +02:00
});
2016-06-25 15:30:57 +02:00
}
2018-09-17 22:32:31 +02:00
let configFile: string = '';
for (let key in configArray) {
configFile = configFile + configArray[key].configString + '\n';
2016-05-31 19:00:52 +02:00
}
2018-09-17 22:32:31 +02:00
plugins.smartfile.memory.toFsSync(configFile, plugins.path.join(dirPathArg, 'config'));
return done.promise;
}
read(dirPathArg) {
2019-07-17 11:48:31 +02:00
let done = plugins.smartpromise.defer();
2018-09-17 22:32:31 +02:00
let configArray: configObject[];
plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg, 'config'));
2016-06-25 02:10:53 +02:00
2018-09-17 22:32:31 +02:00
return done.promise;
}
}
2016-06-25 02:10:53 +02:00
2018-09-17 22:32:31 +02:00
export interface configObject {
configString: string;
authorized: boolean;
sshKey: SshKey;
}