diff --git a/.travis.yml b/.travis.yml index f94a53e..37be4a9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,3 +2,8 @@ language: node_js sudo: false node_js: - "9.2" +addons: + hosts: + - host + - sub.host + - nested.sub.host \ No newline at end of file diff --git a/server.js b/server.js index 3d93fbd..84a5b11 100644 --- a/server.js +++ b/server.js @@ -12,17 +12,20 @@ const debug = Debug('localtunnel:server'); function GetClientIdFromHostname(hostname,opt) { let subdomain = tldjs.getSubdomain(hostname); + if (subdomain && opt.subHost) { const _subdomain = subdomain.replace(/\./g,''); const subHosts = Array.isArray(opt.subHost) ? opt.subHost : [opt.subHost] const subHost = subHosts.reduce((found, sub) => { - return found + (_subdomain.includes(sub) ? sub : ''); + sub = sub.replace(/\./g,''); + return found + (_subdomain.includes(sub) ? sub : sub.includes(_subdomain) ? sub : ''); },'') subdomain = subHost.length > 0 ? _subdomain.slice(0, -(subHost.length)) : subdomain } + return subdomain; } diff --git a/test/simple.js b/test/simple.js index 27f95c9..05d68bc 100644 --- a/test/simple.js +++ b/test/simple.js @@ -70,14 +70,14 @@ test('should respond to request', function(done) { }); test('set up localtunnel client (sub-host)', function (done) { var opt = { - host: 'http://nested.sub.localhost:' + lt_server_port, + host: 'http://nested.sub.host:' + lt_server_port, subdomain: 'txy-z' }; localtunnel(test._fake_port, opt, function (err, tunnel) { assert.ifError(err); var url = tunnel.url; - assert.ok(new RegExp('^http:\/\/.*nested.sub.localhost:' + lt_server_port + '$').test(url)); + assert.ok(new RegExp('^http:\/\/.*nested.sub.host:' + lt_server_port + '$').test(url)); test._fake_url = url; done(err); }); @@ -86,7 +86,7 @@ test('set up localtunnel client (sub-host)', function (done) { test('should respond to request (sub-host)', function (done) { var hostname = url.parse(test._fake_url).hostname; var opt = { - host: 'nested.sub.localhost', + host: 'nested.sub.host', port: lt_server_port, headers: { host: hostname + '.tld' diff --git a/test/websocket.js b/test/websocket.js index e08ef9c..48b46f7 100644 --- a/test/websocket.js +++ b/test/websocket.js @@ -75,13 +75,13 @@ test('websocket server request', function(done) { }); test('set up localtunnel client (sub host)', function (done) { var opt = { - host: 'http://sub.localhost:' + lt_server_port + host: 'http://sub.host:' + lt_server_port }; localtunnel(test._fake_port, opt, function (err, tunnel) { assert.ifError(err); var url = tunnel.url; - assert.ok(new RegExp('^http:\/\/.*sub.localhost:' + lt_server_port + '$').test(url)); + assert.ok(new RegExp('^http:\/\/.*sub.host:' + lt_server_port + '$').test(url)); test._fake_url = url; done(err); }); @@ -89,7 +89,7 @@ test('set up localtunnel client (sub host)', function (done) { test('websocket server request (sub-host)', function (done) { var hostname = url.parse(test._fake_url).hostname; - var ws = new WebSocket('http://sub.localhost:' + lt_server_port, { + var ws = new WebSocket('http://sub.host:' + lt_server_port, { headers: { host: hostname + '.tld' }