/* jshint node: true */ var ejs = require('ejs'); ejs.open = '[['; ejs.close = ']]'; var config = require('../config.json'), api = require('./lib/api'), auth = require('./lib/auth'), middleware = require('./lib/middleware'), views = require('./lib/views'); var 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: 'vvalls.sid', secret: 'flibbertigibbet', 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' }, auth.insertUser)); // Essential middleware // app.all('*', middleware.enableCORS); // Initialize views app.get('/', views.home); 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')); });