summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-app-pbr/Makefile2
-rw-r--r--applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js48
-rw-r--r--applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js42
-rw-r--r--applications/luci-app-pbr/po/templates/pbr.pot301
4 files changed, 252 insertions, 141 deletions
diff --git a/applications/luci-app-pbr/Makefile b/applications/luci-app-pbr/Makefile
index ad7096e602..9369bae9a9 100644
--- a/applications/luci-app-pbr/Makefile
+++ b/applications/luci-app-pbr/Makefile
@@ -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.
diff --git a/applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js b/applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js
index 3eb04d0dff..fbe8696c28 100644
--- a/applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js
+++ b/applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js
@@ -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 />";
diff --git a/applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js b/applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js
index 32bc6cb2de..e2d9d7b9b2 100644
--- a/applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js
+++ b/applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js
@@ -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(
diff --git a/applications/luci-app-pbr/po/templates/pbr.pot b/applications/luci-app-pbr/po/templates/pbr.pot
index c2e3c22845..3f6f4e771b 100644
--- a/applications/luci-app-pbr/po/templates/pbr.pot
+++ b/applications/luci-app-pbr/po/templates/pbr.pot
@@ -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 ""