Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/conf/node-tunnel-config.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"tunnelBinary":{"mac":{"32bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/mac/32bit/LT_Mac.zip","binaryName":"LT_Mac.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/mac/32bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"e75d47b0f7947925ddc9e7843ff41024"},"64bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/mac/64bit/LT_Mac.zip","binaryName":"LT_Mac.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/mac/64bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"f0650d1d444b7f39df92c5bcc9a898c6"}},"win":{"32bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/windows/32bit/LT_Windows.zip","binaryName":"LT_Windows.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/windows/32bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"ce24f90aa3dfb4d875a28150705f16d1"},"64bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/windows/64bit/LT_Windows.zip","binaryName":"LT_Windows.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/windows/64bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"09d8e29dc1ba5f809b110a14414b52ce"}},"linux":{"32bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/linux/32bit/LT_Linux.zip","binaryName":"LT_Linux.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/linux/32bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"5de336ce0afc3f2987177b18827bdb32"},"64bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/linux/64bit/LT_Linux.zip","binaryName":"LT_Linux.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/linux/64bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"3c5e5938475ca6a51fafecf18a1c9c12"}},"freebsd":{"32bit":{"newHttpPath":"https://downloads.lambdatest.com/tunnel/freebsd/32bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"34935e55c36d25bf88c3fd98828be205"},"64bit":{"newHttpPath":"https://downloads.lambdatest.com/tunnel/freebsd/64bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"5750dd654c543ba960f468842b641cbd"}}},"AuthUrl":"https://accounts.lambdatest.com/api/user/token/auth","logEnable":true,"latest":"1.1.3","supportedVersions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","2.0.0","3.0.0","4.0.0","5.0.0"]}
{"tunnelBinary":{"mac":{"32bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/mac/32bit/LT_Mac.zip","binaryName":"LT_Mac.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/mac/32bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"34433fb765db9fe993cc51a79a9dc056"},"64bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/mac/64bit/LT_Mac.zip","binaryName":"LT_Mac.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/mac/64bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"6ca43777f406f8d658320f2bf0e57169"}},"win":{"32bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/windows/32bit/LT_Windows.zip","binaryName":"LT_Windows.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/windows/32bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"479633a1aa44065814c792b7ddcbe02a"},"64bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/windows/64bit/LT_Windows.zip","binaryName":"LT_Windows.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/windows/64bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"2019aeadb57594dca15d9b95fdbbcc69"}},"linux":{"32bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/linux/32bit/LT_Linux.zip","binaryName":"LT_Linux.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/linux/32bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"6aebc2fd59120aeb81b8041509713a73"},"64bit":{"httpPath":"https://downloads.lambdatest.com/tunnel/linux/64bit/LT_Linux.zip","binaryName":"LT_Linux.zip","newHttpPath":"https://downloads.lambdatest.com/tunnel/linux/64bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"af49cab379849f774978fcccb9cb4e33"}},"freebsd":{"32bit":{"newHttpPath":"https://downloads.lambdatest.com/tunnel/freebsd/32bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"8a6dddd85d37576de4f5dc1bd0e54b4d"},"64bit":{"newHttpPath":"https://downloads.lambdatest.com/tunnel/freebsd/64bit/ltcomponent.zip","newBinaryName":"ltcomponent.zip","hash":"c75bae7743d743d0c265118005cb5d6a"}}},"AuthUrl":"https://accounts.lambdatest.com/api/user/token/auth","logEnable":true,"latest":"1.1.4","supportedVersions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","2.0.0","3.0.0","4.0.0","5.0.0"]}
29 changes: 20 additions & 9 deletions lib/config.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
var httpTunnelConfigPath =
'https://s3.amazonaws.com/downloads.lambdatest.com/tunnel/node-tunnel-config.json',
httpTunnelLogUrl = 'https://oinwgsy681.execute-api.us-east-1.amazonaws.com/prod/addLog';
var https = require('https');
var urlParse = require('url');
module.exports = function(fnCallback) {
httpTunnelLogUrl = 'https://oinwgsy681.execute-api.us-east-1.amazonaws.com/prod/addLog',
https = require('https'),
urlParse = require('url'),
HttpsProxyAgent = require('https-proxy-agent'),
util = require('./util');
module.exports = function(options, fnCallback) {
var reqOptions = urlParse.parse(httpTunnelConfigPath);
var proxyOpts = util.getProxyOpts_(options);
if (Object.keys(proxyOpts).length) {
reqOptions.agent = new HttpsProxyAgent(proxyOpts);
}
https
.get(httpTunnelConfigPath, resp => {
.get(reqOptions, resp => {
let json = '';
resp.on('data', chunk => {
json += chunk;
Expand All @@ -16,7 +23,7 @@ module.exports = function(fnCallback) {
}
return fnCallback(false, {
jsonResponse: json,
logger: setupLogger_(json)
logger: setupLogger_(options, json)
});
});
})
Expand All @@ -30,7 +37,7 @@ module.exports = function(fnCallback) {
* @param {Object} jsonResponse path of downloaded binary.
* @return {Object|Error} Return log method or Error is any
*/
function setupLogger_(jsonResponse) {
function setupLogger_(options, jsonResponse) {
try {
var logger;
if (jsonResponse.logEnable) {
Expand Down Expand Up @@ -59,7 +66,7 @@ function setupLogger_(jsonResponse) {
}
});
var _httpTunnelLogUrl = urlParse.parse(httpTunnelLogUrl);
var options = {
var reqOptions = {
hostname: _httpTunnelLogUrl.hostname,
port: _httpTunnelLogUrl.port,
path: _httpTunnelLogUrl.path,
Expand All @@ -70,7 +77,11 @@ function setupLogger_(jsonResponse) {
'Content-Length': data.length
}
};
var req = https.request(options, res => {
var proxyOpts = util.getProxyOpts_(options);
if (Object.keys(proxyOpts).length) {
reqOptions.agent = new HttpsProxyAgent(proxyOpts);
}
var req = https.request(reqOptions, res => {
res.on('data', d => {
process.stdout.write(d);
});
Expand Down
25 changes: 19 additions & 6 deletions lib/tunnel.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ var childProcess = require('child_process'),
https = require('https'),
http = require('http'),
urlParse = require('url'),
HttpsProxyAgent = require('https-proxy-agent'),
util = require('./util'),
getPort = require('get-port'),
os = require('os'),
logger,
Expand Down Expand Up @@ -43,7 +45,7 @@ function Tunnel() {
return reject({ message: 'user and key is required' });
}
// Configure logger
Config_(function(error, response) {
Config_(options, function(error, response) {
if (error) {
throw new Error(error);
}
Expand Down Expand Up @@ -389,7 +391,7 @@ function verifyToken_(options, fnCallback) {
});

var _httpAuthUrl = urlParse.parse(httpTunnelConfig.jsonResponse.AuthUrl);
var options = {
var reqOptions = {
hostname: _httpAuthUrl.hostname,
port: _httpAuthUrl.port,
path: _httpAuthUrl.path,
Expand All @@ -402,8 +404,11 @@ function verifyToken_(options, fnCallback) {
version: packageVersion
}
};

var req = https.request(options, resp => {
var proxyOpts = util.getProxyOpts_(options);
if (Object.keys(proxyOpts).length) {
reqOptions.agent = new HttpsProxyAgent(proxyOpts);
}
var req = https.request(reqOptions, resp => {
let json = '';
resp.on('data', chunk => {
json += chunk;
Expand Down Expand Up @@ -756,6 +761,13 @@ function getBinaryPath_(that, options, fnCallback) {
conf.proxyHost = options['proxyHost'] || options['proxyhost'];
conf.proxyPort = options['proxyPort'] || options['proxyport'];
}
if (
(options['proxyUser'] || options['proxyuser']) &&
(options['proxyPass'] || options['proxypass'])
) {
conf.proxyUser = options['proxyUser'] || options['proxyuser'];
conf.proxyPass = options['proxyPass'] || options['proxypass'];
}
that.binary.binaryPath_(conf, fnCallback);
} else {
return fnCallback(that.binaryPath);
Expand All @@ -778,8 +790,9 @@ function retryTunnelName_(self, infoAPIPort, retries, fnCallback) {
if (retries >= 0) {
// local Server path for getting tunnelName
var url = 'http://127.0.0.1:' + infoAPIPort + '/api/v1.0/info';
var reqOptions = urlParse.parse(url);
http
.get(url, response => {
.get(reqOptions, response => {
let json = '';
response.on('data', chunk => {
json += chunk;
Expand Down Expand Up @@ -847,4 +860,4 @@ function clearTimeout_(timeoutId) {
}
}
module.exports = Tunnel;
module.exports.Tunnel = Tunnel;
module.exports.Tunnel = Tunnel;
9 changes: 4 additions & 5 deletions lib/tunnel_binary.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ var localTunnelConfig_ = require('./conf/node-tunnel-config.json'),
https = require('https'),
urlParse = require('url'),
HttpsProxyAgent = require('https-proxy-agent'),
util = require('./util'),
unzip = require('unzipper'),
fs = require('fs'),
path = require('path'),
Expand Down Expand Up @@ -91,11 +92,9 @@ function TunnelBinary(httpTunnelConfig) {
var self = this;
// Set Proxy If User passed this to in arguments.
var options = urlParse.parse(this.httpPath);
if (conf.proxyHost && conf.proxyPort) {
options.agent = new HttpsProxyAgent({
host: conf.proxyHost,
port: conf.proxyPort
});
var proxyOpts = util.getProxyOpts_(conf);
if (Object.keys(proxyOpts).length) {
options.agent = new HttpsProxyAgent(proxyOpts);
}
// Get binary as zip File from https Server and put this to local folder.
// After fully download, unzip and change mode to excutable.
Expand Down
29 changes: 29 additions & 0 deletions lib/util.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
var urlParse = require('url');
module.exports = {
getProxyOpts_
};

/**
* getProxyOpts_ is used to configre request
* @param {Object} options.
* @return {Object|Error} Return proxyOpts
*/
function getProxyOpts_(options) {
var proxyOpts = {};
if (options.proxyHost && options.proxyPort) {
proxyOpts = {
host: options.proxyHost,
port: options.proxyPort
};
} else if (process.env.http_proxy) {
proxyOpts = urlParse.parse(process.env.http_proxy);
}
if ((options.proxyUser && !options.proxyPass) || (!options.proxyUser && options.proxyPass)) {
throw Error('proxyUser and proxyPass must be both or none');
} else if (options.proxyUser && options.proxyPass) {
if (Object.keys(proxyOpts).length) {
proxyOpts.auth = options.proxyUser + ':' + options.proxyPass;
}
}
return proxyOpts
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@lambdatest/node-tunnel",
"version": "1.1.3",
"version": "1.1.4",
"description": "Nodejs bindings for LambdaTest Tunnel",
"main": "index.js",
"repository": {
Expand Down