Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

Commit 0c2ba26

Browse files
committed
Change how settings are validated and defaults are applied.
1 parent 6e5535f commit 0c2ba26

File tree

1 file changed

+43
-44
lines changed

1 file changed

+43
-44
lines changed

web/lib/init.js

Lines changed: 43 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
load('sbbsdefs.js');
12
load('modopts.js');
23

34
var settings = get_mod_options('web');
@@ -22,48 +23,46 @@ settings.web_lib = backslash(settings.web_directory + 'lib/');
2223
settings.web_pages = backslash(fullpath(settings.web_root + '../pages'));
2324
settings.web_sidebar = backslash(fullpath(settings.web_root + '../sidebar'));
2425

25-
// Guest
26-
if (typeof settings.guest === 'undefined') settings.guest = 'Guest';
27-
if (system.matchuser(settings.guest) == 0) exit();
26+
var defaults = {
27+
guest : {
28+
default : 'Guest',
29+
test : function () {
30+
return system.matchuser(settings.guest) ? null : 'Guest account unavailable';
31+
}
32+
},
33+
timeout : { default : 43200 },
34+
user_registration : { default : false },
35+
minimum_password_length : { default : 4 },
36+
email_validation : { default : true },
37+
email_validation_level : { default : 50 },
38+
max_messages : {
39+
default : 0,
40+
test : function () {
41+
return settings.max_messages >= 0 ? null : 'max_messages must be >= 0';
42+
}
43+
},
44+
page_size : {
45+
default : 25,
46+
test : function () {
47+
return settings.page_size >= 1 ? null : 'page_size must be >= 1';
48+
}
49+
},
50+
forum_extended_ascii : { default : true },
51+
active_node_list : { default : true },
52+
hide_empty_stats : { default : true }
53+
};
2854

29-
// Timeout
30-
if (typeof settings.timeout !== 'number') settings.timeout = 43200;
31-
32-
// Registration
33-
if (typeof settings.user_registration !== 'boolean') {
34-
settings.user_registration = false;
35-
} else {
36-
37-
if (typeof settings.minimum_password_length !== 'number') {
38-
settings.minimum_password_length = 4;
39-
}
40-
41-
if (typeof settings.email_validation !== 'boolean') {
42-
settings.email_validation = true;
43-
}
44-
45-
if (typeof settings.email_validation_level !== 'number') {
46-
settings.email_validation_level = 50;
47-
}
48-
49-
}
50-
51-
if (typeof settings.max_messages !== 'number' || settings.max_messages < 0) {
52-
settings.max_messages = 0;
53-
}
54-
55-
if (typeof settings.page_size !== 'number' || settings.page_size < 1) {
56-
settings.page_size = 25;
57-
}
58-
59-
if (typeof settings.forum_extended_ascii !== 'boolean') {
60-
settings.forum_extended_ascii = true;
61-
}
62-
63-
if (typeof settings.active_node_list !== 'boolean') {
64-
settings.active_node_list = true;
65-
}
66-
67-
if (typeof settings.hide_empty_stats !== 'boolean') {
68-
settings.hide_empty_stats = true;
69-
}
55+
Object.keys(defaults).forEach(function (e) {
56+
if (typeof settings[e] == 'undefined') {
57+
settings[e] = defaults[e].default;
58+
} else if (typeof settings[e] != typeof defaults[e].default) {
59+
log(LOG_ERROR, 'Invalid ' + e + ' setting: ' + settings[e]);
60+
exit();
61+
} else if (typeof defaults[e].test == 'function') {
62+
const t = defaults[e].test();
63+
if (t !== null) {
64+
log(LOG_ERROR, t);
65+
exit();
66+
}
67+
}
68+
});

0 commit comments

Comments
 (0)