diff options
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 "" |