Fixes #19 - httpRoot and httpAuth not taking effect

We were attaching the editor app rather than the main app to the
server, which meant the root and auth routes were ignored.
pull/27/head
Nicholas O'Leary 2013-09-13 23:22:57 +01:00
parent b0e9dbb929
commit 327ab49622
2 changed files with 22 additions and 18 deletions

30
red.js
View File

@ -17,34 +17,32 @@ var http = require('http');
var https = require('https');
var util = require("util");
var express = require("express");
var crypto = require("crypto");
var settings = require("./settings");
var redApp = null;
if (settings.https) {
server = https.createServer(settings.https,function(req,res){redApp(req,res);});
} else {
server = http.createServer(function(req,res){redApp(req,res);});
}
redApp = require('./red/server.js').init(server,settings);
var server;
var app = express();
settings.httpRoot = settings.httpRoot||"";
if (settings.httpRoot.slice(-1) == "/") {
settings.httpRoot = settings.httpRoot.slice(0,-1);
var redApp = null;
if (settings.https) {
server = https.createServer(settings.https,function(req,res){app(req,res);});
} else {
server = http.createServer(function(req,res){app(req,res);});
}
redApp = require('./red/server.js').init(server,settings);
settings.httpRoot = settings.httpRoot||"/";
if (settings.httpRoot[0] != "/") {
settings.httpRoot = "/"+settings.httpRoot;
}
if (settings.httpRoot == "/") {
settings.httpRoot = "";
if (settings.httpRoot.slice(-1) != "/") {
settings.httpRoot = settings.httpRoot + "/";
}
settings.uiPort = settings.uiPort||1880;
if (settings.httpAuth) {
app.use(settings.httpRoot,
express.basicAuth(function(user, pass) {

View File

@ -21,8 +21,14 @@ var app = express();
function setupUI(settings) {
app.get(/^$/,function(req,res) {
res.redirect("/");
// Need to ensure the url ends with a '/' so the static serving works
// with relative paths
app.get("/",function(req,res) {
if (req.originalUrl.slice(-1) != "/") {
res.redirect(req.originalUrl+"/");
} else {
req.next();
}
});
app.use("/",express.static(__dirname + '/../public'));