c9-core/node_modules/c9/gssh.js

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;