kopia lustrzana https://github.com/c9/core
93 wiersze
2.3 KiB
JavaScript
93 wiersze
2.3 KiB
JavaScript
"use strict";
|
|
|
|
var childProcess = require("child_process");
|
|
var debug = require("debug")("abuse:abuse");
|
|
var fs = require("fs");
|
|
var assert = require("assert");
|
|
|
|
|
|
var GSSH_SCRIPT_PATH = __dirname + "/../../scripts/gssh";
|
|
var GSCP_SCRIPT_PATH = __dirname + "/../../scripts/gscp";
|
|
var SSH_TIMEOUT = 120 * 1000; // Must be higher than gssh ssh timeout
|
|
|
|
assert(fs.existsSync(GSSH_SCRIPT_PATH), "GSSH_SCRIPT_PATH exists");
|
|
assert(fs.existsSync(GSCP_SCRIPT_PATH), "GSSH_SCRIPT_PATH exists");
|
|
|
|
function gssh(args, options, callback) {
|
|
if (!callback && typeof options == "function") {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
|
|
args.unshift(options.prepareCache ? "--no-cache" : "--cache-only");
|
|
args.unshift("-q");
|
|
|
|
debug("Running gssh with args %s", args);
|
|
options.timeout = options.timeout || SSH_TIMEOUT;
|
|
|
|
childProcess.execFile(
|
|
GSSH_SCRIPT_PATH,
|
|
args, {
|
|
maxBuffer: 100 * 1000 * 1024
|
|
},
|
|
done
|
|
);
|
|
|
|
|
|
var timeout = !options.testing && setTimeout(function() {
|
|
if (!callback)
|
|
return;
|
|
var err = new Error("Timeout during gssh for one or more servers");
|
|
err.code = "TIMEOUT";
|
|
done(err);
|
|
}, options.timeout);
|
|
|
|
function done(err, stdout, stderr) {
|
|
if (!callback)
|
|
return;
|
|
|
|
callback(err, stdout, stderr);
|
|
callback = null;
|
|
clearTimeout(timeout);
|
|
}
|
|
}
|
|
|
|
module.exports.gssh = gssh;
|
|
|
|
function gscp(args, options, callback) {
|
|
if (!callback && typeof options == "function") {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
|
|
options.timeout = options.timeout || SSH_TIMEOUT;
|
|
|
|
childProcess.execFile(
|
|
GSCP_SCRIPT_PATH,
|
|
args, {
|
|
maxBuffer: 100 * 1000 * 1024
|
|
},
|
|
done
|
|
);
|
|
|
|
var timeout = !options.testing && setTimeout(function() {
|
|
if (!callback)
|
|
return;
|
|
console.log('GSCP timeout:', args);
|
|
var err = new Error("Timeout during gscp for one or more servers");
|
|
err.code = "TIMEOUT";
|
|
done(err);
|
|
}, options.timeout);
|
|
|
|
function done(err, stdout, stderr) {
|
|
if (!callback)
|
|
return;
|
|
|
|
callback(err, stdout, stderr);
|
|
callback = null;
|
|
clearTimeout(timeout);
|
|
}
|
|
}
|
|
|
|
module.exports.gscp = gscp;
|
|
|