require('dotenv').load(); var fs = require('fs') var app, express = require('express'); var http = require('http'); var https = require('https'); var bodyParser = require('body-parser') var cookieParser = require('cookie-parser') var csurf = require('csurf') var path = require('path') var multiparty = require('multiparty') var ejs = require('ejs') var favicon = require('serve-favicon') var passport = require('passport') var sessionstore = require('sessionstore') var session = require('express-session') var MongoStore = require('connect-mongo')(session); var upload = require('../util/upload') var app, server var federate = require('../util/federate') var auth = require('../util/auth.js') var middleware = require('../util/middleware.js') var api = require('./api.js') var pages = require('./pages.js') var site = module.exports = {} site.init = function(){ app = express() app.enable('trust proxy'); app.set('port', process.env.PORT || 5000) app.use(favicon(__dirname + '../../../public/favicon.ico')) app.use(bodyParser.json({limit: '50mb'})) app.use(cookieParser()) var sessionSettings = { secret: 'argonauts', proxy: true, key: 'bucky.sid', cookie: { secure: process.env.NODE_ENV === 'production', domain: '.' + process.env.HOST_NAME, maxAge: 43200000000, }, resave: true, saveUninitialized: false, } if (!process.env.SESSIONS_IN_MEMORY) { sessionSettings.store = new MongoStore({ url: process.env.MONGODB_URL || 'mongodb://127.0.0.1:27107/buckySessionDb' // type: 'mongodb', // host: 'localhost', // port: 27017, // dbName: 'buckySessionDb', // collectionName: 'sessions', // timeout: 10000, }) } app.use(session(sessionSettings)) upload.init() federate.route(app) // app.use(csurf({ // cookie: true, // value: (req) => { req.headers['csrf-token'] } // })) app.disable('x-powered-by') auth.init() app.use(express.query()) app.use(passport.initialize()) app.use(passport.session()) server = http.createServer(app).listen(process.env.PORT || 5000, function () { console.log('Bucky listening at http://' + process.env.HOST_NAME + ':%s', server.address().port) }) app.all('*', middleware.ensureLocals) api.route(app) pages.route(app) auth.route(app) app.set('view engine', 'ejs') app.set('views', path.join(__dirname, '../../views')) app.use(express.static(path.join(__dirname, '../../public'))) // rebuild javascript after restarting server if (process.env.NODE_ENV === 'production') { require('../bin/build-scripts') } } site.api = require('./api') site.pages = require('./pages')