1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
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,
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");
|