From 7e021a48c2351c2b119adbe36390c40c92491aac Mon Sep 17 00:00:00 2001 From: Li Chuangbo Date: Wed, 13 May 2015 13:18:29 +1200 Subject: [PATCH] added support multiple-level subdomain --- package.json | 1 - server.js | 30 +++++++++++------------------- 2 files changed, 11 insertions(+), 20 deletions(-) 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); });