From 6e3a07c24b0e6f75dc76a3a94ab1e2357ecf4e1a Mon Sep 17 00:00:00 2001 From: Luigi Pinca Date: Sun, 30 Mar 2014 17:49:37 +0200 Subject: [PATCH] bumped Primus to version 2.1.x --- app.js | 8 ++++---- lib/sparks.js | 36 +++++++++++++++++++----------------- package.json | 6 +++--- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/app.js b/app.js index 693ac6b..e007301 100644 --- a/app.js +++ b/app.js @@ -2,8 +2,7 @@ * Module dependencies. */ -var cookieParser = require('cookie-parser') - , errorHandler = require('./lib/middleware/errorHandler') +var errorHandler = require('./lib/middleware/errorHandler') , express = require('express') , favicon = require('static-favicon') , http = require('http') @@ -11,6 +10,7 @@ var cookieParser = require('cookie-parser') , session = require('express-session') , RedisStore = require('connect-redis')(session) , secret = process.env.SITE_SECRET || 'shhhh, very secret' + , cookieParser = require('cookie-parser')(secret) , site = require('./routes/site') , urlencoded = require('body-parser').urlencoded , user = require('./routes/user') @@ -30,7 +30,7 @@ app.set('view engine', 'jade'); app.use('/static', express.static(pub, {maxAge: 2419200000})); // 4 weeks = 2419200000 ms app.use(favicon(pub + '/img/favicon.ico', {maxAge: 2419200000})); app.use(urlencoded()); -app.use(cookieParser(secret)); +app.use(cookieParser); app.use(session({ cookie: {maxAge: 14400000}, // 4 h = 14400000 ms rolling: true, @@ -63,7 +63,7 @@ app.use(errorHandler); */ require('./lib/rooms')({ - secret: secret, + parser: cookieParser, server: server, sessionstore: sessionstore }); diff --git a/lib/sparks.js b/lib/sparks.js index 951c71a..d0d5dad 100644 --- a/lib/sparks.js +++ b/lib/sparks.js @@ -5,14 +5,11 @@ var config = require('../config') , fs = require('fs') , minify = require('uglify-js').minify - , parseCookie = require('cookie-parser/node_modules/cookie').parse - , parseSignedCookies = require('cookie-parser/lib/parse').signedCookies , Primus = require('primus') , primus , primusemitter = require('primus-emitter') , primusrooms = require('primus-rooms') , rooms = require('./rooms').rooms - , secret , sessionstore , sparks = Object.create(null) // Sparks of all rooms , utils = require('./utils') @@ -24,7 +21,6 @@ var config = require('../config') */ module.exports = function(options) { - secret = options.secret; sessionstore = options.sessionstore; // Create Primus instance @@ -36,10 +32,14 @@ module.exports = function(options) { }, transformer: 'websockets' }); - - // Minify and store the client-side library in the public directory - var library = minify(primus.library(), {fromString: true}); - fs.writeFileSync(__dirname + '/../public/js/primus.min.js', library.code); + + // Remove unneeded middleware + primus.remove('cors'); + primus.remove('primus.js'); + primus.remove('spec'); + + // Add cookieParser middleware + primus.before('cookies', options.parser, 0); primus.on('connection', connection); primus.on('joinroom', joinRoom); @@ -54,6 +54,11 @@ module.exports = function(options) { console.error(err.stack); } }); + + // Minify and store the client-side library in the public directory + var library = minify(primus.library(), {fromString: true}); + fs.writeFileSync(__dirname + '/../public/js/primus.min.js', library.code); + return {primus: primus, sparks: sparks}; }; @@ -62,21 +67,19 @@ module.exports = function(options) { */ var authorize = function(req, authorized) { - var cookie = req.headers.cookie; - if(!cookie) { - var err = new Error('no cookie transmitted'); + var cookies = req.signedCookies; + if (!cookies.hasOwnProperty('connect.sid')) { + var err = new Error('connect.sid cookie not transmitted'); console.error(err.message); return authorized(err); } - cookie = parseCookie(cookie); - cookie = parseSignedCookies(cookie, secret); - sessionstore.get(cookie['connect.sid'], function(err, session) { + sessionstore.get(cookies['connect.sid'], function(err, session) { if (err || !session) { err = err || new Error('session not found'); console.error(err.message); return authorized(err); } - req.headers.session = session; + req.user = session.user; authorized(); }); }; @@ -86,8 +89,7 @@ var authorize = function(req, authorized) { */ var connection = function(spark) { - var user = spark.headers.session.user; - delete spark.headers.session; + var user = spark.request.user; spark.on('getoverview', function(callback) { if (!isFunction(callback)) { return; diff --git a/package.json b/package.json index 5b02cd3..bd40b18 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "analyze": false, "dependencies": { - "async": "0.2.x", + "async": "0.6.x", "body-parser": "1.0.x", "canvas": "1.1.x", "connect-redis": "1.5.x", @@ -10,7 +10,7 @@ "express-session": "1.0.x", "jade": "1.3.x", "nodemailer": "0.6.x", - "primus": "2.0.x", + "primus": "2.1.x", "primus-emitter": "3.0.x", "primus-rooms": "3.0.x", "redis": "0.10.x", @@ -34,5 +34,5 @@ "start": "node app.js" }, "subdomain": "binb", - "version": "0.4.5-2" + "version": "0.4.6" } -- 2.54.0