Merge pull request #6159 from stangri/master-luci-app-pbr

luci-app-pbr: update to 1.0.1-1
This commit is contained in:
Stan Grishin 2022-12-19 14:09:38 -07:00 committed by GitHub
commit 592836113f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 252 additions and 141 deletions

View file

@ -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-2 PKG_VERSION:=1.0.1-1
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.

View file

@ -111,8 +111,25 @@ var status = baseclass.extend({
]).then(function (data) { ]).then(function (data) {
// var replyStatus = data[0]; // var replyStatus = data[0];
// var replyGateways = data[1]; // var replyGateways = data[1];
var reply = data[0][pkg.Name]; var reply;
var text; var text;
if (data[0] && data[0][pkg.Name]) {
reply = data[0][pkg.Name];
}
else {
reply = {
enabled: null,
running: null,
running_iptables: null,
running_nft: null,
version: null,
gateways: null,
errors: [],
warnings: [],
};
}
var header = E('h2', {}, _("Policy Based Routing - Status")); var header = E('h2', {}, _("Policy Based Routing - Status"));
var statusTitle = E('label', { class: 'cbi-value-title' }, _("Service Status")); var statusTitle = E('label', { class: 'cbi-value-title' }, _("Service Status"));
if (reply.version) { if (reply.version) {
@ -159,14 +176,20 @@ var status = baseclass.extend({
var textLabelsTable = { var textLabelsTable = {
warningResolverNotSupported: _("Resolver set (%s) is not supported on this system.").format(uci.get(pkg.Name, 'config', 'resolver_set')), warningResolverNotSupported: _("Resolver set (%s) is not supported on this system.").format(uci.get(pkg.Name, 'config', 'resolver_set')),
warningAGHVersionTooLow: _("Installed AdGuardHome (%s) doesn't support 'ipset_file' option."), warningAGHVersionTooLow: _("Installed AdGuardHome (%s) doesn't support 'ipset_file' option."),
warningPolicyProcess: _("%s") warningPolicyProcessCMD: _("%s"),
warningTorUnsetParams: _("Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'"),
warningTorUnsetProto: _("Please unset 'proto' or set 'proto' to 'all' for policy '%s'"),
warningTorUnsetChainIpt: _("Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'"),
warningTorUnsetChainNft: _("Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'"),
}; };
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 => {
if (element.id && textLabelsTable[element.id]) { if (element.id && textLabelsTable[element.id]) {
if (element.id !== 'warningPolicyProcessCMD') {
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />"; text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
} }
}
else { else {
text += _("Unknown Warning!") + "<br />"; text += _("Unknown Warning!") + "<br />";
} }
@ -180,8 +203,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: _("%s binary cannot be found!").formate('ip-full'), errorNoIpFull: _("%s binary cannot be found!").format('ip-full'),
errorNoIptables: _("%s binary cannot be found!").formate('iptables'), errorNoIptables: _("%s binary cannot be found!").format('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')),
@ -193,21 +216,30 @@ 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: _("Policy processing error (%s)!"), errorPolicyProcessCMD: _("%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!"),
ererrorUserFileSyntax: _("Syntax error in custom user file '%s'!"), ererrorUserFileSyntax: _("Syntax error in custom user file '%s'!"),
errorUserFileRunning: _("Error running custom user file '%s'!"), errorUserFileRunning: _("Error running custom user file '%s'!"),
errorUserFileNoCurl: _("Use of 'curl' is detected in custom user file '%s', but 'curl' isn't installed!"), errorUserFileNoCurl: _("Use of 'curl' is detected in custom user file '%s', but 'curl' isn't installed!"),
errorNoGateways: _("Failed to set up any gateway!") errorNoGateways: _("Failed to set up any gateway!"),
errorResolver: _("Resolver %s"),
errorPolicyProcessNoIpv6: _("Skipping IPv6 policy '%s' as IPv6 support is disabled"),
errorPolicyProcessUnknownFwmark: _("Unknown packet mark for interface '%s'"),
errorPolicyProcessMismatchFamily: _("Mismatched IP family between in policy %s"),
errorPolicyProcessUnknownProtocol: _("Unknown protocol in policy %s"),
errorPolicyProcessInsertionFailed: _("Insertion failed for both IPv4 and IPv6 for policy %s"),
errorPolicyProcessInsertionFailedIpv4: _("Insertion failed for IPv4 for policy %s"),
}; };
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 => {
if (element.id && textLabelsTable[element.id]) { if (element.id && textLabelsTable[element.id]) {
if (element.id !== 'errorPolicyProcessCMD') {
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />"; text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
} }
}
else { else {
text += _("Unknown Error!") + "<br />"; text += _("Unknown Error!") + "<br />";
} }

View file

@ -25,10 +25,33 @@ return view.extend({
L.resolveDefault(pbr.getInterfaces(), {}), L.resolveDefault(pbr.getInterfaces(), {}),
L.resolveDefault(pbr.getPlatformSupport(), {}), L.resolveDefault(pbr.getPlatformSupport(), {}),
]).then(function (data) { ]).then(function (data) {
var arrInterfaces = data[0][pkg.Name].interfaces; var arrInterfaces;
var replyPlatform = data[1][pkg.Name]; var replyPlatform;
var status, m, s, o; var status, m, s, o;
if (data[0] && data[0][pkg.Name] && data[0][pkg.Name].interfaces) {
arrInterfaces = data[0][pkg.Name].interfaces;
}
else {
arrInterfaces = ["wan"];
}
if (data[1] && data[1][pkg.Name]) {
replyPlatform = data[1][pkg.Name];
}
else {
replyPlatform = {
ipset_installed: null,
nft_installed: null,
adguardhome_installed: null,
dnsmasq_installed: null,
unbound_installed: null,
adguardhome_ipset_support: null,
dnsmasq_ipset_support: null,
dnsmasq_nftset_support: null,
};
}
status = new pbr.status(); status = new pbr.status();
m = new form.Map(pkg.Name, _("Policy Based Routing - Configuration")); m = new form.Map(pkg.Name, _("Policy Based Routing - Configuration"));
@ -56,13 +79,22 @@ return view.extend({
o.default = "1"; o.default = "1";
var text = ""; var text = "";
if (!(replyPlatform.adguardhome_ipset_support)) { if (replyPlatform.adguardhome_ipset_support === null) {
text += _("The %s support is unknown.").format("<i>adguardhome.ipset</i>") + "<br />"
}
else if (!(replyPlatform.adguardhome_ipset_support)) {
text += _("The %s is not supported on this system.").format("<i>adguardhome.ipset</i>") + "<br />" text += _("The %s is not supported on this system.").format("<i>adguardhome.ipset</i>") + "<br />"
} }
if (!(replyPlatform.dnsmasq_ipset_support)) { if (replyPlatform.dnsmasq_ipset_support === null) {
text += _("The %s support is unknown.").format("<i>dnsmasq.ipset</i>") + "<br />"
}
else if (!(replyPlatform.dnsmasq_ipset_support)) {
text += _("The %s is not supported on this system.").format("<i>dnsmasq.ipset</i>") + "<br />" text += _("The %s is not supported on this system.").format("<i>dnsmasq.ipset</i>") + "<br />"
} }
if (!(replyPlatform.dnsmasq_nftset_support)) { if (replyPlatform.dnsmasq_nftset_support === null) {
text += _("The %s support is unknown.").format("<i>dnsmasq.nftset</i>") + "<br />"
}
else if (!(replyPlatform.dnsmasq_nftset_support)) {
text += _("The %s is not supported on this system.").format("<i>dnsmasq.nftset</i>") + "<br />" text += _("The %s is not supported on this system.").format("<i>dnsmasq.nftset</i>") + "<br />"
} }
text += _("Please check the %sREADME%s before changing this option.").format( text += _("Please check the %sREADME%s before changing this option.").format(

View file

@ -1,169 +1,170 @@
msgid "" 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:179
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:219
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:206
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:184 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207
msgid "%s binary cannot be found!" msgid "%s binary cannot be found!"
msgstr "" 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:61
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 "
"anything in this section! Change any of the settings below with extreme " "anything in this section! Change any of the settings below with extreme "
"caution!%s" "caution!%s"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:73 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:105
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:74 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:106
msgid "AdGuardHome ipset" msgid "AdGuardHome ipset"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:101 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:133
msgid "Add" msgid "Add"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:136 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:168
msgid "Add Ignore Target" msgid "Add Ignore Target"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:137 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:169
msgid "" msgid ""
"Adds 'ignore' to the list of interfaces for policies. See the %sREADME%s for " "Adds 'ignore' to the list of interfaces for policies. See the %sREADME%s for "
"details." "details."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:37 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:60
msgid "Advanced Configuration" msgid "Advanced Configuration"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:90 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:122
msgid "" msgid ""
"Allows to specify the list of interface names (in lower case) to be " "Allows to specify the list of interface names (in lower case) to be "
"explicitly supported by the service. Can be useful if your OpenVPN tunnels " "explicitly supported by the service. Can be useful if your OpenVPN tunnels "
"have dev option other than tun* or tap*." "have dev option other than tun* or tap*."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:95 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:127
msgid "" msgid ""
"Allows to specify the list of interface names (in lower case) to be ignored " "Allows to specify the list of interface names (in lower case) to be ignored "
"by the service. Can be useful if running both VPN server and VPN client on " "by the service. Can be useful if running both VPN server and VPN client on "
"the router." "the router."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:36 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:59
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:201 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:233
msgid "Chain" msgid "Chain"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:47 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:70
msgid "Condensed output" msgid "Condensed output"
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:205
msgid "Config (%s) validation failure!" msgid "Config (%s) validation failure!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:45 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:68
msgid "Controls both system log and console output verbosity." msgid "Controls both system log and console output verbosity."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:227 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:259
msgid "Custom User File Includes" msgid "Custom User File Includes"
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:222
msgid "Custom user file '%s' not found or empty!" msgid "Custom user file '%s' not found or empty!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:222 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:254
msgid "DSCP Tag" msgid "DSCP Tag"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:217 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:249
msgid "DSCP Tagging" msgid "DSCP Tagging"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:105 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:137
msgid "Default ICMP Interface" msgid "Default ICMP Interface"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:276 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:308
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:71 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:103
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:86 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:118
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:139 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:171
msgid "Disabled" msgid "Disabled"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:272 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304
msgid "Disabling %s service" msgid "Disabling %s service"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:145 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:177
msgid "Display these protocols in protocol column in Web UI." msgid "Display these protocols in protocol column in Web UI."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:77 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:109
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:78 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:110
msgid "Dnsmasq ipset" msgid "Dnsmasq ipset"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:81 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:113
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:82 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:114
msgid "Dnsmasq nft set" msgid "Dnsmasq nft set"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:54 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:77
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:265 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:297
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:87 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:119
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:140 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:172
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:157 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:189
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:235 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:267
msgid "Enabled" msgid "Enabled"
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:293
msgid "Enabling %s service" msgid "Enabling %s service"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:201 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:224
msgid "Error running custom user file '%s'!" msgid "Error running custom user file '%s'!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:130 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:162
msgid "" msgid ""
"FW Mask used by the service. High mask is used to avoid conflict with SQM/" "FW Mask used by the service. High mask is used to avoid conflict with SQM/"
"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:198 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:221
msgid "Failed to reload '%s'!" msgid "Failed to reload '%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:220
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:203 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:226
msgid "Failed to set up any gateway!" msgid "Failed to set up any gateway!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:106 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:138
msgid "Force the ICMP protocol interface." msgid "Force the ICMP protocol interface."
msgstr "" msgstr ""
@ -171,39 +172,51 @@ msgstr ""
msgid "Grant UCI and file access for luci-app-pbr" msgid "Grant UCI and file access for luci-app-pbr"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:85 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:117
msgid "IPv6 Support" msgid "IPv6 Support"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:94 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:126
msgid "Ignored Interfaces" msgid "Ignored Interfaces"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:102 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:134
msgid "Insert" msgid "Insert"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:161 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233
msgid "Insertion failed for IPv4 for policy %s"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:232
msgid "Insertion failed for both IPv4 and IPv6 for policy %s"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:178
msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:210 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:242
msgid "Interface" msgid "Interface"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:163 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:195
msgid "Local addresses / devices" msgid "Local addresses / devices"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:168 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:200
msgid "Local ports" msgid "Local ports"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:161 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230
msgid "Mismatched IP family between in policy %s"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:193
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:149 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:181
msgid "" msgid ""
"Name, interface and at least one other field are required. Multiple local " "Name, interface and at least one other field are required. Multiple local "
"and remote addresses/devices/domains and ports can be space separated. " "and remote addresses/devices/domains and ports can be space separated. "
@ -211,47 +224,63 @@ msgid ""
"fields are left blank." "fields are left blank."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:107 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:139
msgid "No Change" msgid "No Change"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:140 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:157
msgid "Not installed or not found" msgid "Not installed or not found"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:44 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:67
msgid "Output verbosity" msgid "Output verbosity"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:239 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:271
msgid "Path" msgid "Path"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:68 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:100
msgid "Please check the %sREADME%s before changing this option." msgid "Please check the %sREADME%s before changing this option."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:148 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:182
msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:183
msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:181
msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:180
msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:180
msgid "Policies" msgid "Policies"
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:218
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:194 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:217
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:193 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216
msgid "Policy '%s' has no source/destination parameters!" msgid "Policy '%s' has no source/destination parameters!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:33 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:56
msgid "Policy Based Routing - Configuration" msgid "Policy Based Routing - Configuration"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:116 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:133
msgid "Policy Based Routing - Status" msgid "Policy Based Routing - Status"
msgstr "" msgstr ""
@ -259,233 +288,251 @@ msgstr ""
msgid "Policy Routing" msgid "Policy Routing"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:196 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:217
msgid "Policy processing error (%s)!"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:185
msgid "Protocol" msgid "Protocol"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:174 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206
msgid "Remote addresses / domains" msgid "Remote addresses / domains"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:179 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:211
msgid "Remote ports" msgid "Remote ports"
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:227
msgid "Resolver %s"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210
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:160 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:177
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:185 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:208
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:186 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:209
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:243 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275
msgid "Restart" msgid "Restart"
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:271
msgid "Restarting %s service" msgid "Restarting %s service"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:99 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:131
msgid "Rule Create option" msgid "Rule Create option"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:228 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:260
msgid "" msgid ""
"Run the following user files after setting up but before restarting DNSMASQ. " "Run the following user files after setting up but before restarting DNSMASQ. "
"See the %sREADME%s for details." "See the %sREADME%s for details."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:121 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:138
msgid "Running (version: %s using iptables)" msgid "Running (version: %s using iptables)"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:124 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:141
msgid "Running (version: %s using nft)" msgid "Running (version: %s using nft)"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:127 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:144
msgid "Running (version: %s)" msgid "Running (version: %s)"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:52 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:75
msgid "See the %sREADME%s for details." msgid "See the %sREADME%s for details."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:100 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:132
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:300 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:332
msgid "Service Control" msgid "Service Control"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:205 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235
msgid "Service Errors" msgid "Service Errors"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:124 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:156
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:129 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:161
msgid "Service FW Mask" msgid "Service FW Mask"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:148 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:165
msgid "Service Gateways" msgid "Service Gateways"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:117 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:134
msgid "Service Status" msgid "Service Status"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:164 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:185
msgid "Service Warnings" msgid "Service Warnings"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:218 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:250
msgid "" msgid ""
"Set DSCP tags (in range between 1 and 63) for specific interfaces. See the " "Set DSCP tags (in range between 1 and 63) for specific interfaces. See the "
"%sREADME%s for details." "%sREADME%s for details."
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:228
msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:264
msgid "Start" msgid "Start"
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:260
msgid "Starting %s service" msgid "Starting %s service"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:122 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:154
msgid "" msgid ""
"Starting (WAN) FW Mark for marks used by the service. High starting mark is " "Starting (WAN) FW Mark for marks used by the service. High starting mark is "
"used to avoid conflict with SQM/QoS. Change with caution together with" "used to avoid conflict with SQM/QoS. Change with caution together with"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:116 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:148
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:254 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286
msgid "Stop" msgid "Stop"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:135 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:152
msgid "Stopped (Disabled)" msgid "Stopped (Disabled)"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:132 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:149
msgid "Stopped (version: %s)" msgid "Stopped (version: %s)"
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:282
msgid "Stopping %s service" msgid "Stopping %s service"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:51 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:74
msgid "Strict enforcement" msgid "Strict enforcement"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:55 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:78
msgid "Strictly enforce policies when their gateway is down" msgid "Strictly enforce policies when their gateway is down"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:89 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:121
msgid "Supported Interfaces" msgid "Supported Interfaces"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:144 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:176
msgid "Supported Protocols" msgid "Supported Protocols"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:46 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:69
msgid "Suppress/No output" msgid "Suppress/No output"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:200 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:223
msgid "Syntax error in custom user file '%s'!" msgid "Syntax error in custom user file '%s'!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:149 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:166
msgid "The %s indicates default gateway. See the %sREADME%s for details." msgid "The %s indicates default gateway. See the %sREADME%s for details."
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:60 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:86
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:63 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:92
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:66 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:98
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:189 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:212
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:188 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211
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:190 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:83
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:89
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:95
msgid "The %s support is unknown."
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:213
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:191 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:214
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:192 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:215
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:212 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244
msgid "Unknown Error!" msgid "Unknown Error!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:171 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:194
msgid "Unknown Warning!" msgid "Unknown Warning!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:202 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:229
msgid "Unknown packet mark for interface '%s'"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:231
msgid "Unknown protocol in policy %s"
msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:225
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!"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:70 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:102
msgid "Use resolver set support for domains" msgid "Use resolver set support for domains"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:48 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:71
msgid "Verbose output" msgid "Verbose output"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:121 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:153
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:131 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:163
msgid "WAN Table FW Mark" msgid "WAN Table FW Mark"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:115 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:147
msgid "WAN Table ID" msgid "WAN Table ID"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:42 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:65
msgid "Web UI Configuration" msgid "Web UI Configuration"
msgstr "" msgstr ""
#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:192 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:224
#: 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:225
msgid "all" msgid "all"
msgstr "" msgstr ""