From fa4802d4889e3e34196dcb93f4bcce02fa72b5f2 Mon Sep 17 00:00:00 2001 From: Siddhartha Sahai Date: Sat, 3 Jan 2015 04:39:09 +0530 Subject: [PATCH] disallow uppercase domains, with test --- server.js | 4 ++-- test/basic.js | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/server.js b/server.js index 05ca5e6..4dfabb4 100644 --- a/server.js +++ b/server.js @@ -197,8 +197,8 @@ module.exports = function(opt) { var req_id = req.param('req_id'); // limit requested hostnames to 20 characters - if (! /^[A-Za-z0-9]{4,20}$/.test(req_id)) { - var err = new Error('Invalid subdomain. Subdomains must be between 4 and 20 alphanumeric characters.'); + if (! /^[a-z0-9]{4,20}$/.test(req_id)) { + var err = new Error('Invalid subdomain. Subdomains must be lowercase and between 4 and 20 alphanumeric characters.'); err.statusCode = 403; return next(err); } diff --git a/test/basic.js b/test/basic.js index 8032a99..fc89044 100644 --- a/test/basic.js +++ b/test/basic.js @@ -126,7 +126,20 @@ test('request domain that is too long', function(done) { localtunnel(test._fake_port, opt, function(err, tunnel) { assert(err); - assert.equal(err.message, 'Invalid subdomain. Subdomains must be between 4 and 20 alphanumeric characters.'); + assert.equal(err.message, 'Invalid subdomain. Subdomains must be lowercase and between 4 and 20 alphanumeric characters.'); + done(); + }); +}); + +test('request uppercase domain', function(done) { + var opt = { + host: 'http://localhost:' + lt_server_port, + subdomain: 'ABCD' + }; + + localtunnel(test._fake_port, opt, function(err, tunnel) { + assert(err); + assert.equal(err.message, 'Invalid subdomain. Subdomains must be lowercase and between 4 and 20 alphanumeric characters.'); done(); }); });