2016-04-25 02:06:20 +00:00
|
|
|
"use strict";
|
|
|
|
/// <reference path="./typings/main.d.ts" />
|
|
|
|
var plugins = require("./smartssh.plugins");
|
|
|
|
var helpers = require("./smartssh.classes.helpers");
|
|
|
|
var ssh = (function () {
|
|
|
|
function ssh(optionsArg) {
|
|
|
|
if (optionsArg === void 0) { optionsArg = {}; }
|
2016-04-26 02:44:50 +00:00
|
|
|
this.sshDir = new sshDir(optionsArg.sshDir);
|
|
|
|
this.sshKeys = this.sshDir.getKeys();
|
|
|
|
this.sshSync = optionsArg.sshSync;
|
2016-04-25 02:06:20 +00:00
|
|
|
}
|
|
|
|
;
|
2016-04-26 02:44:50 +00:00
|
|
|
ssh.prototype.addKey = function (sshKeyArg) {
|
|
|
|
this.sshKeys.push(sshKeyArg);
|
|
|
|
this.sync();
|
|
|
|
};
|
|
|
|
;
|
|
|
|
ssh.prototype.getKey = function (hostArg) {
|
|
|
|
var filteredArray = this.sshKeys.filter(function (keyArg) {
|
|
|
|
return (keyArg.host == hostArg);
|
|
|
|
});
|
|
|
|
if (filteredArray.length > 0) {
|
|
|
|
return filteredArray[0];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
;
|
2016-04-27 22:09:17 +00:00
|
|
|
ssh.prototype.removeKey = function (sshKeyArg) {
|
|
|
|
var keyIndex = helpers.getKeyIndex(sshKeyArg.host);
|
|
|
|
this.sshKeys.splice(keyIndex, 1);
|
|
|
|
this.sync();
|
|
|
|
};
|
|
|
|
;
|
|
|
|
ssh.prototype.replaceKey = function (sshKeyOldArg, sshKeyNewArg) {
|
|
|
|
var keyIndex = helpers.getKeyIndex(sshKeyOldArg.host);
|
|
|
|
this.sshKeys.splice(keyIndex, 1, sshKeyNewArg);
|
|
|
|
this.sync();
|
|
|
|
};
|
|
|
|
;
|
2016-04-26 02:44:50 +00:00
|
|
|
ssh.prototype.sync = function () {
|
2016-04-27 22:09:17 +00:00
|
|
|
if (this.sshSync) {
|
|
|
|
this.sshDir.sync(this.sshConfig, this.sshKeys); // call sync method of sshDir class;
|
|
|
|
}
|
2016-04-26 02:44:50 +00:00
|
|
|
};
|
|
|
|
;
|
2016-04-25 02:06:20 +00:00
|
|
|
return ssh;
|
|
|
|
}());
|
|
|
|
exports.ssh = ssh;
|
2016-04-26 02:44:50 +00:00
|
|
|
var sshDir = (function () {
|
|
|
|
function sshDir(sshDirPathArg) {
|
|
|
|
this.path = sshDirPathArg;
|
|
|
|
}
|
|
|
|
sshDir.prototype.sync = function (sshConfigArg, sshKeysArg) {
|
|
|
|
};
|
|
|
|
;
|
|
|
|
sshDir.prototype.getKeys = function () {
|
|
|
|
return helpers.sshKeyArrayFromDir(this.path);
|
|
|
|
};
|
|
|
|
return sshDir;
|
|
|
|
}());
|
2016-04-25 02:06:20 +00:00
|
|
|
var sshConfig = (function () {
|
|
|
|
function sshConfig() {
|
|
|
|
}
|
|
|
|
return sshConfig;
|
|
|
|
}());
|
|
|
|
exports.sshConfig = sshConfig;
|
|
|
|
var sshKey = (function () {
|
|
|
|
function sshKey(optionsArg) {
|
2016-04-26 02:44:50 +00:00
|
|
|
if (optionsArg === void 0) { optionsArg = {}; }
|
2016-04-25 02:06:20 +00:00
|
|
|
this.privKey = optionsArg.private;
|
|
|
|
this.pubKey = optionsArg.public;
|
2016-04-26 02:44:50 +00:00
|
|
|
this.hostVar = optionsArg.host;
|
2016-04-25 02:06:20 +00:00
|
|
|
}
|
|
|
|
;
|
2016-04-26 02:44:50 +00:00
|
|
|
Object.defineProperty(sshKey.prototype, "host", {
|
2016-04-25 02:06:20 +00:00
|
|
|
// getters
|
|
|
|
get: function () {
|
2016-04-26 02:44:50 +00:00
|
|
|
return this.hostVar;
|
2016-04-25 02:06:20 +00:00
|
|
|
},
|
|
|
|
// setters
|
2016-04-26 02:44:50 +00:00
|
|
|
set: function (hostArg) {
|
|
|
|
this.hostVar = hostArg;
|
|
|
|
},
|
|
|
|
enumerable: true,
|
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
;
|
|
|
|
Object.defineProperty(sshKey.prototype, "privateKey", {
|
|
|
|
get: function () {
|
|
|
|
return this.privKey;
|
|
|
|
},
|
2016-04-25 02:06:20 +00:00
|
|
|
set: function (privateKeyArg) {
|
|
|
|
this.privKey = privateKeyArg;
|
|
|
|
},
|
|
|
|
enumerable: true,
|
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
;
|
|
|
|
Object.defineProperty(sshKey.prototype, "privateKeyBase64", {
|
|
|
|
get: function () {
|
|
|
|
return plugins.base64.encode(this.privKey);
|
|
|
|
},
|
|
|
|
enumerable: true,
|
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
Object.defineProperty(sshKey.prototype, "publicKey", {
|
|
|
|
get: function () {
|
|
|
|
return this.publicKey;
|
|
|
|
},
|
|
|
|
// setters
|
|
|
|
set: function (publicKeyArg) {
|
|
|
|
this.pubKey = publicKeyArg;
|
|
|
|
},
|
|
|
|
enumerable: true,
|
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
Object.defineProperty(sshKey.prototype, "publicKeyBase64", {
|
|
|
|
get: function () {
|
|
|
|
return plugins.base64.encode(this.pubKey);
|
|
|
|
},
|
|
|
|
enumerable: true,
|
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
Object.defineProperty(sshKey.prototype, "type", {
|
|
|
|
get: function () {
|
|
|
|
if (this.privKey && this.pubKey) {
|
|
|
|
return "duplex";
|
|
|
|
}
|
|
|
|
else if (this.privKey) {
|
|
|
|
return "private";
|
|
|
|
}
|
|
|
|
else if (this.pubKey) {
|
|
|
|
return "public";
|
|
|
|
}
|
|
|
|
},
|
|
|
|
enumerable: true,
|
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
;
|
|
|
|
;
|
|
|
|
;
|
2016-04-26 02:44:50 +00:00
|
|
|
;
|
2016-04-25 02:06:20 +00:00
|
|
|
sshKey.prototype.store = function (filePathArg) {
|
|
|
|
var filePathObj = plugins.path.parse(filePathArg);
|
|
|
|
if (filePathObj.ext = ".priv") {
|
|
|
|
plugins.smartfile.memory.toFsSync(this.privKey, { fileName: filePathObj.name + filePathObj.ext, filePath: filePathObj.dir });
|
|
|
|
}
|
|
|
|
else if (filePathObj.ext = ".pub") {
|
|
|
|
plugins.smartfile.memory.toFsSync(this.pubKey, { fileName: filePathObj.name + filePathObj.ext, filePath: filePathObj.dir });
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
plugins.fs.ensureDirSync(filePathObj.dir);
|
|
|
|
this.store(plugins.path.join(filePathObj.dir, "key.priv")); // call this function recursivly
|
|
|
|
this.store(plugins.path.join(filePathObj.dir, "key.priv")); // call this function recursivly
|
|
|
|
}
|
|
|
|
};
|
|
|
|
return sshKey;
|
|
|
|
}());
|
|
|
|
exports.sshKey = sshKey;
|
|
|
|
|
2016-04-27 22:09:17 +00:00
|
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0c3NoLmNsYXNzZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUE0QztBQUM1QyxJQUFPLE9BQU8sV0FBVyxvQkFBb0IsQ0FBQyxDQUFDO0FBQy9DLElBQU8sT0FBTyxXQUFXLDRCQUE0QixDQUFDLENBQUM7QUFFdkQ7SUFLSSxhQUFZLFVBQStDO1FBQS9DLDBCQUErQyxHQUEvQyxlQUErQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7O0lBQ0Qsb0JBQU0sR0FBTixVQUFPLFNBQWdCO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDOztJQUNELG9CQUFNLEdBQU4sVUFBTyxPQUFjO1FBQ2pCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVMsTUFBTTtZQUNuRCxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFBLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQzs7SUFDRCx1QkFBUyxHQUFULFVBQVUsU0FBZ0I7UUFDdEIsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDOztJQUNELHdCQUFVLEdBQVYsVUFBVyxZQUFtQixFQUFDLFlBQW1CO1FBQzlDLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBQyxDQUFDLEVBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7O0lBQ0Qsa0JBQUksR0FBSjtRQUNJLEVBQUUsQ0FBQSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7UUFDdkYsQ0FBQztJQUNMLENBQUM7O0lBQ0wsVUFBQztBQUFELENBdkNBLEFBdUNDLElBQUE7QUF2Q1ksV0FBRyxNQXVDZixDQUFBO0FBRUQ7SUFFSSxnQkFBWSxhQUFvQjtRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBQ0QscUJBQUksR0FBSixVQUFLLFlBQXNCLEVBQUMsVUFBbUI7SUFFL0MsQ0FBQzs7SUFDRCx3QkFBTyxHQUFQO1FBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNMLGFBQUM7QUFBRCxDQVhBLEFBV0MsSUFBQTtBQUVEO0lBQ0k7SUFFQSxDQUFDO0lBQ0wsZ0JBQUM7QUFBRCxDQUpBLEFBSUMsSUFBQTtBQUpZLGlCQUFTLFlBSXJCLENBQUE7QUFFRDtJQUlJLGdCQUFZLFVBQTJEO1FBQTNELDBCQUEyRCxHQUEzRCxlQUEyRDtRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUNuQyxDQUFDOztJQUdELHNCQUFJLHdCQUFJO1FBRFIsVUFBVTthQUNWO1lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQXVCRCxVQUFVO2FBQ1YsVUFBUyxPQUFjO1lBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzNCLENBQUM7OztPQTFCQTs7SUFDRCxzQkFBSSw4QkFBVTthQUFkO1lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQzthQXdCRCxVQUFlLGFBQW9CO1lBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLENBQUM7OztPQTFCQTs7SUFDRCxzQkFBSSxvQ0FBZ0I7YUFBcEI7WUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLENBQUM7OztPQUFBO0lBQ0Qsc0JBQUksNkJBQVM7YUFBYjtZQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzFCLENBQUM7UUFxQkQsVUFBVTthQUNWLFVBQWMsWUFBbUI7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7UUFDL0IsQ0FBQzs7O09BeEJBO0lBQ0Qsc0JBQUksbUNBQWU7YUFBbkI7WUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLENBQUM7OztPQUFBO0lBQ0Qsc0JBQUksd0JBQUk7YUFBUjtZQUNJLEVBQUUsQ0FBQSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDcEIsQ0FBQztZQUFDLElBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQztnQkFDcEIsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNyQixDQUFDO1lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO2dCQUNuQixNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDOzs7T0FBQTs7Ozs7S
|