'require fs';
'require ui';
+let localFile = '/etc/banip/banip.allowlist';
let notMsg, errMsg;
return view.extend({
load: function () {
- return Promise.all([
- L.resolveDefault(fs.stat('/etc/banip/banip.allowlist'), {}),
- L.resolveDefault(fs.read_direct('/etc/banip/banip.allowlist'), '')
+ return L.resolveDefault(fs.stat(localFile), "")
+ .then(function (stat) {
+ if (!stat) {
+ return fs.write(localFile, "");
+ }
+ return Promise.all([
+ L.resolveDefault(fs.stat(localFile), ""),
+ L.resolveDefault(fs.read_direct(localFile), "")
+ ]);
+ });
+ },
+ render: function (allowlist) {
+ if (allowlist[0].size >= 100000) {
+ document.body.scrollTop = document.documentElement.scrollTop = 0;
+ ui.addNotification(null, E('p', _('The allowlist is too big, unable to save modifications.')), 'error');
+ }
+ return E('div', { 'class': 'cbi-section cbi-section-descr' }, [
+ E('p', _('This is the local banIP allowlist that will permit certain MAC-, IP-addresses or domain names.<br /> \
+ <em><b>Please note:</b></em> add only exactly one MAC/IPv4/IPv6 address or domain name per line. Ranges in CIDR notation and MAC/IP-bindings are allowed.')),
+ E('textarea', {
+ 'style': 'width: 100% !important; padding: 5px; font-family: monospace; margin-top: .4em',
+ 'spellcheck': 'false',
+ 'wrap': 'off',
+ 'rows': 25
+ }, [allowlist[1] != null ? allowlist[1] : ''])
]);
},
handleSave: function (ev) {
let value = ((document.querySelector('textarea').value || '').trim().toLowerCase().replace(/\r\n/g, '\n')) + '\n';
- return fs.write('/etc/banip/banip.allowlist', value)
+ return fs.write(localFile, value)
.then(function () {
document.querySelector('textarea').value = value;
document.body.scrollTop = document.documentElement.scrollTop = 0;
}
});
},
- render: function (allowlist) {
- if (allowlist[0].size >= 100000) {
- document.body.scrollTop = document.documentElement.scrollTop = 0;
- ui.addNotification(null, E('p', _('The allowlist is too big, unable to save modifications.')), 'error');
- }
- return E('div', { 'class': 'cbi-section cbi-section-descr' }, [
- E('p', _('This is the local banIP allowlist that will permit certain MAC-, IP-addresses or domain names.<br /> \
- <em><b>Please note:</b></em> add only exactly one MAC/IPv4/IPv6 address or domain name per line. Ranges in CIDR notation and MAC/IP-bindings are allowed.')),
- E('textarea', {
- 'style': 'width: 100% !important; padding: 5px; font-family: monospace; margin-top: .4em',
- 'spellcheck': 'false',
- 'wrap': 'off',
- 'rows': 25
- }, [allowlist[1] != null ? allowlist[1] : ''])
- ]);
- },
handleSaveApply: null,
handleReset: null
});
'require fs';
'require ui';
+let localFile = '/etc/banip/banip.blocklist';
let notMsg, errMsg;
return view.extend({
load: function () {
- return Promise.all([
- L.resolveDefault(fs.stat('/etc/banip/banip.blocklist'), {}),
- L.resolveDefault(fs.read_direct('/etc/banip/banip.blocklist'), '')
- ]);
- },
- handleSave: function (ev) {
- let value = ((document.querySelector('textarea').value || '').trim().toLowerCase().replace(/\r\n/g, '\n')) + '\n';
- return fs.write('/etc/banip/banip.blocklist', value)
- .then(function () {
- document.querySelector('textarea').value = value;
- document.body.scrollTop = document.documentElement.scrollTop = 0;
- if (!notMsg) {
- ui.addNotification(null, E('p', _('Blocklist modifications have been saved, reload banIP that changes take effect.')), 'info');
- notMsg = true;
- }
- }).catch(function (e) {
- document.body.scrollTop = document.documentElement.scrollTop = 0;
- if (!errMsg) {
- ui.addNotification(null, E('p', _('Unable to save modifications: %s').format(e.message)), 'error');
- errMsg = true;
+ return L.resolveDefault(fs.stat(localFile), "")
+ .then(function (stat) {
+ if (!stat) {
+ return fs.write(localFile, "");
}
+ return Promise.all([
+ L.resolveDefault(fs.stat(localFile), ""),
+ L.resolveDefault(fs.read_direct(localFile), "")
+ ]);
});
},
render: function (blocklist) {
}, [blocklist[1] != null ? blocklist[1] : ''])
]);
},
+ handleSave: function (ev) {
+ let value = ((document.querySelector('textarea').value || '').trim().toLowerCase().replace(/\r\n/g, '\n')) + '\n';
+ return fs.write(localFile, value)
+ .then(function () {
+ document.querySelector('textarea').value = value;
+ document.body.scrollTop = document.documentElement.scrollTop = 0;
+ if (!notMsg) {
+ ui.addNotification(null, E('p', _('Blocklist modifications have been saved, reload banIP that changes take effect.')), 'info');
+ notMsg = true;
+ }
+ }).catch(function (e) {
+ document.body.scrollTop = document.documentElement.scrollTop = 0;
+ if (!errMsg) {
+ ui.addNotification(null, E('p', _('Unable to save modifications: %s').format(e.message)), 'error');
+ errMsg = true;
+ }
+ });
+ },
handleSaveApply: null,
handleReset: null
});
.cbi-input-text {
width: 90% !important;
+ margin-bottom: -5px;
+ padding-top: 0rem;
}
+
+.cbi-input-select {
+ margin-bottom: -5px;
+ padding-top: 0rem;
+}
\ No newline at end of file
return view.extend({
load: function () {
- return L.resolveDefault(fs.read_direct('/etc/banip/banip.custom.feeds', 'json'), "");
+ return L.resolveDefault(fs.stat('/etc/banip/banip.custom.feeds'), "")
+ .then(function (stat) {
+ if (!stat) {
+ return fs.write('/etc/banip/banip.custom.feeds', "");
+ }
+ return L.resolveDefault(fs.read_direct('/etc/banip/banip.custom.feeds', 'json'), "");
+ })
},
render: function (data) {
o = s.option(form.ListValue, 'rule_6', _('Rulev6'));
o.value('/^(([0-9A-f]{0,4}:){1,7}[0-9A-f]{0,4}:?(\\/(1?[0-2][0-8]|[0-9][0-9]))?)[[:space:]]/{printf \"%s,\\n\",$1}', _('<IPv6><SPACE>'));
o.value('/^(([0-9A-f]{0,4}:){1,7}[0-9A-f]{0,4}:?(\\/(1?[0-2][0-8]|[0-9][0-9]))?)$/{printf \"%s,\\n\",$1}', _('<IPv6><END>'));
+ o.value('BEGIN{FS=\",\"}/^(([0-9A-f]{0,4}:){1,7}[0-9A-f]{0,4}:?(\\/(1?[0-2][0-8]|[0-9][0-9]))?)/{printf \"%s,\\n\",$1}', _('<IPv6>, csv'));
o.optional = true;
o.rmempty = true;
.then(L.bind(ui.changes.apply, ui.changes))
.then(function () {
return fs.exec_direct('/etc/init.d/banip', [ev]);
- });
+ })
} else {
return fs.exec_direct('/etc/init.d/banip', [ev]);
}
"/usr/bin/banip-service.sh": "executable",
"/etc/init.d/banip": "executable",
"/etc/banip/banip.feeds": "file",
- "/etc/banip/banip.custom.feeds": "file",
- "/etc/banip/banip.allowlist": "file",
- "/etc/banip/banip.blocklist": "file",
"/etc/banip/banip.countries": "file"
},
"uci": {
"path": "banip/processing_log"
}
}
-}
+}
\ No newline at end of file
]
}
}
-}
+}
\ No newline at end of file