61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import * as plugins from './smartssh.plugins';
|
|
import * as helpers from './smartssh.classes.helpers';
|
|
import { SshKey } from './smartssh.classes.sshkey';
|
|
|
|
export class SshConfig {
|
|
private _sshKeyArray: SshKey[];
|
|
constructor(sshKeyArrayArg: SshKey[]) {
|
|
this._sshKeyArray = sshKeyArrayArg;
|
|
}
|
|
|
|
/**
|
|
* stores a config file
|
|
*/
|
|
store(dirPathArg: string) {
|
|
let done = plugins.smartpromise.defer();
|
|
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,
|
|
sshKey: sshKey
|
|
});
|
|
}
|
|
let configFile: string = '';
|
|
for (let key in configArray) {
|
|
configFile = configFile + configArray[key].configString + '\n';
|
|
}
|
|
plugins.smartfile.memory.toFsSync(configFile, plugins.path.join(dirPathArg, 'config'));
|
|
return done.promise;
|
|
}
|
|
read(dirPathArg) {
|
|
let done = plugins.smartpromise.defer();
|
|
let configArray: configObject[];
|
|
plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg, 'config'));
|
|
|
|
return done.promise;
|
|
}
|
|
}
|
|
|
|
export interface configObject {
|
|
configString: string;
|
|
authorized: boolean;
|
|
sshKey: SshKey;
|
|
}
|