/
index.js
75 lines (62 loc) · 1.7 KB
/
index.js
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
'use strict';
const pkg = require('../../package.json'),
amphoraPkg = require('amphora/package.json'),
kilnPkg = require('clay-kiln/package.json'),
bodyParser = require('body-parser'),
compression = require('compression'),
session = require('express-session'),
RedisStore = require('connect-redis')(session),
amphoraSearch = require('amphora-search'),
initCore = require('./amphora-core'),
log = require('../universal/log').setup({ file: __filename });
function createSessionStore() {
var sessionPrefix = process.env.REDIS_DB
? `${process.env.REDIS_DB}-clay-session:`
: 'clay-session:',
redisStore = new RedisStore({
url: process.env.REDIS_SESSION_HOST,
prefix: sessionPrefix
});
redisStore.setMaxListeners(0);
return redisStore;
}
function setupApp(app) {
var sessionStore;
// Enable GZIP
if (process.env.ENABLE_GZIP) {
app.use(compression());
}
// set app settings
app.set('trust proxy', 1);
app.set('strict routing', true);
app.set('x-powered-by', false);
app.use(function(req, res, next) {
res.set(
'X-Powered-By',
[
`clay v ${pkg.version}`,
`amphora v ${amphoraPkg.version}`,
`kiln v ${kilnPkg.version}`
].join('; ')
);
next();
});
// nginx limit is also 1mb, so can't go higher without upping nginx
app.use(
bodyParser.json({
limit: '5mb'
})
);
app.use(
bodyParser.urlencoded({
limit: '5mb',
extended: true
})
);
sessionStore = createSessionStore();
return amphoraSearch().then(search => {
log('info', `Using ElasticSearch at ${process.env.ELASTIC_HOST}`);
return initCore(app, search, sessionStore);
});
}
module.exports = setupApp;