forked from synclounge/synclounge
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSettingsHelper.js
More file actions
111 lines (107 loc) · 3.51 KB
/
SettingsHelper.js
File metadata and controls
111 lines (107 loc) · 3.51 KB
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
104
105
106
107
108
109
110
111
const args = require('args-parser')(process.argv);
const settings = require('./settings.json');
module.exports = function () {
const fields = [
// Webapp settings
{
local: 'webroot',
env: 'WEB_ROOT',
default: ''
},
{
local: 'webapp_port',
env: 'WEB_PORT',
default: '8088'
},
{
local: 'accessUrl',
env: 'WEB_ACCESSURL',
default: ''
},
{
local: 'autoJoin',
env: 'AUTOJOIN_ENABLED',
default: 'false'
},
{
local: 'autoJoinServer',
env: 'AUTOJOIN_SERVERURL',
default: ''
},
{
local: 'autoJoinRoom',
env: 'AUTOJOIN_ROOM',
default: ''
},
{
local: 'autoJoinPassword',
env: 'AUTOJOIN_PASSWORD',
default: ''
},
{
local: 'authentication',
env: 'AUTHENTICATION',
default: {
mechanism: 'none'
}
},
{
local: 'customServer',
env: 'CUSTOM_SERVER',
default: ''
},
{
local: 'servers',
env: 'SERVERS',
default: ''
},
// Server settings
{
local: 'serverroot',
env: 'SERVER_ROOT',
default: '/slserver'
},
{
local: 'server_port',
env: 'SERVER_PORT',
default: '8089'
}
];
// Load and export our settings in preference of Args -> ENV -> Settings file -> Default
const output = {};
for (let i = 0; i < fields.length; i++) {
const setting = fields[i];
// console.log('Processing setting', setting);
// console.log(`Args: '${args[setting.env]}'; '${args[setting.local]}'`);
// console.log(`ENV: '${process.env[setting.env]}'; '${process.env[setting.local]}'`);
// console.log(`Settings: '${settings[setting.local]}'; '${setting.default}'`);
output[setting.local] = args[setting.env] || args[setting.local] || process.env[setting.env] || process.env[setting.local] || settings[setting.env] || settings[setting.local] || setting.default;
// Backwards compatibilty for PORT ENV setting
if(setting.local == 'webapp_port' && output[setting.local] == 8088) {
let port = args['PORT'] || process.env['PORT'] || settings['PORT'];
if(port && port !== 8088) {
console.log(`Please change 'PORT' to 'WEB_PORT'. Setting WEB_PORT to '${port}'`)
output[setting.local] = port;
}
}
// Remove trailing slashes, if they exist
if ((setting.local == 'webroot' || setting.local == 'accessUrl') && output[setting.local].endsWith("/")) {
console.log(`${setting.local}/${setting.env} should not end in '/'. Removing trailing slash(es) for you.`);
output[setting.local] = output[setting.local].replace(/\/+$/, "");
}
// Add leading slash, if not provided
if (setting.local == 'webroot' && output[setting.local].length > 1 && !output[setting.local].startsWith("/")) {
console.log(`${setting.local}/${setting.env} should always start with '/'. Adding the leading slash for you.`);
// Make sure it starts with one leading slash
output[setting.local] = `/${output[setting.local]}`;
}
// Make sure 'webroot' and 'serverroot' aren't set to '/'. Revert to default if they do.
if ((setting.local == 'webroot' || setting.local == 'serverroot') && output[setting.local] == '/') {
console.log(`${setting.local}/${setting.env} cannot be set to '/'. Reverting to default: '${setting.default}'`);
output[setting.local] = setting.default;
}
process.env[setting.env] = output[setting.local];
}
//console.log('Our settings are', output)
return output;
};