diff --git a/package.json b/package.json index d1363f1..1bca71b 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "stackup": "0.0.5", "stylish": "0.5.0", "taters": "1.0.0", - "tldjs": "1.5.1", "ws": "0.6.5" }, "devDependencies": { diff --git a/server.js b/server.js index 80f5ab8..15941b6 100644 --- a/server.js +++ b/server.js @@ -7,7 +7,6 @@ var stylish = require('stylish'); var makeover = require('makeover'); var makeup = require('makeup'); var browserkthx = require('browserkthx'); -var tldjs = require('tldjs'); var on_finished = require('on-finished'); var favicon = require('serve-favicon'); var debug = require('debug')('localtunnel-server'); @@ -32,21 +31,12 @@ function maybe_bounce(req, res, bounce) { return false; } - var subdomain = tldjs.getSubdomain(hostname); - if (!subdomain) { - return false; - } - - var client_id = subdomain; + var client_id = hostname; var client = clients[client_id]; - // no such subdomain - // we use 502 error to the client to signify we can't service the request + // no such client if (!client) { - res.statusCode = 502; - res.end('localtunnel error: no active client for \'' + client_id + '\''); - req.connection.destroy(); - return true; + return false; } // flag if we already finished before we get a socket @@ -180,14 +170,15 @@ module.exports = function(opt) { } var req_id = rand_id(); - debug('making new client with id %s', req_id); - new_client(req_id, opt, function(err, info) { + var client_domain = req_id + '.' + req.headers.host; + debug('making new client with domain %s', client_domain); + new_client(client_domain, opt, function(err, info) { if (err) { res.statusCode = 500; return res.end(err.message); } - var url = schema + '://' + req_id + '.' + req.headers.host; + var url = schema + '://' + client_domain; info.url = url; res.json(info); }); @@ -207,13 +198,14 @@ module.exports = function(opt) { return next(err); } - debug('making new client with id %s', req_id); - new_client(req_id, opt, function(err, info) { + var client_domain = req_id + '.' + req.headers.host; + debug('making new client with domain %s', client_domain); + new_client(client_domain, opt, function(err, info) { if (err) { return next(err); } - var url = schema + '://' + req_id + '.' + req.headers.host; + var url = schema + '://' + client_domain; info.url = url; res.json(info); }); diff --git a/test/basic.js b/test/basic.js index fc89044..3fc19b0 100644 --- a/test/basic.js +++ b/test/basic.js @@ -5,7 +5,7 @@ var localtunnel = require('localtunnel'); var localtunnel_server = require('../server')(); -var lt_server_port +var lt_server_port; test('setup localtunnel server', function(done) { var server = localtunnel_server.listen(function() { @@ -79,7 +79,7 @@ test('query localtunnel server w/ ident', function(done) { host: 'localhost', port: lt_server_port, headers: { - host: hostname + '.tld' + host: hostname + ':' + lt_server_port }, path: '/' } @@ -112,7 +112,7 @@ test('request specific domain', function(done) { localtunnel(test._fake_port, opt, function(err, tunnel) { assert.ifError(err); var url = tunnel.url; - assert.ok(new RegExp('^http:\/\/.*localhost:' + lt_server_port + '$').test(url)); + assert.ok(new RegExp('^http:\/\/.*\.localhost:' + lt_server_port + '$').test(url)); test._fake_url = url; done(err); }); diff --git a/test/queue.js b/test/queue.js index 9313b3b..54decaa 100644 --- a/test/queue.js +++ b/test/queue.js @@ -61,7 +61,7 @@ test('query localtunnel server w/ ident', function(done) { port: lt_server_port, agent: false, headers: { - host: hostname + '.tld' + host: hostname + ':' + lt_server_port }, path: '/' } diff --git a/test/websocket.js b/test/websocket.js index 5ee9522..19779aa 100644 --- a/test/websocket.js +++ b/test/websocket.js @@ -49,7 +49,7 @@ test('test websocket server request', function(done) { var hostname = url.parse(test._fake_url).hostname; var ws = new WebSocket('http://localhost:' + lt_server_port, { headers: { - host: hostname + '.tld' + host: hostname + ':' + lt_server_port } }); ws.on('message', function(msg) {