/
config.js
102 lines (98 loc) · 4.09 KB
/
config.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
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
var _ = require('lodash');
var setIfDefined = function(object, path, source) {
if (!_.isUndefined(source)) {
_.set(object, path, source);
}
};
var coerceEnvBoolean = function(envBoolean) {
if (envBoolean === 'true') {
return true;
}
else if (envBoolean === 'false') {
return false;
}
else {
return undefined;
}
};
var config = {
host: process.env.HOST,
port: process.env.PORT,
publicUrl: process.env.PUBLIC_URL,
privateKey: process.env.PRIVATE_KEY,
inviteOnly: process.env.INVITE_ONLY === 'true' || false,
postMaxLength: Number(process.env.POST_MAX_LENGTH) || 10000,
saasMode: process.env.SAAS_MODE === 'true' || false,
newbieEnabled: process.env.NEWBIE_ENABLED === 'true' || false,
recaptchaSiteKey: process.env.RECAPTCHA_SITE_KEY,
recaptchaSecretKey: process.env.RECAPTCHA_SECRET_KEY,
gaKey: process.env.GA_KEY || 'UA-XXXXX-Y',
googleAPIKey: process.env.GOOGLE_API_KEY,
googleClientId: process.env.GOOGLE_CLIENT_ID,
googleAppDomain: process.env.GOOGLE_APP_DOMAIN,
disable_websocket_server: process.env.DISABLE_WEBSOCKET_SERVER === 'true' || false,
websocket_host: process.env.WEBSOCKET_HOST,
websocket_client_host: process.env.WEBSOCKET_CLIENT_HOST,
websocket_port: process.env.WEBSOCKET_PORT,
websocketAPIKey: process.env.WEBSOCKET_API_KEY,
websocketSecure: process.env.WEBSOCKET_SECURE === 'true',
rateLimitingEnv: {
get: {
interval: process.env.RATE_LIMITING_GET_INTERVAL || undefined,
maxInInterval: process.env.RATE_LIMITING_GET_MAX_IN_INTERVAL || undefined,
minDifference: process.env.RATE_LIMITING_GET_MIN_DIFFERENCE || undefined
},
post: {
interval: process.env.RATE_LIMITING_POST_INTERVAL || undefined,
maxInInterval: process.env.RATE_LIMITING_POST_MAX_IN_INTERVAL || undefined,
minDifference: process.env.RATE_LIMITING_POST_MIN_DIFFERENCE || undefined
},
put: {
interval: process.env.RATE_LIMITING_PUT_INTERVAL || undefined,
maxInInterval: process.env.RATE_LIMITING_PUT_MAX_IN_INTERVAL || undefined,
minDifference: process.env.RATE_LIMITING_PUT_MIN_DIFFERENCE || undefined
},
delete: {
interval: process.env.RATE_LIMITING_DELETE_INTERVAL || undefined,
maxInInterval: process.env.RATE_LIMITING_DELETE_MAX_IN_INTERVAL || undefined,
minDifference: process.env.RATE_LIMITING_DELETE_MIN_DIFFERENCE || undefined
}
},
imagesEnv: {
storage: process.env.IMAGES_STORAGE,
maxSize: process.env.IMAGES_MAX_SIZE,
expiration: process.env.IMAGES_EXPIRATION,
interval: process.env.IMAGES_INTERVAL,
s3: {
root: process.env.IMAGES_S3_ROOT,
dir: process.env.IMAGES_S3_DIR,
bucket: process.env.IMAGES_S3_BUCKET,
region: process.env.IMAGES_S3_REGION,
accessKey: process.env.IMAGES_S3_ACCESS_KEY,
secretKey: process.env.IMAGES_S3_SECRET_KEY
}
},
redis: {
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
options: {
auth_pass: process.env.REDIS_AUTH_PASS || null
}
},
portal: {
enabled: process.env.PORTAL_ENABLED === 'true' || false,
boardId: process.env.PORTAL_BOARD_ID || ''
}
};
setIfDefined(config, 'emailerEnv.sender', process.env.EMAILER_SENDER);
setIfDefined(config, 'emailerEnv.transporter', process.env.EMAILER_TRANSPORTER);
setIfDefined(config, 'emailerEnv.options.ignoreTLS', process.env.EMAILER_OPTIONS_IGNORE_TLS);
setIfDefined(config, 'emailerEnv.options.host', process.env.EMAILER_OPTIONS_HOST);
setIfDefined(config, 'emailerEnv.options.port', process.env.EMAILER_OPTIONS_PORT);
setIfDefined(config, 'emailerEnv.options.auth.user', process.env.EMAILER_OPTIONS_AUTH_USER);
setIfDefined(config, 'emailerEnv.options.auth.pass', process.env.EMAILER_OPTIONS_AUTH_PASS);
setIfDefined(config, 'emailerEnv.options.secure', coerceEnvBoolean(process.env.EMAILER_OPTIONS_SECURE));
setIfDefined(config, 'emailerEnv.options.region', process.env.EMAILER_OPTIONS_REGION);
setIfDefined(config, 'emailerEnv.options.accessKeyId', process.env.EMAILER_OPTIONS_ACCESS_KEY_ID);
setIfDefined(config, 'emailerEnv.options.secretAccessKey', process.env.EMAILER_OPTIONS_SECRET_ACCESS_KEY);
module.exports = config;