diff --git a/bin/server b/bin/server index f33fd99..5cdfb73 100755 --- a/bin/server +++ b/bin/server @@ -20,6 +20,10 @@ var argv = optimist default: 10, describe: 'maximum number of tcp sockets each client is allowed to establish at one time (the tunnels)' }) + .options('sub', { + default: false, + describe: 'use this flag to indicate that server runs in a subdomain' + }) .argv; if (argv.help) { @@ -29,7 +33,8 @@ if (argv.help) { var server = require('../server')({ max_tcp_sockets: argv['max-sockets'], - secure: argv.secure + secure: argv.secure, + sub: argv.sub, }); server.listen(argv.port, function() { diff --git a/server.js b/server.js index 528584e..863966f 100644 --- a/server.js +++ b/server.js @@ -36,6 +36,9 @@ var stats = { tunnels: 0 }; +// are we serving from a subdomain? +var sub = false; + function maybe_bounce(req, res, sock, head) { // without a hostname, we won't know who the request is for var hostname = req.headers.host; @@ -44,6 +47,12 @@ function maybe_bounce(req, res, sock, head) { } var subdomain = tldjs.getSubdomain(hostname); + // if we're serving from a subdomain do a proper check + if (sub) { + var subsub = (subdomain || '').split('.'); + subdomain = subsub.length > 1 ? subsub[0] : ''; + } + if (!subdomain) { return false; } @@ -180,6 +189,8 @@ module.exports = function(opt) { opt = opt || {}; var schema = opt.secure ? 'https' : 'http'; + + sub = opt.subĀ || false; var app = express();