luci-app-simple-adblock: localizable error/warning messages
authorStan Grishin <stangri@melmac.ca>
Tue, 29 Nov 2022 22:42:59 +0000 (22:42 +0000)
committerStan Grishin <stangri@melmac.ca>
Tue, 29 Nov 2022 22:42:59 +0000 (22:42 +0000)
Signed-off-by: Stan Grishin <stangri@melmac.ca>
applications/luci-app-simple-adblock/Makefile
applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js
applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
applications/luci-app-simple-adblock/root/usr/libexec/rpcd/luci.simple-adblock

index d7dc975c4fdbe1239e476907142fe66d793e00a0..e67ed6514dbd436115835c089a2a69492052ecb2 100644 (file)
@@ -5,11 +5,11 @@ include $(TOPDIR)/rules.mk
 
 PKG_LICENSE:=GPL-3.0-or-later
 PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
-PKG_VERSION:=1.9.3-1
+PKG_VERSION:=1.9.3-3
 
 LUCI_TITLE:=Simple Adblock Web UI
 LUCI_DESCRIPTION:=Provides Web UI for simple-adblock service.
-LUCI_DEPENDS:=+luci-mod-admin-full +simple-adblock +jsonfilter
+LUCI_DEPENDS:=+luci-base +simple-adblock +jsonfilter
 LUCI_PKGARCH:=all
 
 include ../../luci.mk
index bde2e34c5b332b13c03fe59373b36e7d20adf6c7..2bc49556c7c614f53491eff6663b67a1dbc6c3e0 100644 (file)
@@ -83,62 +83,64 @@ var status = baseclass.extend({
                ]).then(function (data) {
                        var replyStatus = data[0];
                        var text ="";
-                       var status = replyStatus[pkg.Name];
-                       var outputFile = status.outputFile;
-                       var outputCache = status.outputCache;
+                       var reply = replyStatus[pkg.Name];
+                       var outputFile = reply.outputFile;
+                       var outputCache = reply.outputCache;
                        var statusTable = {
-                         statusNoInstall: _("%s is not installed or not found").format(pkg.Name),
-                         statusStopped: _("Stopped"),
-                         statusStarting: _("Starting"),
-                         statusRestarting: _("Restarting"),
-                         statusForceReloading: _("Force Reloading"),
-                         statusDownloading: _("Downloading"),
-                         statusError: _("Error"),
-                         statusWarning: _("Warning"),
-                         statusFail: _("Fail"),
-                         statusSuccess: _("Active")
+                               statusNoInstall: _("%s is not installed or not found").format(pkg.Name),
+                               statusStopped: _("Stopped"),
+                               statusStarting: _("Starting"),
+                               statusProcessing: _("Processing lists"),
+                               statusRestarting: _("Restarting"),
+                               statusForceReloading: _("Force Reloading"),
+                               statusDownloading: _("Downloading lists"),
+                               statusError: _("Error"),
+                               statusWarning: _("Warning"),
+                               statusFail: _("Fail"),
+                               statusSuccess: _("Active")
                        };
 
                        var header = E('h2', {}, _("Simple AdBlock - Status"))
                        var statusTitle = E('label', { class: 'cbi-value-title' }, _("Service Status"));
-                       if (status.version) {
-                               text += _("Version: %s").format(status.version) + " - ";
-                               switch (status.status) {
+                       if (reply.version) {
+                               text += _("Version: %s").format(reply.version) + " - ";
+                               switch (reply.status) {
                                        case 'statusSuccess':
-                                               text += statusTable[status.status] + ".";
-                                               text += "<br />" + _("Blocking %s domains (with %s).").format(status.entries, status.dns);
-                                               if (status.outputGzipExists) {
+                                               text += statusTable[reply.status] + ".";
+                                               text += "<br />" + _("Blocking %s domains (with %s).").format(reply.entries, reply.dns);
+                                               if (reply.outputGzipExists) {
                                                        text += "<br />" + _("Compressed cache file created.");
                                                }
-                                               if (status.force_dns_active) {
+                                               if (reply.force_dns_active) {
                                                        text += "<br />" + _("Force DNS ports:");
-                                                       status.force_dns_ports.forEach(element => {
+                                                       reply.force_dns_ports.forEach(element => {
                                                                text += " " + element;
                                                        });
                                                        text += ".";
                                                }
                                                break;
                                        case 'statusStopped':
-                                               if (status.enabled) {
-                                                       text += statusTable[status.status] + ".";
+                                               if (reply.enabled) {
+                                                       text += statusTable[reply.status] + ".";
                                                }
                                                else {
-                                                       text += statusTable[status.status] + _("disabled") + "."
+                                                       text += statusTable[reply.status] + _("disabled") + "."
                                                }
-                                               if (status.outputCacheExists) {
+                                               if (reply.outputCacheExists) {
                                                        text += "<br />" + _("Cache file found.");
                                                }
-                                               else if (status.outputGzipExists) {
+                                               else if (reply.outputGzipExists) {
                                                        text += "<br />" + _("Compressed cache file found.");
                                                }
                                                break;
                                        case 'statusRestarting':
                                        case 'statusForceReloading':
                                        case 'statusDownloading':
-                                               text += statusTable[status.status] + "...";
+                                       case 'statusProcessing':
+                                               text += statusTable[reply.status] + "...";
                                                break;
                                        default:
-                                               text += statusTable[status.status] + ".";
+                                               text += statusTable[reply.status] + ".";
                                                break;
                                }
                        }
@@ -150,16 +152,33 @@ var status = baseclass.extend({
                        var statusDiv = E('div', { class: 'cbi-value' }, [statusTitle, statusField]);
 
                        var warningsDiv = [];
-                       if (status.warnings) {
+                       if (reply.warnings && reply.warnings.length) {
+                               var warningTable = {
+                                       warningExternalDnsmasqConfig: _("use of external dnsmasq config file detected, please set '%s' option to '%s'").format("dns", "dnsmasq.conf"),
+                                       warningMissingRecommendedPackages: _("some recommended packages are missing")
+                               }
                                var warningsTitle = E('label', { class: 'cbi-value-title' }, _("Service Warnings"));
-                               var warningsText = E('div', {}, status.warnings);
+                               var text = "";
+                               (reply.warnings).forEach(element => {
+                                       text += (warningTable[element.id]).format(element.extra || ' ') + "<br />";
+                               });
+                               var warningsText = E('div', {}, text);
                                var warningsField = E('div', { class: 'cbi-value-field' }, warningsText);
                                warningsDiv = E('div', { class: 'cbi-value' }, [warningsTitle, warningsField]);
                        }
 
                        var errorsDiv = [];
-                       if ((status.errors).length) {
+                       if (reply.errors && reply.errors.length) {
                                var errorTable = {
+                                       errorConfigValidationFail: _("Config (%s) validation failure!").format('/etc/config/' + pkg.Name),
+                                       errorServiceDisabled: _("%s is currently disabled").format(pkg.Name),
+                                       errorNoDnsmasqIpset: _("dnsmasq ipset support is enabled, but dnsmasq is either not installed or installed dnsmasq does not support ipset"),
+                                       errorNoIpset: _("dnsmasq ipset support is enabled, but ipset is either not installed or installed ipset does not support '%s' type").format("hash:net"),
+                                       errorNoDnsmasqNftset: _("dnsmasq nft set support is enabled, but dnsmasq is either not installed or installed dnsmasq does not support nft set"),
+                                       errorNoNft: _("dnsmasq nft sets support is enabled, but nft is not installed"),
+                                       errorMkdirFail: _("Unable to create directory for '%s'"),
+                                       errorNoWanGateway: _("The %s service failed to discover WAN gateway!").format(pkg.Name),
+                                       errorOutputDirCreate: _("failed to create directory for %s file"),
                                        errorOutputFileCreate: _("failed to create '%s' file").format(outputFile),
                                        errorFailDNSReload: _("failed to restart/reload DNS resolver"),
                                        errorSharedMemory: _("failed to access shared memory"),
@@ -184,8 +203,8 @@ var status = baseclass.extend({
                                }
                                var errorsTitle = E('label', { class: 'cbi-value-title' }, _("Service Errors"));
                                var text = "";
-                               (status.errors).forEach(element => {
-                                       text += errorTable[element] + ".<br />";
+                               (reply.errors).forEach(element => {
+                                       text += (errorTable[element.id]).format(element.extra || ' ') + "<br />";
                                });
                                var errorsText = E('div', {}, text);
                                var errorsField = E('div', { class: 'cbi-value-field' }, errorsText);
@@ -250,10 +269,10 @@ var status = baseclass.extend({
                                }
                        }, _('Disable'));
 
-                       if (status.enabled) {
+                       if (reply.enabled) {
                                btn_enable.disabled = true;
                                btn_disable.disabled = false;
-                               switch (status.status) {
+                               switch (reply.status) {
                                        case 'statusSuccess':
                                                btn_start.disabled = true;
                                                btn_action.disabled = false;
@@ -285,7 +304,7 @@ var status = baseclass.extend({
                        var buttonsTitle = E('label', { class: 'cbi-value-title' }, _("Service Control"))
                        var buttonsText = E('div', {}, [btn_start, btn_gap, btn_action, btn_gap, btn_stop, btn_gap_long, btn_enable, btn_gap, btn_disable]);
                        var buttonsField = E('div', { class: 'cbi-value-field' }, buttonsText);
-                       if (status.version) {
+                       if (reply.version) {
                                buttonsDiv = E('div', { class: 'cbi-value' }, [buttonsTitle, buttonsField]);
                        }
 
index 23544680c2fc88fcf89b0eb2f0d97793a482ce51..06708c773c81f80dcbd2c85491b2160089c41484 100644 (file)
@@ -1,11 +1,15 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:174
+msgid "%s is currently disabled"
+msgstr ""
+
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:90
 msgid "%s is not installed or not found"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:99
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:100
 msgid "Active"
 msgstr ""
 
@@ -58,22 +62,26 @@ msgstr ""
 msgid "Blocked Hosts URLs"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:109
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:110
 msgid "Blocking %s domains (with %s)."
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:129
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:130
 msgid "Cache file found."
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:111
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:112
 msgid "Compressed cache file created."
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:132
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:133
 msgid "Compressed cache file found."
 msgstr ""
 
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:173
+msgid "Config (%s) validation failure!"
+msgstr ""
+
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:42
 msgid "Controls system log and console output verbosity."
 msgstr ""
@@ -94,7 +102,7 @@ msgstr ""
 msgid "DNS resolution option, see the %sREADME%s for details."
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:251
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:270
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:37
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:39
 msgid "Disable"
@@ -105,7 +113,7 @@ msgstr ""
 msgid "Disable Debugging"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:247
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:266
 msgid "Disabling %s service"
 msgstr ""
 
@@ -131,11 +139,11 @@ msgstr ""
 msgid "Download time-out (in seconds)"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:95
-msgid "Downloading"
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:96
+msgid "Downloading lists"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:240
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:259
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:38
 msgid "Enable"
 msgstr ""
@@ -149,27 +157,27 @@ msgstr ""
 msgid "Enables debug output to /tmp/simple-adblock.log."
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:236
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:255
 msgid "Enabling %s service"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:96
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:97
 msgid "Error"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:98
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:99
 msgid "Fail"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:114
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:115
 msgid "Force DNS ports:"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:218
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:237
 msgid "Force Re-Download"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:94
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:95
 msgid "Force Reloading"
 msgstr ""
 
@@ -182,7 +190,7 @@ msgstr ""
 msgid "Force Router DNS server to all local devices"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:214
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:233
 msgid "Force re-downloading %s block lists"
 msgstr ""
 
@@ -232,7 +240,7 @@ msgstr ""
 msgid "Let local devices use their own DNS servers if set"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:146
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:148
 msgid "Not installed or not found"
 msgstr ""
 
@@ -259,22 +267,26 @@ msgid "Please note that %s is not supported on this system."
 msgstr ""
 
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:93
+msgid "Processing lists"
+msgstr ""
+
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:94
 msgid "Restarting"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:285
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:304
 msgid "Service Control"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:185
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:204
 msgid "Service Errors"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:103
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:104
 msgid "Service Status"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:154
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:160
 msgid "Service Warnings"
 msgstr ""
 
@@ -286,7 +298,7 @@ msgstr ""
 msgid "Simple AdBlock - Configuration"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:102
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:103
 msgid "Simple AdBlock - Status"
 msgstr ""
 
@@ -298,7 +310,7 @@ msgstr ""
 msgid "Some output"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:207
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:226
 msgid "Start"
 msgstr ""
 
@@ -306,11 +318,11 @@ msgstr ""
 msgid "Starting"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:203
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:222
 msgid "Starting %s service"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:229
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:248
 msgid "Stop"
 msgstr ""
 
@@ -322,7 +334,7 @@ msgstr ""
 msgid "Stopped"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:225
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:244
 msgid "Stopping %s service"
 msgstr ""
 
@@ -338,6 +350,10 @@ msgstr ""
 msgid "Suppress output"
 msgstr ""
 
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:180
+msgid "The %s service failed to discover WAN gateway!"
+msgstr ""
+
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:148
 msgid ""
 "URL to the external dnsmasq config file, see the %sREADME%s for details."
@@ -355,6 +371,10 @@ msgstr ""
 msgid "URLs to lists of hosts to be blocked."
 msgstr ""
 
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:179
+msgid "Unable to create directory for '%s'"
+msgstr ""
+
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:130
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:131
 msgid "Use simultaneous processing"
@@ -365,15 +385,15 @@ msgstr ""
 msgid "Verbose output"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:105
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:106
 msgid "Version: %s"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:97
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:98
 msgid "Warning"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:126
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:127
 msgid "disabled"
 msgstr ""
 
@@ -389,96 +409,122 @@ msgstr ""
 msgid "dnsmasq ipset"
 msgstr ""
 
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:175
+msgid ""
+"dnsmasq ipset support is enabled, but dnsmasq is either not installed or "
+"installed dnsmasq does not support ipset"
+msgstr ""
+
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:176
+msgid ""
+"dnsmasq ipset support is enabled, but ipset is either not installed or "
+"installed ipset does not support '%s' type"
+msgstr ""
+
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:93
 msgid "dnsmasq nft set"
 msgstr ""
 
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:177
+msgid ""
+"dnsmasq nft set support is enabled, but dnsmasq is either not installed or "
+"installed dnsmasq does not support nft set"
+msgstr ""
+
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:178
+msgid "dnsmasq nft sets support is enabled, but nft is not installed"
+msgstr ""
+
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:95
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:100
 msgid "dnsmasq servers file"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:165
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:184
 msgid "failed to access shared memory"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:163
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:182
 msgid "failed to create '%s' file"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:175
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:194
 msgid "failed to create block-list or restart DNS resolver"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:171
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:190
 msgid "failed to create compressed cache"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:183
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:181
+msgid "failed to create directory for %s file"
+msgstr ""
+
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:202
 msgid "failed to create output/cache/gzip file directory"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:179
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:198
 msgid "failed to download"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:178
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:197
 msgid "failed to download Config Update file"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:169
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:188
 msgid "failed to format data file"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:174
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:193
 msgid "failed to move '%s' to '%s'"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:170
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:189
 msgid "failed to move temporary data file to '%s'"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:167
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:186
 msgid "failed to optimize data file"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:181
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:200
 msgid "failed to parse"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:180
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:199
 msgid "failed to parse Config Update file"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:168
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:187
 msgid "failed to process allow-list"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:177
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:196
 msgid "failed to reload/restart DNS resolver"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:172
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:191
 msgid "failed to remove temporary files"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:164
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:183
 msgid "failed to restart/reload DNS resolver"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:166
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:185
 msgid "failed to sort data file"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:176
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:195
 msgid "failed to stop %s"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:173
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:192
 msgid "failed to unpack compressed cache"
 msgstr ""
 
-#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:182
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:201
 msgid "no HTTPS/SSL support on device"
 msgstr ""
 
@@ -486,6 +532,15 @@ msgstr ""
 msgid "none"
 msgstr ""
 
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:158
+msgid "some recommended packages are missing"
+msgstr ""
+
 #: applications/luci-app-simple-adblock/htdocs/luci-static/resources/view/simple-adblock/overview.js:98
 msgid "unbound adblock list"
 msgstr ""
+
+#: applications/luci-app-simple-adblock/htdocs/luci-static/resources/simple-adblock/status.js:157
+msgid ""
+"use of external dnsmasq config file detected, please set '%s' option to '%s'"
+msgstr ""
index 6ba5790fc78e9b525e2a046c54aceaf1d1490fb8..2ee3ba5d0df18a24dff838c25b161775e515d359 100755 (executable)
@@ -163,9 +163,40 @@ get_init_status() {
        fi
        json_add_string 'version' "$(get_version "$name")"
        json_add_array 'errors'
-               for i in $errors; do json_add_string '' "$i"; done
+       if [ -n "$errors" ]; then
+               for i in $errors; do
+                       if str_contains "$i" '|'; then
+                               error_extra="${i##*|}"
+                               error_id="${i%|*}"
+                       else
+                               error_id="$i"
+                               unset error_extra
+                       fi
+                       json_add_object
+                       json_add_string 'id' "$error_id"
+                       json_add_string 'extra' "$error_extra"
+                       json_close_object
+               done
+       fi
+       json_close_array
+       json_add_array 'warnings'
+       if [ -n "$warnings" ]; then
+               for i in $warnings; do
+                       if str_contains "$i" '|'; then
+                               error_extra="${i##*|}"
+                               error_id="${i%|*}"
+                       else
+                               error_id="$i"
+                               unset error_extra
+                       fi
+                       json_add_object
+                       json_add_string 'id' "$error_id"
+                       json_add_string 'extra' "$error_extra"
+                       json_close_object
+               done
+       fi
        json_close_array
-#      json_add_string 'warnings' "$warnings"
+
        if [ -n "$ports" ]; then
                json_add_boolean 'force_dns_active' '1'
                json_add_array 'force_dns_ports'