pull/51/merge
Fabian Jakobs 2015-03-25 12:25:28 +00:00
rodzic c6ef0a95bf
commit 298c5518f1
1 zmienionych plików z 58 dodań i 50 usunięć

108
node_modules/c9/ssh.js wygenerowano vendored
Wyświetl plik

@ -5,9 +5,12 @@
* @license http://github.com/ajaxorg/node-sftp/blob/master/LICENSE MIT License * @license http://github.com/ajaxorg/node-sftp/blob/master/LICENSE MIT License
*/ */
"use strict";
var child_process = require("child_process"); var child_process = require("child_process");
var fs = require("fs"); var fs = require("fs");
var uuid = require("node-uuid"); var tmp = require("tmp");
var debug = require("debug")("ssh");
exports.buildArgs = function(prvkeyFile, host) { exports.buildArgs = function(prvkeyFile, host) {
var args = [ var args = [
@ -35,37 +38,42 @@ exports.buildArgs = function(prvkeyFile, host) {
exports.spawnWithKeyFile = function(prvkeyFile, host, command, args) { exports.spawnWithKeyFile = function(prvkeyFile, host, command, args) {
var sshArgs = exports.buildArgs(prvkeyFile, host); var sshArgs = exports.buildArgs(prvkeyFile, host);
var args = sshArgs.concat(command ? [command] : []).concat(args || []); args = sshArgs.concat(command ? [command] : []).concat(args || []);
console.log("executing: ssh " + args.join(" ")); debug("executing: ssh " + args.join(" "));
return child_process.spawn("ssh", args); return child_process.spawn("ssh", args);
}; };
exports.writeKeyFile = function(prvkey, callback) { exports.writeKeyFile = function(prvkey, callback) {
var filename = Util.DEFAULT_TMPDIR + "/" + uuid(); tmp.tmpName(function(err, filename) {
fs.writeFile(filename, prvkey, function(err) { if (err) return callback(err);
if (err)
return callback(err); fs.writeFile(filename, prvkey, function(err) {
if (err) return callback(err);
fs.chmod(filename, "0600", function(err) {
callback(err, filename); fs.chmod(filename, "0600", function(err) {
callback(err, filename);
});
}); });
}); });
}; };
exports.writeKeyFiles = function(prvkey, pubkey, callback) { exports.writeKeyFiles = function(prvkey, pubkey, callback) {
var filename = Util.DEFAULT_TMPDIR + "/" + uuid(); tmp.tmpName(function(err, filename) {
fs.writeFile(filename, prvkey, function(err) { if (err) return callback(err);
if (err)
return callback(err); fs.writeFile(filename, prvkey, function(err) {
if (err) return callback(err);
fs.chmod(filename, "0600", function(err) {
fs.writeFile(filename + ".pub", pubkey, function(err) { fs.chmod(filename, "0600", function(err) {
if (err) if (err) return callback(err);
return callback(err);
fs.writeFile(filename + ".pub", pubkey, function(err) {
fs.chmod(filename + ".pub", "0600", function(err) { if (err) return callback(err);
callback(err, filename);
fs.chmod(filename + ".pub", "0600", function(err) {
callback(err, filename);
});
}); });
}); });
}); });
@ -74,6 +82,8 @@ exports.writeKeyFiles = function(prvkey, pubkey, callback) {
exports.spawn = function(prvkey, host, command, args, callback) { exports.spawn = function(prvkey, host, command, args, callback) {
exports.writeKeyFile(prvkey, function(err, filename) { exports.writeKeyFile(prvkey, function(err, filename) {
if (err) return callback(err);
var child = exports.spawnWithKeyFile(filename, host, command, args); var child = exports.spawnWithKeyFile(filename, host, command, args);
child.on("exit", function(code) { child.on("exit", function(code) {
@ -106,33 +116,31 @@ exports.exec = function(prvkey, host, command, args, callback) {
}; };
exports.generateKeyPair = function(email, callback) { exports.generateKeyPair = function(email, callback) {
var tmp = process.env.TMP || process.env.TMPDIR || process.env.TMP_DIR || "/tmp"; tmp.tmpName(function(err, filename) {
var filename = tmp + "/" + uuid(); if (err) return callback(err);
var phrase = "";
var phrase = "";
var command = "ssh-keygen -t rsa " +
"-f \"" + filename + "\" " + var command = "ssh-keygen -t rsa " +
"-P \"" + phrase + "\" " + "-f \"" + filename + "\" " +
"-C \"" + email + "\" "; "-P \"" + phrase + "\" " +
"-C \"" + email + "\" ";
child_process.exec(command, function (err, stdout, stderr) {
if (err) child_process.exec(command, function (err, stdout, stderr) {
return callback(err); if (err) return callback(err);
fs.readFile(filename + ".pub", function (err, pubkey) { fs.readFile(filename + ".pub", function (err, pubkey) {
if (err) if (err) return callback(err);
return callback(err);
fs.readFile(filename, function (err, prvkey) {
fs.readFile(filename, function (err, prvkey) { if (err) return callback(err);
if (err)
return callback(err); fs.unlink(filename + ".pub", function() {
fs.unlink(filename, function() {
fs.unlink(filename + ".pub", function() { callback(null, pubkey.toString(), prvkey.toString());
fs.unlink(filename, function() { });
callback(null, pubkey.toString(), prvkey.toString());
}); });
}); });
}); });
}); });
}); });
@ -140,9 +148,9 @@ exports.generateKeyPair = function(email, callback) {
exports.validateSSHKey = function(prvkey, host, callback) { exports.validateSSHKey = function(prvkey, host, callback) {
exports.exec(prvkey, host, "", [], function(err, stdout, stderr) { exports.exec(prvkey, host, "", [], function(err, stdout, stderr) {
//console.log("out >> " + stdout) // console.log("out >> " + stdout);
//console.log("err >> " + stderr) // console.log("err >> " + stderr);
//console.log(err) // console.log(err);
callback(null, !stderr.match(/Permission denied \(.*publickey/)); callback(null, !stderr.match(/Permission denied \(.*publickey/));
}); });
}; };