diff options
Diffstat (limited to 'server/index.js')
| -rw-r--r-- | server/index.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/server/index.js b/server/index.js new file mode 100644 index 0000000..601dbba --- /dev/null +++ b/server/index.js @@ -0,0 +1,99 @@ +/* jshint node: true */ +var ejs = require('ejs'); +ejs.open = '[['; +ejs.close = ']]'; + +var config = require('../config.json'), + http = require('http'), + express = require('express'), + MongoStore = require('connect-mongo')(express), + TwitterStrategy = require('passport-twitter').Strategy, + passport = require('passport'), + passportSocketIo = require("passport.socketio"), + path = require('path'), + mongoose = require('mongoose'); + +var io = websocket.listen(config.socketPort) + +var app = express(); +var DATABASE_URI = process.env.MONGOLAB_URI || ('mongodb://' + config.hostName + '/vvalls') + +mongoose.connect(DATABASE_URI); +var SessionStore = new MongoStore({ mongoose_connection: mongoose.connection }) + +// Configure things +app.set('port', config.port); +app.set('views', path.join(__dirname, '../views')); +app.set('view engine', 'ejs'); +app.use(express.static(path.join(__dirname, '../public'))); +app.use(express.logger('dev')); +app.use(express.json()); +app.use(express.urlencoded()); +app.use(express.cookieParser()); +app.use(express.session({ + key: 'posthang.sid', + secret: '1337machine', + cookie: { domain: '.' + config.hostName, maxAge: 43200000 }, + store: SessionStore +})); +app.use(express.bodyParser()); +app.use(express.query()); +app.use(express.methodOverride()); +app.use(passport.initialize()); +app.use(passport.session()); +// app.use('/api', middleware.ensureAuthenticated, mers({conn: mongoose.connection}).rest()); +app.use(app.router); +app.get('env') === 'development' && app.use(express.errorHandler()); + + +// Configure user authentication +passport.serializeUser(auth.serializeUser); +passport.deserializeUser(auth.deserializeUser); +passport.use(new TwitterStrategy({ + consumerKey: process.env.VVALLS_TWITTER_KEY || '0L5blfBIapqhpons8bCXdIoGM', + consumerSecret: process.env.VVALLS_TWITTER_SECRET || '5EKW7m7inoODqYSKbp7cadBKFp1FghBl4MBDoXNcUjKtodZfuP', + callbackURL: 'http://' + config.host + '/auth/twitter/callback' +}, api.insertUser)); + +// Essential middleware +// app.all('*', middleware.enableCORS); + +// Initialize views +app.get('/login', views.login); +app.get('/logout', auth.logout); +app.get('/auth/twitter', auth.login('twitter')); +app.get('/auth/twitter/callback', auth.loggedIn('twitter')); + + + + +io.set('authorization', passportSocketIo.authorize({ + cookieParser: express.cookieParser, + passport: passport, + key: 'posthang.sid', // the name of the cookie where express/connect stores its session_id + secret: '1337machine', // the session_secret to parse the cookie + store: SessionStore, // we NEED to use a sessionstore. no memorystore please + success: onAuthorizeSuccess, // *optional* callback on success - read more below + fail: onAuthorizeFail, // *optional* callback on fail/error - read more below +})); + +function onAuthorizeSuccess (data, accept) { + // console.error('successful connection to socket.io'); + accept(null, true); +} +function onAuthorizeFail(data, message, error, accept){ + if (error) { + throw new Error(message); + } + // console.log(data) + console.error('failed connection to socket.io:', message); + + // We use this callback to log all of our failed connections. + accept(null, false); +} + + +http.createServer(app).listen(app.get('port'), function () { + console.log('Express server listening on port ' + app.get('port')); +}); + |
