2016-11-23 11:38:38 +00:00
|
|
|
import 'typings-global'
|
|
|
|
import * as plugins from './smartssh.plugins'
|
|
|
|
import * as helpers from './smartssh.classes.helpers'
|
|
|
|
import {SshKey} from './smartssh.classes.sshkey'
|
2016-06-24 18:58:55 +00:00
|
|
|
|
2016-05-31 17:16:45 +00:00
|
|
|
export class SshConfig {
|
2016-11-23 11:38:38 +00:00
|
|
|
private _sshKeyArray: SshKey[]
|
|
|
|
constructor(sshKeyArrayArg: SshKey[]) {
|
|
|
|
this._sshKeyArray = sshKeyArrayArg
|
2016-06-24 18:58:55 +00:00
|
|
|
}
|
2016-06-25 00:29:34 +00:00
|
|
|
|
|
|
|
/**
|
2016-06-25 00:53:05 +00:00
|
|
|
* stores a config file
|
2016-06-25 00:29:34 +00:00
|
|
|
*/
|
2016-11-23 11:38:38 +00:00
|
|
|
store(dirPathArg: string) {
|
|
|
|
let done = plugins.q.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'
|
2016-06-25 13:30:57 +00:00
|
|
|
}
|
|
|
|
configArray.push({
|
2016-11-23 11:38:38 +00:00
|
|
|
configString: configString,
|
2016-06-25 13:30:57 +00:00
|
|
|
authorized: sshKey.authorized,
|
|
|
|
sshKey: sshKey
|
2016-11-23 11:38:38 +00:00
|
|
|
})
|
2016-06-25 13:30:57 +00:00
|
|
|
}
|
2016-11-23 11:38:38 +00:00
|
|
|
let configFile: string = ''
|
|
|
|
for (let key in configArray) {
|
|
|
|
configFile = configFile + configArray[key].configString + '\n'
|
2016-06-25 13:30:57 +00:00
|
|
|
};
|
2016-11-23 11:38:38 +00:00
|
|
|
plugins.smartfile.memory.toFsSync(configFile,plugins.path.join(dirPathArg,'config'))
|
|
|
|
return done.promise
|
2016-06-25 13:30:57 +00:00
|
|
|
}
|
2016-11-23 11:38:38 +00:00
|
|
|
read(dirPathArg) {
|
|
|
|
let done = plugins.q.defer()
|
|
|
|
let configArray: configObject[]
|
|
|
|
plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg,'config'))
|
2016-06-28 00:10:51 +00:00
|
|
|
|
2016-11-23 11:38:38 +00:00
|
|
|
return done.promise
|
2016-05-31 17:00:52 +00:00
|
|
|
}
|
2016-06-25 00:10:53 +00:00
|
|
|
};
|
|
|
|
|
2016-06-25 00:29:34 +00:00
|
|
|
export interface configObject {
|
2016-11-23 11:38:38 +00:00
|
|
|
configString: string
|
|
|
|
authorized: boolean
|
|
|
|
sshKey: SshKey
|
2016-06-25 00:10:53 +00:00
|
|
|
};
|
|
|
|
|