HttpHandler reading from config. Default client subdir changed to /kiwi. #96
authorDarren <darren@darrenwhitlen.com>
Mon, 22 Oct 2012 13:59:15 +0000 (14:59 +0100)
committerDarren <darren@darrenwhitlen.com>
Mon, 22 Oct 2012 13:59:15 +0000 (14:59 +0100)
server/config.js
server/httphandler.js

index 7a8ec27df7b35bc56f04f22ae07861683e9b9568..534e5b169c36c8df5206e9ce08fdbf1b1b3021bf 100644 (file)
@@ -70,6 +70,9 @@ conf.transports = [
     "jsonp-polling"
 ];
 
+// Base HTTP path to the KIWI IRC client (eg. /kiwi)
+conf.http_base_path = "/kiwi";
+
 
 // Default quit message
 conf.quit_message = "http://www.kiwiirc.com/ - A hand-crafted IRC client";
index 950f1e55e7059427dbb1d7f8fe9362d222fc0ad6..7c982c98e0a8cbc3fed274937f8ed26ae445740b 100644 (file)
@@ -1,5 +1,6 @@
 var url         = require('url'),
-    node_static = require ('node-static');
+    node_static = require ('node-static'),
+    config      = require('./configuration.js');
 
 
 
@@ -13,16 +14,23 @@ module.exports.HttpHandler = HttpHandler;
 
 
 HttpHandler.prototype.serve = function (request, response) {
-    // The incoming requests root directory (ie. /kiwiclient/)
-    // TODO: check the config for this setting
-    var root_path = '/client',
-        root_path_regex = root_path.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
+    // The incoming requests base path (ie. /kiwiclient)
+    var base_path = config.get().http_base_path || '/kiwi',
+        base_path_regex;
+
+    // Trim of any trailing slashes
+    if (base_path.substr(base_path.length - 1) === '/') {
+        base_path = base_path.substr(0, base_path.length - 1);
+    }
+    
+    // Build the regex to match the base_path
+    base_path_regex = base_path.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
 
     // Any asset request to head into the asset dir
-    request.url = request.url.replace(root_path + '/assets/', '/assets/');
+    request.url = request.url.replace(base_path + '/assets/', '/assets/');
 
     // Any requests for /client to load the index file
-    if (request.url.match(new RegExp('^' + root_path_regex, 'i'))) {
+    if (request.url.match(new RegExp('^' + base_path_regex + '([/$]|$)', 'i'))) {
         request.url = '/';
     }