Commit 07b35712 by Adeel Committed by vagrant

Install: Use npmconf to get proxy config

parent 97e15634
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
"mkdirp": "^0.5.0", "mkdirp": "^0.5.0",
"mocha": "^2.0.1", "mocha": "^2.0.1",
"nan": "^1.3.0", "nan": "^1.3.0",
"npmconf": "^2.1.1",
"object-assign": "^2.0.0", "object-assign": "^2.0.0",
"replace-ext": "0.0.1", "replace-ext": "0.0.1",
"request": "^2.48.0", "request": "^2.48.0",
......
...@@ -9,13 +9,14 @@ var fs = require('fs'), ...@@ -9,13 +9,14 @@ var fs = require('fs'),
* *
* @param {String} url * @param {String} url
* @param {String} dest * @param {String} dest
* @param {function} cb * @param {Function} cb
* @api private * @api private
*/ */
function download(url, dest, cb) { function download(url, dest, cb) {
var file = fs.createWriteStream(dest); var file = fs.createWriteStream(dest);
var options = { proxy: getProxy(), rejectUnauthorized: false };
applyProxy({ rejectUnauthorized: false }, function(options) {
var returnError = function(err) { var returnError = function(err) {
fs.unlink(dest); fs.unlink(dest);
cb(typeof err.message === 'string' ? err.message : err); cb(typeof err.message === 'string' ? err.message : err);
...@@ -34,45 +35,38 @@ function download(url, dest, cb) { ...@@ -34,45 +35,38 @@ function download(url, dest, cb) {
req.end(); req.end();
req.on('error', returnError); req.on('error', returnError);
});
} }
/** /**
* Get proxy settings * Get applyProxy settings
* *
* @param {Object} options
* @param {Function} cb
* @api private * @api private
*/ */
function getProxy() { function applyProxy(options, cb) {
var result = ['https-proxy', 'proxy', 'http-proxy'].filter(function(config) { require('npmconf').load({}, function (er, conf) {
var proxy = exec('npm config get ' + config, {silent: true}); var getProxyFromEnv = true;
['https-proxy', 'proxy', 'http-proxy'].forEach(function(setting) {
var proxyUrl = conf.get(setting);
return proxy.code === 0 && validateProxyUrl(proxy.output.trim()); if(proxyUrl && proxyUrl === require('url').parse(proxyUrl)) {
})[0]; options.proxy = proxyUrl;
getProxyFromEnv = false;
if (result) { cb(options);
return result; return;
} }
});
if(getProxyFromEnv) {
var env = process.env; var env = process.env;
return env.HTTPS_PROXY || env.https_proxy || env.HTTP_PROXY || env.http_proxy; options.proxy = env.HTTPS_PROXY || env.https_proxy || env.HTTP_PROXY || env.http_proxy;
}
/**
* Validates Proxy URL
*
* @param {String} url
* @api private
*/
function validateProxyUrl(url) { cb(options);
if (/\n/.test(url)) {
url = url.replace(/\r?\n+/, '\n').split('\n');
url = url[url.length - 3].trim(); // get the second last element.
} }
});
return url !== 'null' &&
url !== 'undefined' &&
url === require('url').parse(url);
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment