Merge pull request #6142 from stangri/master-luci-app-pbr
luci-app-pbr: Detect missing iptables & error-proofing WebUI
This commit is contained in:
commit
35f0d50a49
3 changed files with 64 additions and 41 deletions
|
@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-3.0-or-later
|
PKG_LICENSE:=GPL-3.0-or-later
|
||||||
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
|
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
|
||||||
PKG_VERSION:=1.0.0-1
|
PKG_VERSION:=1.0.0-2
|
||||||
|
|
||||||
LUCI_TITLE:=Policy Based Routing Service Web UI
|
LUCI_TITLE:=Policy Based Routing Service Web UI
|
||||||
LUCI_DESCRIPTION:=Provides Web UI for Policy Based Routing Service.
|
LUCI_DESCRIPTION:=Provides Web UI for Policy Based Routing Service.
|
||||||
|
|
|
@ -164,7 +164,12 @@ var status = baseclass.extend({
|
||||||
var warningsTitle = E('label', { class: 'cbi-value-title' }, _("Service Warnings"));
|
var warningsTitle = E('label', { class: 'cbi-value-title' }, _("Service Warnings"));
|
||||||
var text = "";
|
var text = "";
|
||||||
(reply.warnings).forEach(element => {
|
(reply.warnings).forEach(element => {
|
||||||
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
|
if (element.id && textLabelsTable[element.id]) {
|
||||||
|
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
text += _("Unknown Warning!") + "<br />";
|
||||||
|
}
|
||||||
});
|
});
|
||||||
var warningsText = E('div', {}, text);
|
var warningsText = E('div', {}, text);
|
||||||
var warningsField = E('div', { class: 'cbi-value-field' }, warningsText);
|
var warningsField = E('div', { class: 'cbi-value-field' }, warningsText);
|
||||||
|
@ -175,7 +180,8 @@ var status = baseclass.extend({
|
||||||
if (reply.errors && reply.errors.length) {
|
if (reply.errors && reply.errors.length) {
|
||||||
var textLabelsTable = {
|
var textLabelsTable = {
|
||||||
errorConfigValidation: _("Config (%s) validation failure!").format('/etc/config/' + pkg.Name),
|
errorConfigValidation: _("Config (%s) validation failure!").format('/etc/config/' + pkg.Name),
|
||||||
errorNoIpFull: _("ip-full binary cannot be found!"),
|
errorNoIpFull: _("%s binary cannot be found!").formate('ip-full'),
|
||||||
|
errorNoIptables: _("%s binary cannot be found!").formate('iptables'),
|
||||||
errorNoIpset: _("Resolver set support (%s) requires ipset, but ipset binary cannot be found!").format(uci.get(pkg.Name, 'config', 'resolver_set')),
|
errorNoIpset: _("Resolver set support (%s) requires ipset, but ipset binary cannot be found!").format(uci.get(pkg.Name, 'config', 'resolver_set')),
|
||||||
errorNoNft: _("Resolver set support (%s) requires nftables, but nft binary cannot be found!").format(uci.get(pkg.Name, 'config', 'resolver_set')),
|
errorNoNft: _("Resolver set support (%s) requires nftables, but nft binary cannot be found!").format(uci.get(pkg.Name, 'config', 'resolver_set')),
|
||||||
errorResolverNotSupported: _("Resolver set (%s) is not supported on this system!").format(uci.get(pkg.Name, 'config', 'resolver_set')),
|
errorResolverNotSupported: _("Resolver set (%s) is not supported on this system!").format(uci.get(pkg.Name, 'config', 'resolver_set')),
|
||||||
|
@ -187,7 +193,7 @@ var status = baseclass.extend({
|
||||||
errorPolicyNoSrcDest: _("Policy '%s' has no source/destination parameters!"),
|
errorPolicyNoSrcDest: _("Policy '%s' has no source/destination parameters!"),
|
||||||
errorPolicyNoInterface: _("Policy '%s' has no assigned interface!"),
|
errorPolicyNoInterface: _("Policy '%s' has no assigned interface!"),
|
||||||
errorPolicyUnknownInterface: _("Policy '%s' has an unknown interface!"),
|
errorPolicyUnknownInterface: _("Policy '%s' has an unknown interface!"),
|
||||||
errorPolicyProcess: _("%s"),
|
errorPolicyProcess: _("Policy processing error (%s)!"),
|
||||||
errorFailedSetup: _("Failed to set up '%s'!"),
|
errorFailedSetup: _("Failed to set up '%s'!"),
|
||||||
errorFailedReload: _("Failed to reload '%s'!"),
|
errorFailedReload: _("Failed to reload '%s'!"),
|
||||||
errorUserFileNotFound: _("Custom user file '%s' not found or empty!"),
|
errorUserFileNotFound: _("Custom user file '%s' not found or empty!"),
|
||||||
|
@ -199,7 +205,12 @@ var status = baseclass.extend({
|
||||||
var errorsTitle = E('label', { class: 'cbi-value-title' }, _("Service Errors"));
|
var errorsTitle = E('label', { class: 'cbi-value-title' }, _("Service Errors"));
|
||||||
var text = "";
|
var text = "";
|
||||||
(reply.errors).forEach(element => {
|
(reply.errors).forEach(element => {
|
||||||
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
|
if (element.id && textLabelsTable[element.id]) {
|
||||||
|
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
text += _("Unknown Error!") + "<br />";
|
||||||
|
}
|
||||||
});
|
});
|
||||||
var errorsText = E('div', {}, text);
|
var errorsText = E('div', {}, text);
|
||||||
var errorsField = E('div', { class: 'cbi-value-field' }, errorsText);
|
var errorsField = E('div', { class: 'cbi-value-field' }, errorsText);
|
||||||
|
|
|
@ -2,10 +2,14 @@ msgid ""
|
||||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:162
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:162
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:190
|
|
||||||
msgid "%s"
|
msgid "%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:183
|
||||||
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:184
|
||||||
|
msgid "%s binary cannot be found!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:38
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:38
|
||||||
msgid ""
|
msgid ""
|
||||||
"%sWARNING:%s Please make sure to check the %sREADME%s before changing "
|
"%sWARNING:%s Please make sure to check the %sREADME%s before changing "
|
||||||
|
@ -62,7 +66,7 @@ msgstr ""
|
||||||
msgid "Condensed output"
|
msgid "Condensed output"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:177
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:182
|
||||||
msgid "Config (%s) validation failure!"
|
msgid "Config (%s) validation failure!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -74,7 +78,7 @@ msgstr ""
|
||||||
msgid "Custom User File Includes"
|
msgid "Custom User File Includes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:193
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:199
|
||||||
msgid "Custom user file '%s' not found or empty!"
|
msgid "Custom user file '%s' not found or empty!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -90,7 +94,7 @@ msgstr ""
|
||||||
msgid "Default ICMP Interface"
|
msgid "Default ICMP Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:276
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -100,7 +104,7 @@ msgstr ""
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:261
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:272
|
||||||
msgid "Disabling %s service"
|
msgid "Disabling %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -122,7 +126,7 @@ msgstr ""
|
||||||
msgid "Do not enforce policies when their gateway is down"
|
msgid "Do not enforce policies when their gateway is down"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:254
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -133,11 +137,11 @@ msgstr ""
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:250
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:261
|
||||||
msgid "Enabling %s service"
|
msgid "Enabling %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:195
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:201
|
||||||
msgid "Error running custom user file '%s'!"
|
msgid "Error running custom user file '%s'!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -147,15 +151,15 @@ msgid ""
|
||||||
"QoS. Change with caution together with"
|
"QoS. Change with caution together with"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:192
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:198
|
||||||
msgid "Failed to reload '%s'!"
|
msgid "Failed to reload '%s'!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:191
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:197
|
||||||
msgid "Failed to set up '%s'!"
|
msgid "Failed to set up '%s'!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:197
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:203
|
||||||
msgid "Failed to set up any gateway!"
|
msgid "Failed to set up any gateway!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -231,15 +235,15 @@ msgstr ""
|
||||||
msgid "Policies"
|
msgid "Policies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:189
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:195
|
||||||
msgid "Policy '%s' has an unknown interface!"
|
msgid "Policy '%s' has an unknown interface!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:188
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:194
|
||||||
msgid "Policy '%s' has no assigned interface!"
|
msgid "Policy '%s' has no assigned interface!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:187
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:193
|
||||||
msgid "Policy '%s' has no source/destination parameters!"
|
msgid "Policy '%s' has no source/destination parameters!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -255,6 +259,10 @@ msgstr ""
|
||||||
msgid "Policy Routing"
|
msgid "Policy Routing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:196
|
||||||
|
msgid "Policy processing error (%s)!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:185
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:185
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -267,7 +275,7 @@ msgstr ""
|
||||||
msgid "Remote ports"
|
msgid "Remote ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:181
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:187
|
||||||
msgid "Resolver set (%s) is not supported on this system!"
|
msgid "Resolver set (%s) is not supported on this system!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -275,21 +283,21 @@ msgstr ""
|
||||||
msgid "Resolver set (%s) is not supported on this system."
|
msgid "Resolver set (%s) is not supported on this system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:179
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:185
|
||||||
msgid ""
|
msgid ""
|
||||||
"Resolver set support (%s) requires ipset, but ipset binary cannot be found!"
|
"Resolver set support (%s) requires ipset, but ipset binary cannot be found!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:180
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:186
|
||||||
msgid ""
|
msgid ""
|
||||||
"Resolver set support (%s) requires nftables, but nft binary cannot be found!"
|
"Resolver set support (%s) requires nftables, but nft binary cannot be found!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:232
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:243
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:239
|
||||||
msgid "Restarting %s service"
|
msgid "Restarting %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -323,11 +331,11 @@ msgstr ""
|
||||||
msgid "Select Add for -A/add and Insert for -I/Insert."
|
msgid "Select Add for -A/add and Insert for -I/Insert."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:289
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:300
|
||||||
msgid "Service Control"
|
msgid "Service Control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:199
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:205
|
||||||
msgid "Service Errors"
|
msgid "Service Errors"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -354,11 +362,11 @@ msgid ""
|
||||||
"%sREADME%s for details."
|
"%sREADME%s for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:221
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:232
|
||||||
msgid "Start"
|
msgid "Start"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:217
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228
|
||||||
msgid "Starting %s service"
|
msgid "Starting %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -372,7 +380,7 @@ msgstr ""
|
||||||
msgid "Starting (WAN) Table ID number for tables created by the service."
|
msgid "Starting (WAN) Table ID number for tables created by the service."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:243
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:254
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -384,7 +392,7 @@ msgstr ""
|
||||||
msgid "Stopped (version: %s)"
|
msgid "Stopped (version: %s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:239
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:250
|
||||||
msgid "Stopping %s service"
|
msgid "Stopping %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -408,7 +416,7 @@ msgstr ""
|
||||||
msgid "Suppress/No output"
|
msgid "Suppress/No output"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:194
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:200
|
||||||
msgid "Syntax error in custom user file '%s'!"
|
msgid "Syntax error in custom user file '%s'!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -422,27 +430,35 @@ msgstr ""
|
||||||
msgid "The %s is not supported on this system."
|
msgid "The %s is not supported on this system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:183
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:189
|
||||||
msgid "The %s service failed to discover WAN gateway!"
|
msgid "The %s service failed to discover WAN gateway!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:182
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:188
|
||||||
msgid "The %s service is currently disabled!"
|
msgid "The %s service is currently disabled!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:184
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:190
|
||||||
msgid "The ipset name '%s' is longer than allowed 31 characters!"
|
msgid "The ipset name '%s' is longer than allowed 31 characters!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:185
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:191
|
||||||
msgid "The nft set name '%s' is longer than allowed 31 characters!"
|
msgid "The nft set name '%s' is longer than allowed 31 characters!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:186
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:192
|
||||||
msgid "Unexpected exit or service termination: '%s'!"
|
msgid "Unexpected exit or service termination: '%s'!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:196
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:212
|
||||||
|
msgid "Unknown Error!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:171
|
||||||
|
msgid "Unknown Warning!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:202
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use of 'curl' is detected in custom user file '%s', but 'curl' isn't "
|
"Use of 'curl' is detected in custom user file '%s', but 'curl' isn't "
|
||||||
"installed!"
|
"installed!"
|
||||||
|
@ -473,7 +489,3 @@ msgstr ""
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:193
|
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:193
|
||||||
msgid "all"
|
msgid "all"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:178
|
|
||||||
msgid "ip-full binary cannot be found!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
Loading…
Reference in a new issue