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 redis = require("redis"); var RedisStore = require("connect-redis")(session); var redisClient = redis.createClient(); 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 === "localhost" ? process.env.HOST_NAME : "." + process.env.HOST_NAME, maxAge: 43200000000, }, resave: true, saveUninitialized: false, }; if (!process.env.SESSIONS_IN_MEMORY) { sessionSettings.store = new RedisStore({ client: redisClient }); /* 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");