some more fixes to the session handling to ignore the /api folder, and

refactoring how the public directory is set up in webserver.js.

THIS COMMIT ALTERS NODEBB'S DEPENDENCIES!
Please run npm install after pulling.
This commit is contained in:
Julian Lam
2013-04-28 13:58:19 -04:00
parent 19cd9e05ed
commit f4b14df195
4 changed files with 12 additions and 19 deletions

2
app.js
View File

@@ -22,7 +22,7 @@ global.modules = modules;
config['ROOT_DIRECTORY'] = __dirname; config['ROOT_DIRECTORY'] = __dirname;
modules.templates.init(); modules.templates.init();
modules.webserver.init(); // modules.webserver.init();
modules.websockets.init(); modules.websockets.init();

View File

@@ -15,7 +15,8 @@
"connect": "2.7.6", "connect": "2.7.6",
"emailjs": "0.3.4", "emailjs": "0.3.4",
"cookie": "0.0.6", "cookie": "0.0.6",
"connect-redis": "1.4.5" "connect-redis": "1.4.5",
"path": "0.4.9"
}, },
"devDependencies": {}, "devDependencies": {},
"optionalDependencies": {}, "optionalDependencies": {},

View File

@@ -25,7 +25,6 @@
ajaxify.register_events(['user.login']); ajaxify.register_events(['user.login']);
socket.on('user.login', function(data) { socket.on('user.login', function(data) {
console.log(data);
if (data.status === 0) { if (data.status === 0) {
jQuery('#error').show(50); jQuery('#error').show(50);
jQuery('#error p').html(data.message); jQuery('#error p').html(data.message);

View File

@@ -1,7 +1,8 @@
var express = require('express'), var express = require('express'),
WebServer = express(), WebServer = express(),
server = require('http').createServer(WebServer), server = require('http').createServer(WebServer),
RedisStore = require('connect-redis')(express); RedisStore = require('connect-redis')(express),
path = require('path'),
config = require('../config.js'); config = require('../config.js');
(function(app) { (function(app) {
@@ -26,8 +27,10 @@ var express = require('express'),
// Middlewares // Middlewares
app.use(express.favicon()); // 2 args: string path and object options (i.e. expire time etc) app.use(express.favicon()); // 2 args: string path and object options (i.e. expire time etc)
app.use(express.static(path.join(__dirname, '../', 'public')));
app.use(express.bodyParser()); // Puts POST vars in request.body app.use(express.bodyParser()); // Puts POST vars in request.body
app.use(express.cookieParser()); // If you want to parse cookies (res.cookies) app.use(express.cookieParser()); // If you want to parse cookies (res.cookies)
app.use(express.compress());
app.use(express.session({ app.use(express.session({
store: new RedisStore({ store: new RedisStore({
ttl: 60*60*24*14 ttl: 60*60*24*14
@@ -36,9 +39,8 @@ var express = require('express'),
key: 'express.sid' key: 'express.sid'
})); }));
app.use(function(req, res, next) { app.use(function(req, res, next) {
var hasExtension = /\.[\w]{2,4}$/; // Don't bother with session handling for API requests
if (!hasExtension.test(req.url.indexOf('?') !== -1 ? req.url.substr(0, req.url.indexOf('?')) : req.url)) { if (!/^\/api\//.test(req.url)) {
console.log('REQUESTING: ' + req.url);
if (req.session.uid === undefined) { if (req.session.uid === undefined) {
console.log('info: [Auth] First load, retrieving uid...'); console.log('info: [Auth] First load, retrieving uid...');
global.modules.user.get_uid_by_session(req.sessionID, function(uid) { global.modules.user.get_uid_by_session(req.sessionID, function(uid) {
@@ -60,11 +62,11 @@ var express = require('express'),
// console.log('SESSION: ' + req.sessionID); // console.log('SESSION: ' + req.sessionID);
// console.log('info: [Auth] Ping from uid ' + req.session.uid); // console.log('info: [Auth] Ping from uid ' + req.session.uid);
} }
// (Re-)register the session as active
global.modules.user.active.register(req.sessionID);
} }
// (Re-)register the session as active
global.modules.user.active.register(req.sessionID);
next(); next();
}); });
// Dunno wtf this does // Dunno wtf this does
@@ -78,8 +80,6 @@ var express = require('express'),
}); });
}); });
app.get('/topics/:topic_id', function(req, res) { app.get('/topics/:topic_id', function(req, res) {
global.modules.topics.generate_topic_body(function(topic_body) { global.modules.topics.generate_topic_body(function(topic_body) {
res.send(templates['header'] + topic_body + templates['footer']); res.send(templates['header'] + topic_body + templates['footer']);
@@ -140,13 +140,6 @@ var express = require('express'),
app.get('/403', function(req, res) { app.get('/403', function(req, res) {
res.send(templates['header'] + templates['403'] + templates['footer']); res.send(templates['header'] + templates['403'] + templates['footer']);
}); });
module.exports.init = function() {
// todo move some of this stuff into config.json
app.configure(function() {
app.use(express.static(global.configuration.ROOT_DIRECTORY + '/public'));
});
}
}(WebServer)); }(WebServer));
server.listen(config.port); server.listen(config.port);