summaryrefslogtreecommitdiff
path: root/server/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/index.js')
-rw-r--r--server/index.js99
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'));
+});
+