var config = require('./config')
, express = require('express')
- , parseCookie = require('connect').utils.parseCookie
+ , http = require('http')
+ , parseCookie = require('express/node_modules/cookie').parse
+ , parseSignedCookies = require('express/node_modules/connect').utils.parseSignedCookies
, redisstore = require('connect-redis')(express)
, redisurl = require('redis-url')
, site = require('./routes/site')
/**
* Setting up Express.
*/
-var sessionstore = new redisstore({client:usersdb})
- , app = express.createServer();
+
+var app = express()
+ , sessionstore = new redisstore({client:usersdb});
// Configuration
app.use(express.static(__dirname + '/public'), {maxAge: 2592000000});
app.use(express.favicon(__dirname + '/public/static/images/favicon.ico', {maxAge: 2592000000}));
app.use(express.bodyParser());
-app.use(express.cookieParser());
-app.use(express.session({secret:process.env.SESSION_SECRET,store:sessionstore}));
-
+app.use(express.cookieParser(process.env.SITE_SECRET));
+app.use(express.session({store:sessionstore}));
app.set('view engine', 'jade');
-app.set('view options', {layout:false});
-app.dynamicHelpers({
- errors: function(req, res) {
- var errors = req.session.errors;
+// Middleware to report errors during form submission
+app.use(function(req, res, next) {
+ if (req.session.errors) {
+ res.locals.errors = req.session.errors;
delete req.session.errors;
- return errors;
- },
- oldvalues: function(req, res) {
- var oldvalues = req.session.oldvalues;
+ }
+ if (req.session.oldvalues) {
+ res.locals.oldvalues = req.session.oldvalues;
delete req.session.oldvalues;
- return oldvalues;
}
+ next();
});
// Routes
app.get('/:room', site.room);
app.get('/user/*', user.profile);
-// App listen
-app.listen(config.port);
+// HTTP server object
+var server = http.createServer(app);
/**
* Setting up Socket.IO.
*/
-var io = require('socket.io').listen(app)
+var io = require('socket.io').listen(server)
, sockets = Object.create(null); // Sockets of all rooms
// Configuration
if(!data.headers.cookie) {
return accept('no cookie transmitted', false);
}
- var cookie = parseCookie(data.headers.cookie);
+ var signedcookie = parseCookie(decodeURIComponent(data.headers.cookie));
+ var cookie = parseSignedCookies(signedcookie, process.env.SITE_SECRET);
sessionstore.get(cookie['connect.sid'], function(err, session) {
if (err) {
return accept(err.message, false);
rooms[config.rooms[i]].start();
}
+// Begin accepting connections
+server.listen(config.port);
console.log(' binb started and listening on port ' + config.port);
"dependencies": {
"async": "0.1.x",
"canvas": "0.13.x",
- "connect": "1.9.x",
"connect-redis": "1.4.x",
- "express": "2.5.x",
+ "express": "3.0.x",
"jade": "0.27.x",
"nodemailer": "0.3.x",
"redis": "0.7.x",
"socket.io": "0.9.x"
},
"engines": {
- "node": "0.6.x"
+ "node": "0.8.x"
},
"name": "binb",
"scripts": {
"start": "app.js"
},
"subdomain": "binb",
- "version": "0.3.2-17"
+ "version": "0.3.3"
}
\ No newline at end of file
db.set(mailkey, userkey);
db.zadd('users', 0, req.body.username);
db.sadd('emails', req.body.email);
- // Delete old fields values (we don't want these to be available in login view)
+ // Delete old fields values
delete req.session.oldvalues;
var msg = 'You successfully created your account. You are now ready to login.';
res.render('login', {followup:req.query.followup,success:msg});
}
});
});
+ delete req.session.oldvalues;
return res.render('recoverpasswd', {followup:req.query.followup,success:true});
}
req.session.errors = {alert: 'The email address you specified could not be found'};
ul.thumbnails
each item in rooms
li.span4
- a.thumbnail.relative(href="/#{item}")
- .room #{item} - <span id="#{item}"></span> Players
+ a.thumbnail.relative(href=item)
+ .room #{item} -
+ span(id=item)
+ | Players
include footer
label.control-label(for="username") Name
.controls
input#username(type="text",name="username",
- value="#{oldvalues.username}")
+ value=oldvalues.username)
span.help-inline #{errors.username}
else
.control-group
label.control-label(for="username") Name
.controls
input#username(type="text",name="username",
- value="#{oldvalues.username}")
+ value=oldvalues.username)
if (typeof(errors.password) !== 'undefined')
.control-group.error
label.control-label(for="password") Password
label.control-label(for="email") Email
.controls
input#oldpassword(type="text",name="email",
- value="#{oldvalues.email}")
+ value=oldvalues.email)
span.help-inline #{errors.email}
else
.control-group
label.control-label(for="email") Email
.controls
input#username(type="text",name="email",
- value="#{oldvalues.email}")
+ value=oldvalues.email)
if (typeof(errors.captcha) !== 'undefined')
.control-group.error
label.control-label(for="captcha-input")
| Are you human?
.controls
- img#captcha(src="#{captchaurl}")
+ img#captcha(src=captchaurl)
input#captcha-input(type="text",name="captcha")
span.help-inline #{errors.captcha}
else
label.control-label(for="captcha-input")
| Are you human?
.controls
- img#captcha(src="#{captchaurl}")
+ img#captcha(src=captchaurl)
input#captcha-input(type="text",name="captcha",
placeholder="type what you see...")
else
.control-group
label.control-label(for="captcha-input") Are you human?
.controls
- img#captcha(src="#{captchaurl}")
+ img#captcha(src=captchaurl)
input#captcha-input(type="text",name="captcha",
placeholder="type what you see...")
button.submit-button.btn.btn-primary(type="submit")
each item in rooms
if item != roomname
li
- a(href="/#{item}") #{item}
+ a(href=item) #{item}
if (typeof(loggedin) !== "undefined")
li.dropdown
a.dropdown-toggle(data-toggle="dropdown",
label.control-label(for="username") Name
.controls
input#username(type="text",name="username",
- value="#{oldvalues.username}")
+ value=oldvalues.username)
span.help-inline #{errors.username}
else
.control-group
label.control-label(for="username") Name
.controls
input#username(type="text",name="username",
- value="#{oldvalues.username}")
+ value=oldvalues.username)
if (typeof(errors.email) !== 'undefined')
.control-group.error
label.control-label(for="email") Email
.controls
input#email(type="text",name="email",
- value="#{oldvalues.email}")
+ value=oldvalues.email)
span.help-inline #{errors.email}
else
.control-group
label.control-label(for="email") Email
.controls
input#email(type="text",name="email",
- value="#{oldvalues.email}")
+ value=oldvalues.email)
if (typeof(errors.password) !== 'undefined')
.control-group.error
label.control-label(for="password") Password
.control-group.error
label.control-label(for="captcha-input") Are you human?
.controls
- img#captcha(src="#{captchaurl}")
+ img#captcha(src=captchaurl)
input#captcha-input(type="text",name="captcha")
span.help-inline #{errors.captcha}
else
.control-group
label.control-label(for="captcha-input") Are you human?
.controls
- img#captcha(src="#{captchaurl}")
+ img#captcha(src=captchaurl)
input#captcha-input(type="text",name="captcha",
placeholder="type what you see...")
else
.control-group
label.control-label(for="captcha-input") Are you human?
.controls
- img#captcha(src="#{captchaurl}")
+ img#captcha(src=captchaurl)
input#captcha-input(type="text",name="captcha",
placeholder="type what you see...")
button.submit-button.btn.btn-success(type="submit")