luci-app-banip: handle json load errors
authorDirk Brenken <dev@brenken.org>
Mon, 22 Apr 2024 20:28:58 +0000 (22:28 +0200)
committerDirk Brenken <dev@brenken.org>
Mon, 22 Apr 2024 20:28:58 +0000 (22:28 +0200)
* properly handle possible json load errors in try/catch blocks

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

index 5ebf25855d3761e8102c89e033f7a164765599e4..c8c571f7353db848d83e2deca2e7c1b2a83f274e 100644 (file)
@@ -11,7 +11,7 @@
        button handling
 */
 function handleAction(ev) {
-       fs.exec_direct('/etc/init.d/banip', [ev])
+       return fs.exec_direct('/etc/init.d/banip', [ev])
 }
 
 return view.extend({
@@ -472,9 +472,19 @@ return view.extend({
 
                let feed, feeds, descr;
                if (result[0]) {
-                       feeds = JSON.parse(result[0]);
+                       try {
+                               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');
+                       }
                } else if (result[1]) {
-                       feeds = JSON.parse(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');
+                       }
                }
                if (feeds) {
                        o = s.taboption('adv_set', form.MultiValue, 'ban_blockinput', _('WAN-Input Chain'), _('Limit certain feeds to the WAN-Input chain.'));
index a6f8ddc0fefd334ef24266ac388eb9c9a0e8fc38..f313a5efd6d7cf0eb85de8377dcfa607a0025ace 100644 (file)
@@ -66,7 +66,12 @@ function handleAction(report, ev) {
                let content, selectOption;
 
                if (report[1]) {
-                       content = JSON.parse(report[1]);
+                       try {
+                               content = JSON.parse(report[1]);
+                       } catch (e) {
+                               content = "";
+                               ui.addNotification(null, E('p', _('Unable to parse the ruleset file: %s').format(e.message)), 'error');
+                       }
                } else {
                        content = "";
                }
@@ -140,7 +145,12 @@ return view.extend({
                let content, rowSets, tblSets;
 
                if (report[0]) {
-                       content = JSON.parse(report[0]);
+                       try {
+                               content = JSON.parse(report[0]);
+                       } catch (e) {
+                               content = "";
+                               ui.addNotification(null, E('p', _('Unable to parse the report file: %s').format(e.message)), 'error');
+                       }
                } else {
                        content = "";
                }