luci-app-banip: various optimizations
authorDirk Brenken <dev@brenken.org>
Wed, 1 May 2024 12:51:12 +0000 (14:51 +0200)
committerDirk Brenken <dev@brenken.org>
Wed, 1 May 2024 12:51:12 +0000 (14:51 +0200)
* add various translation improvements based on the work of "stokito"
* use the new logreadbox component for the firewall log as well
* removed obsolete standard Save/Save & Apply buttons in the footer,
   use only the improved/customized "Reload" and "Restart" buttons
* improved the error handling in the try/catch blocks

Signed-off-by: Dirk Brenken dev@brenken.org
Signed-off-by: Dirk Brenken <dev@brenken.org>
applications/luci-app-banip/htdocs/luci-static/resources/view/banip/firewall_log.js
applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js
applications/luci-app-banip/htdocs/luci-static/resources/view/banip/setreport.js
applications/luci-app-banip/po/templates/banip.pot

index d12b8b46cecbac82c43248bd3f31b8892485bbbf..db4ce15fe3bc78d912f45327bc7e2a9cc8e3dd05 100644 (file)
@@ -1,41 +1,4 @@
 'use strict';
-'require view';
-'require poll';
-'require fs';
+'require tools.views as views';
 
-return view.extend({
-       load: function () {
-               return Promise.all([
-                       L.resolveDefault(fs.stat('/sbin/logread'), null),
-                       L.resolveDefault(fs.stat('/usr/sbin/logread'), null)
-               ]);
-       },
-       render: function (stat) {
-               var logger = stat[0] ? stat[0].path : stat[1] ? stat[1].path : null;
-               poll.add(function () {
-                       return L.resolveDefault(fs.exec_direct(logger, ['-e', ' banIP/'])).then(function (res) {
-                               var log = document.getElementById("logfile");
-                               if (res) {
-                                       log.value = res.trim();
-                               } else {
-                                       log.value = _('No banIP related firewall logs yet!');
-                               }
-                               log.scrollTop = log.scrollHeight;
-                       });
-               });
-               return E('div', { class: 'cbi-map' },
-                       E('div', { class: 'cbi-section' }, [
-                               E('div', { class: 'cbi-section-descr' }, _('The syslog output, prefiltered for banIP-related firewall log entries only.')),
-                               E('textarea', {
-                                       'id': 'logfile',
-                                       'style': 'width: 100% !important; padding: 5px; font-family: monospace',
-                                       'readonly': 'readonly',
-                                       'wrap': 'off',
-                                       'rows': 25
-                               })
-                       ]));
-       },
-       handleSaveApply: null,
-       handleSave: null,
-       handleReset: null
-});
+return views.LogreadBox(" banIP/", "banIP firewall logs");
index 8455fcb1961b30fafbb2f47cac1a1d39ac623fb3..87a7b70a198a9b300367ae10e0be40b062d05d81 100644 (file)
@@ -12,7 +12,7 @@
        button handling
 */
 function handleAction(ev) {
-       if (ev === 'restart') {
+       if (ev === 'restart' || ev === 'reload') {
                let map = document.querySelector('.cbi-map');
                return dom.callClassMethod(map, 'save')
                .then(L.bind(ui.changes.apply, ui.changes))
@@ -232,7 +232,7 @@ return view.extend({
                                                'click': ui.createHandlerFn(this, function () {
                                                        return handleAction('restart');
                                                })
-                                       }, [_('Apply & Restart')])
+                                       }, [_('Restart')])
                                ])
                        ]);
                }, o, this);
@@ -319,12 +319,14 @@ return view.extend({
                o.rmempty = true;
 
                o = s.taboption('general', form.ListValue, 'ban_fetchretry', _('Download Retries'), _('Number of download attempts in case of an error (not supported by uclient-fetch).'));
-               o.value('1', '1');
-               o.value('3', '3');
-               o.value('5', '5');
-               o.value('10', '10');
-               o.value('20', '20');
+               o.value('1');
+               o.value('3');
+               o.value('5');
+               o.value('10');
+               o.value('20');
                o.default = '5';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -345,15 +347,19 @@ return view.extend({
                o.value('10', _('Less Priority'));
                o.value('19', _('Least Priority'));
                o.default = '0';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
                o = s.taboption('advanced', form.ListValue, 'ban_filelimit', _('Max Open Files'), _('Increase the maximal number of open files, e.g. to handle the amount of temporary split files while loading the Sets.'));
-               o.value('512', '512');
-               o.value('1024', '1024');
-               o.value('2048', '2048');
-               o.value('4096', '4096');
+               o.value('512');
+               o.value('1024');
+               o.value('2048');
+               o.value('4096');
                o.default = '1024';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -404,11 +410,13 @@ return view.extend({
                o.default = '<em style="color:#37c;font-weight:bold;">' + _('Changes on this tab needs a banIP service restart to take effect.') + '</em>';
 
                o = s.taboption('adv_chain', form.ListValue, 'ban_nftpriority', _('Chain Priority'), _('Set the nft chain priority within the banIP table, lower values means higher priority.'));
-               o.value('0', '0');
-               o.value('-100', '-100');
-               o.value('-150', '-150');
-               o.value('-200', '-200');
-               o.default = '100';
+               o.value('0');
+               o.value('-100');
+               o.value('-150');
+               o.value('-200');
+               o.default = '-100';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -429,35 +437,41 @@ return view.extend({
                o.rmempty = true;
 
                o = s.taboption('adv_chain', form.ListValue, 'ban_icmplimit', _('ICMP-Threshold'), _('ICMP-Threshold in packets per second to prevent WAN-DDoS attacks.'));
-               o.value('1', '1');
-               o.value('10', '10');
-               o.value('50', '50');
-               o.value('100', '100');
-               o.value('250', '250');
-               o.value('500', '500');
+               o.value('1');
+               o.value('10');
+               o.value('50');
+               o.value('100');
+               o.value('250');
+               o.value('500');
                o.default = '10';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
                o = s.taboption('adv_chain', form.ListValue, 'ban_synlimit', _('SYN-Threshold'), _('SYN-Threshold in packets per second to prevent WAN-DDoS attacks.'));
-               o.value('1', '1');
-               o.value('10', '10');
-               o.value('50', '50');
-               o.value('100', '100');
-               o.value('250', '250');
-               o.value('500', '500');
+               o.value('1');
+               o.value('10');
+               o.value('50');
+               o.value('100');
+               o.value('250');
+               o.value('500');
                o.default = '10';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
                o = s.taboption('adv_chain', form.ListValue, 'ban_udplimit', _('UDP-Threshold'), _('UDP-Threshold in packets per second to prevent WAN-DDoS attacks.'));
-               o.value('1', '1');
-               o.value('10', '10');
-               o.value('50', '50');
-               o.value('100', '100');
-               o.value('250', '250');
-               o.value('500', '500');
+               o.value('1');
+               o.value('10');
+               o.value('50');
+               o.value('100');
+               o.value('250');
+               o.value('500');
                o.default = '100';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -472,6 +486,8 @@ return view.extend({
                o.value('memory', _('memory'));
                o.value('performance', _('performance'));
                o.default = 'memory';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -479,6 +495,8 @@ return view.extend({
                o.value('drop', _('drop'));
                o.value('reject', _('reject'));
                o.default = 'drop';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -495,14 +513,14 @@ return view.extend({
                                feeds = JSON.parse(result[0]);
                        } catch (e) {
                                feeds = "";
-                               ui.addNotification(null, E('p', _('Unable to parse the custom feed file: %s').format(e.message)), 'error');
+                               ui.addNotification(null, E('p', _('Unable to parse the custom feed file!')), 'error');
                        }
                } else if (result[1]) {
                        try {
                                feeds = JSON.parse(result[1]);
                        } catch (e) {
                                feeds = "";
-                               ui.addNotification(null, E('p', _('Unable to parse the default feed file: %s').format(e.message)), 'error');
+                               ui.addNotification(null, E('p', _('Unable to parse the default feed file!')), 'error');
                        }
                }
                if (feeds) {
@@ -554,6 +572,8 @@ return view.extend({
                o.value('info', _('info'));
                o.value('debug', _('debug'));
                o.default = 'warn';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -574,13 +594,15 @@ return view.extend({
                o.rmempty = true;
 
                o = s.taboption('adv_log', form.ListValue, 'ban_loglimit', _('Log Limit'), _('Parse only the last stated number of log entries for suspicious events. To disable the log monitor at all set it to \'0\'.'));
-               o.value('0', _('Disable'));
-               o.value('50', '50');
-               o.value('100', '100');
-               o.value('250', '250');
-               o.value('500', '500');
-               o.value('1000', '1000');
+               o.value('0');
+               o.value('50');
+               o.value('100');
+               o.value('250');
+               o.value('500');
+               o.value('1000');
                o.default = '100';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -658,7 +680,7 @@ return view.extend({
                        o.rmempty = true;
                }
 
-               let ccode, rir, country, countries = [];
+               let err, ccode, rir, country, countries = [];
                if (result[2]) {
                        countries = result[2].trim().split('\n');
 
@@ -671,7 +693,10 @@ return view.extend({
                                        o.value(ccode, country + ' (' + rir + ')');
                                } catch (e) {
                                        countries[i] = "";
-                                       ui.addNotification(null, E('p', _('Unable to parse the countries file: %s').format(e.message)), 'error');
+                                       if (!err) {
+                                               ui.addNotification(null, E('p', _('Unable to parse the countries file!')), 'error');
+                                       }
+                                       err = e;
                                }
                        }
                        o.optional = true;
@@ -736,6 +761,8 @@ return view.extend({
                o.value('subnet', _('Subnet'));
                o.value('ip', _('IP'));
                o.default = 'subnet';
+               o.placeholder = _('-- default --');
+               o.create = true;
                o.optional = true;
                o.rmempty = true;
 
@@ -763,5 +790,7 @@ return view.extend({
 
                return m.render();
        },
+       handleSaveApply: null,
+       handleSave: null,
        handleReset: null
 });
index f313a5efd6d7cf0eb85de8377dcfa607a0025ace..b938cbc46e3565749ecd8b84e2b154e087bde618 100644 (file)
@@ -70,7 +70,7 @@ function handleAction(report, ev) {
                                content = JSON.parse(report[1]);
                        } catch (e) {
                                content = "";
-                               ui.addNotification(null, E('p', _('Unable to parse the ruleset file: %s').format(e.message)), 'error');
+                               ui.addNotification(null, E('p', _('Unable to parse the ruleset file!')), 'error');
                        }
                } else {
                        content = "";
@@ -149,7 +149,7 @@ return view.extend({
                                content = JSON.parse(report[0]);
                        } catch (e) {
                                content = "";
-                               ui.addNotification(null, E('p', _('Unable to parse the report file: %s').format(e.message)), 'error');
+                               ui.addNotification(null, E('p', _('Unable to parse the report file!')), 'error');
                        }
                } else {
                        content = "";
index 517c610c84ee05a431a16bdad7d9b96dcee7cae5..3d7be193d68cd4dc298043af3049126d3f8afa40 100644 (file)
@@ -5,19 +5,34 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
 msgid "-- Set Selection --"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:682
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:328
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:350
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:361
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:418
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:447
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:460
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:473
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:489
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:498
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:575
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:604
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:764
+msgid "-- default --"
+msgstr ""
+
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:707
 msgid "AFRINIC - serving Africa and the Indian Ocean region"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:683
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:708
 msgid "APNIC - serving the Asia Pacific region"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:684
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:709
 msgid "ARIN - serving Canada and the United States"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:690
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:715
 msgid "ASNs"
 msgstr ""
 
@@ -41,19 +56,19 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:415
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:423
 msgid "Allow Protocol/Ports"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:419
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:427
 msgid "Allow VLAN Forwards"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:699
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:724
 msgid "Allowlist Feed URLs"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:761
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:788
 msgid "Allowlist Only"
 msgstr ""
 
@@ -63,37 +78,33 @@ msgid ""
 "banIP that changes take effect."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:415
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:423
 msgid ""
 "Always allow a protocol (tcp/udp) with certain ports or port ranges in WAN-"
 "Input and WAN-Forward chain."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:419
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:427
 msgid "Always allow certain VLAN forwards."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:425
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:433
 msgid "Always block certain VLAN forwards."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:235
-msgid "Apply & Restart"
-msgstr ""
-
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:733
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:758
 msgid "Auto Allow Uplink"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:729
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:754
 msgid "Auto Allowlist"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:746
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:773
 msgid "Auto Block Subnet"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:742
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:769
 msgid "Auto Blocklist"
 msgstr ""
 
@@ -101,49 +112,49 @@ msgstr ""
 msgid "Auto Detection"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:746
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:773
 msgid ""
 "Automatically add entire subnets to the blocklist Set based on an additional "
 "RDAP request with the suspicious IP."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:742
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:769
 msgid ""
 "Automatically add resolved domains and suspicious IPs to the local banIP "
 "blocklist."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:729
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:754
 msgid ""
 "Automatically add resolved domains and uplink IPs to the local banIP "
 "allowlist."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:383
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:389
 msgid "Backup Directory"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:379
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:385
 msgid "Base Directory"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:379
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:385
 msgid "Base working directory while banIP processing."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:478
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:494
 msgid "Block Type"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:425
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:433
 msgid "Block VLAN Forwards"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:651
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:673
 msgid "Blocklist Feed"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:751
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:778
 msgid "Blocklist Set Expiry"
 msgstr ""
 
@@ -153,13 +164,13 @@ msgid ""
 "banIP that changes take effect."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:485
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:503
 msgid ""
 "By default each feed is active in all supported chains. Limit the default "
 "block policy to a certain chain."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:360
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:366
 msgid "CPU Cores"
 msgstr ""
 
@@ -168,14 +179,14 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:406
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:412
 msgid "Chain Priority"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:339
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:404
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:469
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:545
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:341
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:410
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:483
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:563
 msgid "Changes on this tab needs a banIP service restart to take effect."
 msgstr ""
 
@@ -192,7 +203,7 @@ msgid ""
 "rel=\"noreferrer noopener\" >online documentation</a>"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:665
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:687
 msgid "Countries"
 msgstr ""
 
@@ -200,17 +211,17 @@ msgstr ""
 msgid "Custom Feed Editor"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:391
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:397
 msgid ""
 "Deduplicate IP addresses across all active Sets and tidy up the local "
 "blocklist."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:391
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:397
 msgid "Deduplicate IPs"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:485
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:503
 msgid "Default Block Policy"
 msgstr ""
 
@@ -224,8 +235,7 @@ msgid ""
 "utilities automatically."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:577
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:735
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:760
 msgid "Disable"
 msgstr ""
 
@@ -233,7 +243,7 @@ msgstr ""
 msgid "Domain Lookup"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:331
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:333
 msgid "Don't check SSL server certificates during download."
 msgstr ""
 
@@ -241,7 +251,7 @@ msgstr ""
 msgid "Download Custom Feeds"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:331
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:333
 msgid "Download Insecure"
 msgstr ""
 
@@ -257,25 +267,25 @@ msgstr ""
 msgid "Download Utility"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:478
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:494
 msgid ""
 "Drop packets silently or actively reject the traffic on WAN-Input and WAN-"
 "Forward chains."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:623
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:645
 msgid "E-Mail Notification"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:638
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:660
 msgid "E-Mail Profile"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:626
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:648
 msgid "E-Mail Receiver Address"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:630
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:652
 msgid "E-Mail Sender Address"
 msgstr ""
 
@@ -283,7 +293,7 @@ msgstr ""
 msgid "E-Mail Settings"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:634
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:656
 msgid "E-Mail Topic"
 msgstr ""
 
@@ -309,11 +319,11 @@ msgstr ""
 
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/feeds.js:195
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/feeds.js:233
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:606
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:628
 msgid "Empty field not allowed"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:596
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:618
 msgid "Enable Remote Logging"
 msgstr ""
 
@@ -321,7 +331,7 @@ msgstr ""
 msgid "Enable the banIP service."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:596
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:618
 msgid "Enable the cgi interface to receive remote logging events."
 msgstr ""
 
@@ -341,15 +351,15 @@ msgstr ""
 msgid "Enables IPv6 support."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:751
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:778
 msgid "Expiry time for auto added blocklist Set members."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:697
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:722
 msgid "External Allowlist Feeds"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:648
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:670
 msgid "External Blocklist Feeds"
 msgstr ""
 
@@ -389,23 +399,23 @@ msgstr ""
 msgid "Grant access to LuCI app banIP"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:343
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:345
 msgid "High Priority"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:342
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:344
 msgid "Highest Priority"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:431
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:439
 msgid "ICMP-Threshold"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:431
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:439
 msgid "ICMP-Threshold in packets per second to prevent WAN-DDoS attacks."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:737
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:762
 msgid "IP"
 msgstr ""
 
@@ -433,7 +443,7 @@ msgstr ""
 msgid "IPv6 Support"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:351
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:355
 msgid ""
 "Increase the maximal number of open files, e.g. to handle the amount of "
 "temporary split files while loading the Sets."
@@ -444,7 +454,7 @@ msgid "Information"
 msgstr ""
 
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/feeds.js:198
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:609
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:631
 msgid "Invalid characters"
 msgstr ""
 
@@ -452,7 +462,7 @@ msgstr ""
 msgid "Invalid input values, unable to save modifications."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:685
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:710
 msgid "LACNIC - serving the Latin American and Caribbean region"
 msgstr ""
 
@@ -460,8 +470,8 @@ msgstr ""
 msgid "LAN-Forward (packets)"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:488
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:529
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:506
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:547
 msgid "LAN-Forward Chain"
 msgstr ""
 
@@ -469,35 +479,35 @@ msgstr ""
 msgid "Last Run"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:346
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:348
 msgid "Least Priority"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:345
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:347
 msgid "Less Priority"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:529
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:547
 msgid "Limit certain feeds to the LAN-Forward chain."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:519
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:537
 msgid "Limit certain feeds to the WAN-Forward chain."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:509
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:527
 msgid "Limit certain feeds to the WAN-Input chain."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:360
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:366
 msgid "Limit the cpu cores used by banIP to save RAM."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:733
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:758
 msgid "Limit the uplink autoallow function."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:395
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:401
 msgid ""
 "List Set elements in the status and report, disable this to reduce the CPU "
 "load."
@@ -511,29 +521,29 @@ msgstr ""
 msgid "List the elements of a specific banIP-related Set."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:727
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:752
 msgid "Local Feed Settings"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:572
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:592
 msgid ""
 "Location for parsing the log file, e.g. via syslog-ng, to deactivate the "
 "standard parsing via logread."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:587
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:609
 msgid "Log Count"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:569
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:589
 msgid "Log LAN-Forward"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:576
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:596
 msgid "Log Limit"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:560
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:580
 msgid "Log Prerouting"
 msgstr ""
 
@@ -541,39 +551,39 @@ msgstr ""
 msgid "Log Settings"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:592
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:614
 msgid "Log Terms"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:566
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:586
 msgid "Log WAN-Forward"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:563
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:583
 msgid "Log WAN-Input"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:560
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:580
 msgid "Log suspicious Prerouting packets."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:569
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:589
 msgid "Log suspicious forwarded LAN packets."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:566
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:586
 msgid "Log suspicious forwarded WAN packets."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:563
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:583
 msgid "Log suspicious incoming WAN packets."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:572
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:592
 msgid "Logfile Location"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:351
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:355
 msgid "Max Open Files"
 msgstr ""
 
@@ -581,7 +591,7 @@ msgstr ""
 msgid "NFT Information"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:547
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:565
 msgid "NFT Log Level"
 msgstr ""
 
@@ -589,7 +599,7 @@ msgstr ""
 msgid "Network Devices"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:341
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:343
 msgid "Nice Level"
 msgstr ""
 
@@ -598,11 +608,7 @@ msgstr ""
 msgid "No Search results!"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/firewall_log.js:21
-msgid "No banIP related firewall logs yet!"
-msgstr ""
-
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:344
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:346
 msgid "Normal Priority"
 msgstr ""
 
@@ -612,7 +618,7 @@ msgid ""
 "fetch)."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:587
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:609
 msgid ""
 "Number of failed login attempts of the same IP in the log before blocking."
 msgstr ""
@@ -627,7 +633,7 @@ msgstr ""
 msgid "Overview"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:576
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:596
 msgid ""
 "Parse only the last stated number of log entries for suspicious events. To "
 "disable the log monitor at all set it to '0'."
@@ -641,25 +647,25 @@ msgstr ""
 msgid "Processing Log"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:638
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:660
 msgid "Profile used by 'msmtp' for banIP notification E-Mails."
 msgstr ""
 
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/feeds.js:209
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/feeds.js:222
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:720
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:745
 msgid "Protocol/URL format not supported"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:686
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:711
 msgid "RIPE - serving Europe, Middle East and Central Asia"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:623
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:645
 msgid "Receive E-Mail notifications with every banIP run."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:626
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:648
 msgid ""
 "Receiver address for banIP notification E-Mails, this information is "
 "required to enable E-Mail functionality."
@@ -669,7 +675,7 @@ msgstr ""
 msgid "Refresh"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:681
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:706
 msgid "Regional Internet Registry"
 msgstr ""
 
@@ -681,19 +687,23 @@ msgstr ""
 msgid "Reload Trigger Interface"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:601
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:623
 msgid "Remote Token"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:387
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:393
 msgid "Report Directory"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:395
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:401
 msgid "Report Elements"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:761
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:235
+msgid "Restart"
+msgstr ""
+
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:788
 msgid "Restrict the internet access from/to a small number of secure IPs."
 msgstr ""
 
@@ -718,11 +728,11 @@ msgstr ""
 msgid "Run Information"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:442
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:452
 msgid "SYN-Threshold"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:442
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:452
 msgid "SYN-Threshold in packets per second to prevent WAN-DDoS attacks."
 msgstr ""
 
@@ -754,7 +764,7 @@ msgstr ""
 msgid "Select the logical WAN IPv6 network interface(s)."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:630
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:652
 msgid "Sender address for banIP notification E-Mails."
 msgstr ""
 
@@ -763,7 +773,7 @@ msgstr ""
 msgid "Set"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:471
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:485
 msgid "Set Policy"
 msgstr ""
 
@@ -771,7 +781,7 @@ msgstr ""
 msgid "Set Reporting"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:369
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:375
 msgid "Set Split Size"
 msgstr ""
 
@@ -787,17 +797,17 @@ msgstr ""
 msgid "Set details"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:406
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:412
 msgid ""
 "Set the nft chain priority within the banIP table, lower values means higher "
 "priority."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:471
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:485
 msgid "Set the nft policy for banIP-related Sets."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:547
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:565
 msgid "Set the syslog level for NFT logging."
 msgstr ""
 
@@ -805,7 +815,7 @@ msgstr ""
 msgid "Settings"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:369
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:375
 msgid "Split external Set loading after every n members to save RAM."
 msgstr ""
 
@@ -817,7 +827,7 @@ msgstr ""
 msgid "Stop"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:736
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:761
 msgid "Subnet"
 msgstr ""
 
@@ -833,11 +843,11 @@ msgstr ""
 msgid "Table/Chain Settings"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:387
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:393
 msgid "Target directory for banIP-related report files."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:383
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:389
 msgid "Target directory for compressed feed backups."
 msgstr ""
 
@@ -849,21 +859,16 @@ msgstr ""
 msgid "The blocklist is too big, unable to save modifications."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:592
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:614
 msgid ""
 "The default regular expressions are filtering suspicious ssh, LuCI, nginx "
 "and asterisk traffic."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:341
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:343
 msgid "The selected priority will be used for banIP background processing."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/firewall_log.js:28
-msgid ""
-"The syslog output, prefiltered for banIP-related firewall log entries only."
-msgstr ""
-
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/allowlist.js:32
 msgid ""
 "This is the local banIP allowlist that will permit certain MAC-, IP-"
@@ -890,17 +895,17 @@ msgstr ""
 msgid "Timestamp"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:621
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:643
 msgid ""
 "To enable email notifications, set up the 'msmtp' package and specify a "
 "vaild E-Mail receiver address."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:601
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:623
 msgid "Token to communicate with the cgi interface."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:634
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:656
 msgid "Topic for banIP notification E-Mails."
 msgstr ""
 
@@ -908,11 +913,11 @@ msgstr ""
 msgid "Trigger Delay"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:453
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:465
 msgid "UDP-Threshold"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:453
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:465
 msgid "UDP-Threshold in packets per second to prevent WAN-DDoS attacks."
 msgstr ""
 
@@ -924,24 +929,24 @@ msgstr ""
 msgid "URLv6"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:674
-msgid "Unable to parse the countries file: %s"
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:697
+msgid "Unable to parse the countries file!"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:498
-msgid "Unable to parse the custom feed file: %s"
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:516
+msgid "Unable to parse the custom feed file!"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:505
-msgid "Unable to parse the default feed file: %s"
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:523
+msgid "Unable to parse the default feed file!"
 msgstr ""
 
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/setreport.js:152
-msgid "Unable to parse the report file: %s"
+msgid "Unable to parse the report file!"
 msgstr ""
 
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/setreport.js:73
-msgid "Unable to parse the ruleset file: %s"
+msgid "Unable to parse the ruleset file!"
 msgstr ""
 
 #: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/allowlist.js:22
@@ -971,8 +976,8 @@ msgstr ""
 msgid "WAN-Forward (packets)"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:487
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:519
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:505
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:537
 msgid "WAN-Forward Chain"
 msgstr ""
 
@@ -980,8 +985,8 @@ msgstr ""
 msgid "WAN-Input (packets)"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:486
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:509
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:504
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:527
 msgid "WAN-Input Chain"
 msgstr ""
 
@@ -995,7 +1000,7 @@ msgid ""
 "it!)."
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:549
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:567
 msgid "alert"
 msgstr ""
 
@@ -1031,58 +1036,58 @@ msgstr ""
 msgid "blocked udp-flood packets"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:550
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:568
 msgid "crit"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:555
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:573
 msgid "debug"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:479
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:495
 msgid "drop"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:548
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:566
 msgid "emerg"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:551
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:569
 msgid "err"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:554
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:572
 msgid "info"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:510
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:520
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:530
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:528
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:538
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:548
 msgid "local allowlist"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:511
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:521
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:531
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:529
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:539
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:549
 msgid "local blocklist"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:472
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:486
 msgid "memory"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:553
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:571
 msgid "notice"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:473
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:487
 msgid "performance"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:480
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:496
 msgid "reject"
 msgstr ""
 
-#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:552
+#: applications/luci-app-banip/htdocs/luci-static/resources/view/banip/overview.js:570
 msgid "warn"
 msgstr ""