luci-app-pbr: update to 1.0.1-1

* add more error/warning messages
* better error/ubus error handling

Signed-off-by: Stan Grishin <stangri@melmac.ca>
This commit is contained in:
Stan Grishin 2022-12-19 03:58:01 +00:00
parent a27d2dbc32
commit 54c3ba32f9
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_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_DESCRIPTION:=Provides Web UI for Policy Based Routing Service.

View file

@ -111,8 +111,25 @@ var status = baseclass.extend({
]).then(function (data) {
// var replyStatus = data[0];
// var replyGateways = data[1];
var reply = data[0][pkg.Name];
var reply;
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 statusTitle = E('label', { class: 'cbi-value-title' }, _("Service Status"));
if (reply.version) {
@ -159,13 +176,19 @@ var status = baseclass.extend({
var textLabelsTable = {
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."),
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 text = "";
(reply.warnings).forEach(element => {
if (element.id && textLabelsTable[element.id]) {
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
if (element.id !== 'warningPolicyProcessCMD') {
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
}
}
else {
text += _("Unknown Warning!") + "<br />";
@ -180,8 +203,8 @@ var status = baseclass.extend({
if (reply.errors && reply.errors.length) {
var textLabelsTable = {
errorConfigValidation: _("Config (%s) validation failure!").format('/etc/config/' + pkg.Name),
errorNoIpFull: _("%s binary cannot be found!").formate('ip-full'),
errorNoIptables: _("%s binary cannot be found!").formate('iptables'),
errorNoIpFull: _("%s binary cannot be found!").format('ip-full'),
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')),
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')),
@ -193,20 +216,29 @@ var status = baseclass.extend({
errorPolicyNoSrcDest: _("Policy '%s' has no source/destination parameters!"),
errorPolicyNoInterface: _("Policy '%s' has no assigned interface!"),
errorPolicyUnknownInterface: _("Policy '%s' has an unknown interface!"),
errorPolicyProcess: _("Policy processing error (%s)!"),
errorPolicyProcessCMD: _("%s"),
errorFailedSetup: _("Failed to set up '%s'!"),
errorFailedReload: _("Failed to reload '%s'!"),
errorUserFileNotFound: _("Custom user file '%s' not found or empty!"),
ererrorUserFileSyntax: _("Syntax error in 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!"),
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 text = "";
(reply.errors).forEach(element => {
if (element.id && textLabelsTable[element.id]) {
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
if (element.id !== 'errorPolicyProcessCMD') {
text += (textLabelsTable[element.id]).format(element.extra || ' ') + "<br />";
}
}
else {
text += _("Unknown Error!") + "<br />";

View file

@ -25,10 +25,33 @@ return view.extend({
L.resolveDefault(pbr.getInterfaces(), {}),
L.resolveDefault(pbr.getPlatformSupport(), {}),
]).then(function (data) {
var arrInterfaces = data[0][pkg.Name].interfaces;
var replyPlatform = data[1][pkg.Name];
var arrInterfaces;
var replyPlatform;
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();
m = new form.Map(pkg.Name, _("Policy Based Routing - Configuration"));
@ -56,13 +79,22 @@ return view.extend({
o.default = "1";
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 />"
}
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 />"
}
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 += _("Please check the %sREADME%s before changing this option.").format(

View file

@ -1,169 +1,170 @@
msgid ""
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"
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
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206
#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207
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:61
msgid ""
"%sWARNING:%s Please make sure to check the %sREADME%s before changing "
"anything in this section! Change any of the settings below with extreme "
"caution!%s"
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:74
#: 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:106
msgid "AdGuardHome ipset"
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"
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"
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 ""
"Adds 'ignore' to the list of interfaces for policies. See the %sREADME%s for "
"details."
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"
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 ""
"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 "
"have dev option other than tun* or tap*."
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 ""
"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 "
"the router."
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"
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"
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"
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!"
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."
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"
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!"
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"
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"
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"
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"
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:86
#: 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:103
#: 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:171
msgid "Disabled"
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"
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."
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:78
#: 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:110
msgid "Dnsmasq ipset"
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:82
#: 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:114
msgid "Dnsmasq nft set"
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"
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"
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:140
#: 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:235
#: 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:172
#: 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:267
msgid "Enabled"
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"
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'!"
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 ""
"FW Mask used by the service. High mask is used to avoid conflict with SQM/"
"QoS. Change with caution together with"
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'!"
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'!"
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!"
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."
msgstr ""
@ -171,39 +172,51 @@ msgstr ""
msgid "Grant UCI and file access for luci-app-pbr"
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"
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"
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"
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."
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"
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"
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"
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"
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 ""
"Name, interface and at least one other field are required. Multiple local "
"and remote addresses/devices/domains and ports can be space separated. "
@ -211,47 +224,63 @@ msgid ""
"fields are left blank."
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"
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"
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"
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"
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."
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"
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!"
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!"
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!"
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"
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"
msgstr ""
@ -259,233 +288,251 @@ msgstr ""
msgid "Policy Routing"
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:217
msgid "Protocol"
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"
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"
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!"
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."
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 ""
"Resolver set support (%s) requires ipset, but ipset binary cannot be found!"
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 ""
"Resolver set support (%s) requires nftables, but nft binary cannot be found!"
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"
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"
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"
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 ""
"Run the following user files after setting up but before restarting DNSMASQ. "
"See the %sREADME%s for details."
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)"
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)"
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)"
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."
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."
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"
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"
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:129
#: 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:161
msgid "Service FW Mask"
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"
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"
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"
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 ""
"Set DSCP tags (in range between 1 and 63) for specific interfaces. See the "
"%sREADME%s for details."
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"
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"
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 ""
"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"
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."
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"
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)"
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)"
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"
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"
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"
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"
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"
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"
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'!"
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."
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:63
#: 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:86
#: 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:98
msgid "The %s is not supported on this system."
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!"
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!"
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!"
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!"
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'!"
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!"
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!"
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 ""
"Use of 'curl' is detected in custom user file '%s', but 'curl' isn't "
"installed!"
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"
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"
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:131
#: 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:163
msgid "WAN Table FW Mark"
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"
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"
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:193
#: 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:225
msgid "all"
msgstr ""