luci-app-pbr: update to 1.2.0-r2
authorStan Grishin <[email protected]>
Tue, 7 Oct 2025 22:40:15 +0000 (22:40 +0000)
committerStan Grishin <[email protected]>
Tue, 7 Oct 2025 22:40:54 +0000 (22:40 +0000)
* sync with principal package

Signed-off-by: Stan Grishin <[email protected]>
applications/luci-app-pbr/Makefile
applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js
applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js
applications/luci-app-pbr/po/templates/pbr.pot
applications/luci-app-pbr/root/usr/libexec/rpcd/luci.pbr

index 0fadc1b1fd36368e8de33a9e0d56fdf5ba1559f3..ff4abf76f7e893b1740bc86ae0118e08d919b8fe 100644 (file)
@@ -6,16 +6,14 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=luci-app-pbr
 PKG_LICENSE:=AGPL-3.0-or-later
 PKG_MAINTAINER:=Stan Grishin <[email protected]>
-PKG_VERSION:=1.1.8
-PKG_RELEASE:=32
+PKG_VERSION:=1.2.0
+PKG_RELEASE:=2
 
 LUCI_TITLE:=Policy Based Routing Service Web UI
 LUCI_URL:=https://github.com/stangri/luci-app-pbr/
 LUCI_DESCRIPTION:=Provides Web UI for Policy Based Routing Service.
 LUCI_DEPENDS:=+luci-base +jsonfilter +pbr
 
-PKG_PROVIDES:=luci-app-vpnbypass luci-app-vpn-policy-routing
-
 define Package/$(PKG_NAME)/config
 # shown in make menuconfig <Help>
 help
index 18f9f2bc770b286edf5e7008025e8bb589ba125d..6820d9339caf3f9c4daf3ae092f7de67e55aaf6b 100644 (file)
@@ -11,10 +11,10 @@ var pkg = {
                return "pbr";
        },
        get LuciCompat() {
-               return 14;
+               return 17;
        },
        get ReadmeCompat() {
-               return "1.1.8";
+               return "1.2.0";
        },
        get URL() {
                return (
@@ -44,6 +44,29 @@ var pkg = {
                                : template.format(info || " ")) + "<br />"
                );
        },
+       buildGatewayText: function (gw) {
+               const gateways = Array.isArray(gw) ? gw : Object.values(gw);
+               const lines = gateways.map((g) => {
+                       const iface = g.name;
+                       if (!iface) return "";
+                       const dev_ipv4 = g.device_ipv4;
+                       const gw_ipv4 = g.gateway_ipv4;
+                       const dev_ipv6 = g.device_ipv6;
+                       const gw_ipv6 = g.gateway_ipv6;
+                       const default_gw = g.default;
+                       const parts = [iface];
+                       if (dev_ipv4 && dev_ipv4 !== iface) parts.push(dev_ipv4);
+                       if (gw_ipv4) parts.push(gw_ipv4);
+                       if (gw_ipv6) {
+                               if (dev_ipv6 && dev_ipv6 !== iface) parts.push(dev_ipv6);
+                               parts.push(gw_ipv6);
+                       }
+                       let line = parts.join("/");
+                       if (default_gw) line += " ✓";
+                       return line;
+               });
+               return lines.join("<br />");
+       },
 };
 
 var getGateways = rpc.declare({
@@ -121,9 +144,9 @@ var status = baseclass.extend({
                return Promise.all([
                        L.resolveDefault(getInitStatus(pkg.Name), {}),
                        L.resolveDefault(getUbusInfo(pkg.Name), {}),
-               ]).then(function (data) {
+               ]).then(function ([initStatus, ubusInfo]) {
                        var reply = {
-                               status: data[0]?.[pkg.Name] || {
+                               status: initStatus?.[pkg.Name] || {
                                        enabled: null,
                                        running: null,
                                        running_iptables: null,
@@ -134,8 +157,9 @@ var status = baseclass.extend({
                                        packageCompat: 0,
                                        rpcdCompat: 0,
                                },
-                               ubus: data[1]?.[pkg.Name]?.instances?.main?.data || {
+                               ubus: ubusInfo?.[pkg.Name]?.instances?.main?.data || {
                                        packageCompat: 0,
+                                       gateways: [],
                                        errors: [],
                                        warnings: [],
                                },
@@ -200,13 +224,13 @@ var status = baseclass.extend({
                        ]);
 
                        var gatewaysDiv = [];
-                       if (reply.status.gateways) {
+                       if (reply.ubus.gateways) {
                                var gatewaysTitle = E(
                                        "label",
                                        { class: "cbi-value-title" },
                                        _("Service Gateways")
                                );
-                               text =
+                               var description =
                                        _(
                                                "The %s indicates default gateway. See the %sREADME%s for details."
                                        ).format(
@@ -221,8 +245,13 @@ var status = baseclass.extend({
                                                "<a href='" + pkg.DonateURL + "' target='_blank'>",
                                                "</a>"
                                        );
-                               var gatewaysDescr = E("div", { class: "cbi-value-description" }, text);
-                               var gatewaysText = E("div", {}, reply.status.gateways);
+                               var gatewaysDescr = E(
+                                       "div",
+                                       { class: "cbi-value-description" },
+                                       description
+                               );
+                               text = pkg.buildGatewayText(reply.ubus.gateways);
+                               var gatewaysText = E("div", {}, text);
                                var gatewaysField = E("div", { class: "cbi-value-field" }, [
                                        gatewaysText,
                                        gatewaysDescr,
@@ -284,6 +313,10 @@ var status = baseclass.extend({
                                                        "</a>"
                                                )
                                        ),
+                                       warningSummary: _("Warnings encountered, please check %s"),
+                                       warningIncompatibleDHCPOption6: _(
+                                               "Incompatible DHCP Option 6 for interface %s"
+                                       ),
                                };
                                var warningsTitle = E(
                                        "label",
@@ -298,6 +331,10 @@ var status = baseclass.extend({
                                                text += _("Unknown warning") + "<br />";
                                        }
                                });
+                               text += _("Warnings encountered, please check the %sREADME%s").format(
+                                       '<a href="' + pkg.URL + '#WarningMessagesDetails" target="_blank">',
+                                       "</a>!<br />"
+                               );
                                var warningsText = E("div", { class: "cbi-value-description" }, text);
                                var warningsField = E(
                                        "div",
@@ -332,11 +369,11 @@ var status = baseclass.extend({
                                        errorNoWanGateway: _(
                                                "The %s service failed to discover WAN gateway"
                                        ).format(pkg.Name),
-                                       errorNoWanInterface: _(
-                                               "The %s interface not found, you need to set the 'pbr.config.procd_wan_interface' option"
+                                       errorNoUplinkInterface: _(
+                                               "The %s interface not found, you need to set the 'pbr.config.uplink_interface' option"
                                        ),
-                                       errorNoWanInterfaceHint: _(
-                                               "Refer to https://docs.openwrt.melmac.ca/pbr/#procd_wan_interface"
+                                       errorNoUplinkInterfaceHint: _(
+                                               "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface"
                                        ),
                                        errorIpsetNameTooLong: _(
                                                "The ipset name '%s' is longer than allowed 31 characters"
@@ -416,6 +453,10 @@ var status = baseclass.extend({
                                        errorInterfaceRoutingUnknownDevType: _(
                                                "Unknown IPv6 Link type for device '%s'"
                                        ),
+                                       errorMktempFileCreate: _(
+                                               "Failed to create temporary file with mktemp mask: '%s'"
+                                       ),
+                                       errorSummary: _("Errors encountered, please check %s"),
                                };
                                var errorsTitle = E(
                                        "label",
@@ -431,7 +472,7 @@ var status = baseclass.extend({
                                        }
                                });
                                text += _("Errors encountered, please check the %sREADME%s").format(
-                                       '<a href="' + pkg.URL + '" target="_blank">',
+                                       '<a href="' + pkg.URL + '#ErrorMessagesDetails" target="_blank">',
                                        "</a>!<br />"
                                );
                                var errorsText = E("div", { class: "cbi-value-description" }, text);
index 1e76efc1716fdc70e3b7ada2284622b1c23ecd16..9ad241134b095df98cc9ef8c9b4a1b5df44795a2 100644 (file)
@@ -196,10 +196,10 @@ return view.extend({
                o = s.taboption(
                        "tab_advanced",
                        form.Value,
-                       "wan_mark",
-                       _("WAN Table FW Mark"),
+                       "uplink_mark",
+                       _("Uplink Interface Table FW Mark"),
                        _(
-                               "Starting (WAN) FW Mark for marks used by the service. High starting mark is " +
+                               "Starting (Uplink Interface) FW Mark for marks used by the service. High starting mark is " +
                                        "used to avoid conflict with SQM/QoS. Change with caution together with"
                        ) +
                                " " +
@@ -373,6 +373,12 @@ return view.extend({
                        element === "ignore" || o.value(element);
                });
 
+               o = s.option(form.Value, "dest_dns_port", _("Remote DNS Port"));
+               o.optional = true;
+               o.rmempty = true;
+               o.datatype = "port";
+               o.default = "53";
+
                s = m.section(
                        form.NamedSection,
                        "config",
index 75d6ff8c39c38e7c82186659a0b027f569027971..0af3293e9db33afad75c37b9fe80ccc58ee5fa66 100644 (file)
@@ -1,12 +1,12 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:277
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398
 msgid "%s"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:319
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356
 msgid "%s binary cannot be found"
 msgstr ""
 
@@ -67,7 +67,7 @@ msgstr ""
 msgid "Chain"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446
 msgid "Command failed: '%s'"
 msgstr ""
 
@@ -75,7 +75,7 @@ msgstr ""
 msgid "Condensed output"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:316
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353
 msgid "Config (%s) validation failure"
 msgstr ""
 
@@ -83,11 +83,11 @@ msgstr ""
 msgid "Controls both system log and console output verbosity."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:402
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:408
 msgid "Custom User File Includes"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:364
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401
 msgid "Custom user file '%s' not found or empty"
 msgstr ""
 
@@ -95,11 +95,11 @@ msgstr ""
 msgid "DNS Policies"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:393
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:399
 msgid "DSCP Tag"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:380
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:386
 msgid "DSCP Tagging"
 msgstr ""
 
@@ -107,15 +107,15 @@ msgstr ""
 msgid "Default ICMP Interface"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451
 msgid "Default fw4 chain '%s' is missing"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450
 msgid "Default fw4 table '%s' is missing"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:544
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:585
 msgid "Disable"
 msgstr ""
 
@@ -125,7 +125,7 @@ msgstr ""
 msgid "Disabled"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:579
 msgid "Disabling %s service"
 msgstr ""
 
@@ -133,7 +133,7 @@ msgstr ""
 msgid "Display these protocols in protocol column in Web UI."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:274
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:303
 msgid ""
 "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own "
 "confdir"
@@ -151,11 +151,11 @@ msgstr ""
 msgid "Do not enforce policies when their gateway is down"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:591
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:632
 msgid "Donate to the Project"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:525
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:566
 msgid "Enable"
 msgstr ""
 
@@ -163,19 +163,23 @@ msgstr ""
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:243
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:274
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:354
-#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:415
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:421
 msgid "Enabled"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:519
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:560
 msgid "Enabling %s service"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:366
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403
 msgid "Error running custom user file '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459
+msgid "Errors encountered, please check %s"
+msgstr ""
+
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474
 msgid "Errors encountered, please check the %sREADME%s"
 msgstr ""
 
@@ -185,31 +189,35 @@ msgid ""
 "QoS. Change with caution together with"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457
+msgid "Failed to create temporary file with mktemp mask: '%s'"
+msgstr ""
+
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442
 msgid "Failed to download '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440
 msgid "Failed to download '%s', HTTPS is not supported"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435
 msgid "Failed to install fw4 nft file '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:363
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400
 msgid "Failed to reload '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431
 msgid "Failed to resolve '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:362
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399
 msgid "Failed to set up '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407
 msgid "Failed to set up any gateway"
 msgstr ""
 
@@ -237,11 +245,15 @@ msgstr ""
 msgid "Inactive (Disabled)"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:318
+msgid "Incompatible DHCP Option 6 for interface %s"
+msgstr ""
+
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448
 msgid "Incompatible custom user file detected '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:271
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:300
 msgid ""
 "Incompatible nft calls detected in user include file, disabling fw4 nft file "
 "support"
@@ -251,15 +263,15 @@ msgstr ""
 msgid "Insert"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425
 msgid "Insertion failed for IPv4 for policy '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:385
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422
 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:246
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275
 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option."
 msgstr ""
 
@@ -267,22 +279,22 @@ msgstr ""
 msgid "Interface"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393
 msgid "Interface '%s' has no assigned DNS"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:240
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:269
 msgid ""
 "Internal version mismatch (package: %s, luci app: %s, luci rpcd: %s), you "
 "may need to update packages or reboot the device, please check the "
 "%sREADME%s."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:262
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:291
 msgid "Invalid OpenVPN config for %s interface"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433
 msgid "Invalid OpenVPN config for '%s' interface"
 msgstr ""
 
@@ -295,7 +307,7 @@ msgstr ""
 msgid "Local ports"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:379
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416
 msgid "Mismatched IP family between in policy '%s'"
 msgstr ""
 
@@ -327,7 +339,7 @@ msgstr ""
 msgid "No Change"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:193
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:217
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58
 msgid "Not installed or not found"
 msgstr ""
@@ -336,12 +348,12 @@ msgstr ""
 msgid "Output verbosity"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:420
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:426
 msgid "Path"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:220
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:599
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:640
 msgid "Please %sdonate%s to support development of this project."
 msgstr ""
 
@@ -349,24 +361,24 @@ msgstr ""
 msgid "Please check the %sREADME%s before changing this option."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:278
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307
 msgid ""
 "Please set 'dhcp.%%s.force=1' to speed up service start-up %s(more info)%s"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:256
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:285
 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:259
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:288
 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:253
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:282
 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%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:279
 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'"
 msgstr ""
 
@@ -374,23 +386,23 @@ msgstr ""
 msgid "Policies"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396
 msgid "Policy '%s' has an unknown interface"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391
 msgid "Policy '%s' has no assigned DNS"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390
 msgid "Policy '%s' has no assigned interface"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388
 msgid "Policy '%s' has no source/destination parameters"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437
 msgid ""
 "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode"
 msgstr ""
@@ -403,7 +415,7 @@ msgstr ""
 msgid "Policy Based Routing - Configuration"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:166
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:190
 msgid "Policy Based Routing - Status"
 msgstr ""
 
@@ -415,18 +427,22 @@ msgstr ""
 msgid "Protocol"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429
 msgid "Received empty tid/mark or interface name when setting up routing"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:339
-msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#procd_wan_interface"
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376
+msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface"
 msgstr ""
 
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:368
 msgid "Remote DNS"
 msgstr ""
 
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:376
+msgid "Remote DNS Port"
+msgstr ""
+
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:292
 msgid "Remote addresses / domains"
 msgstr ""
@@ -435,37 +451,37 @@ msgstr ""
 msgid "Remote ports"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452
 msgid "Required binary '%s' is missing"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:371
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408
 msgid "Resolver '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:364
 msgid "Resolver set (%s) is not supported on this system"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:243
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:272
 msgid "Resolver set (%s) is not supported on this system."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:321
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358
 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:324
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361
 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:487
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:528
 msgid "Restart"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:481
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:522
 msgid "Restarting %s service"
 msgstr ""
 
@@ -473,13 +489,13 @@ msgstr ""
 msgid "Rule Create option"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:404
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:410
 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:175
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:199
 msgid "Running"
 msgstr ""
 
@@ -491,11 +507,11 @@ msgstr ""
 msgid "Select Add for -A/add and Insert for -I/Insert."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:570
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:611
 msgid "Service Control"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464
 msgid "Service Errors"
 msgstr ""
 
@@ -504,59 +520,60 @@ msgstr ""
 msgid "Service FW Mask"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:231
 msgid "Service Gateways"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:170
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:194
 msgid "Service Status"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:291
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:324
 msgid "Service Warnings"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:382
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:388
 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:373
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410
 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:509
 msgid "Start"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:503
 msgid "Starting %s service"
 msgstr ""
 
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:202
 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"
+"Starting (Uplink Interface) 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/status/include/72_pbr.js:63
 msgid "Status"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:506
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:547
 msgid "Stop"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:189
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:213
 msgid "Stopped (Disabled)."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:187
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211
 msgid "Stopped."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:500
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:541
 msgid "Stopping %s service"
 msgstr ""
 
@@ -580,29 +597,29 @@ msgstr ""
 msgid "Suppress/No output"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:365
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402
 msgid "Syntax error in custom user file '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235
 msgid "The %s indicates default gateway. See the %sREADME%s for details."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:336
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:373
 msgid ""
-"The %s interface not found, you need to set the "
-"'pbr.config.procd_wan_interface' option"
+"The %s interface not found, you need to set the 'pbr.config."
+"uplink_interface' option"
 msgstr ""
 
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:96
 msgid "The %s is not supported on this system."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:333
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370
 msgid "The %s service failed to discover WAN gateway"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367
 msgid "The %s service is currently disabled"
 msgstr ""
 
@@ -610,39 +627,39 @@ msgstr ""
 msgid "The %s support is unknown."
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:294
 msgid "The WebUI application (luci-app-pbr) is outdated, please update it"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444
 msgid "The file:// schema requires curl, but it's not detected on this system"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:342
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:379
 msgid "The ipset name '%s' is longer than allowed 31 characters"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:345
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382
 msgid "The nft set name '%s' is longer than allowed 255 characters"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:268
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:297
 msgid "The principal package (pbr) is outdated, please update it"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:348
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:385
 msgid "Unexpected exit or service termination: '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454
 msgid "Unknown IPv6 Link type for device '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427
 msgid "Unknown entry in policy '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471
 msgid "Unknown error"
 msgstr ""
 
@@ -650,19 +667,23 @@ msgstr ""
 msgid "Unknown message"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413
 msgid "Unknown packet mark for interface '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419
 msgid "Unknown protocol in policy '%s'"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:298
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331
 msgid "Unknown warning"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:368
+#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:200
+msgid "Uplink Interface Table FW Mark"
+msgstr ""
+
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405
 msgid ""
 "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't "
 "installed"
@@ -680,15 +701,22 @@ msgstr ""
 msgid "Version"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:173
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:197
 msgid "Version %s"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:200
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:223
 msgid "WAN Table FW Mark"
 msgstr ""
 
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:316
+msgid "Warnings encountered, please check %s"
+msgstr ""
+
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334
+msgid "Warnings encountered, please check the %sREADME%s"
+msgstr ""
+
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:61
 msgid "Web UI Configuration"
 msgstr ""
@@ -697,17 +725,17 @@ msgstr ""
 msgid "all"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:179
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:203
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:44
 msgid "fw4 nft file mode"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:177
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:201
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:42
 msgid "iptables mode"
 msgstr ""
 
-#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:181
+#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:205
 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46
 msgid "nft mode"
 msgstr ""
index e5ce4fb4eea0ccf5d87d20665a77cfcf800f9c37..2cb9b33a540ea198b51a15c445103e2788a44e64 100755 (executable)
@@ -12,8 +12,8 @@
 # ubus -S call luci.pbr getGateways '{"name": "pbr" }'
 # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }'
 
-readonly rpcdCompat='14'
-readonly pbrFunctionsFile='/etc/init.d/pbr'
+readonly rpcdCompat='17'
+readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr"
 if [ -s "$pbrFunctionsFile" ]; then
 # shellcheck source=../../../../../pbr/files/etc/init.d/pbr
        . "$pbrFunctionsFile"
@@ -192,11 +192,11 @@ get_supported_interfaces() {
        config_get_bool webui_show_ignore_target 'config' 'webui_show_ignore_target' '0'
        config_get ignored_interface             'config' 'ignored_interface'
        config_get supported_interface           'config' 'supported_interface'
-       config_get procd_wan_interface           'config' 'procd_wan_interface'  'wan'
-       config_get procd_wan6_interface          'config' 'procd_wan6_interface' 'wan6'
+       config_get uplink_interface              'config' 'uplink_interface'  'wan'
+       config_get uplink_interface6             'config' 'uplink_interface6' 'wan6'
        local i
-       wanIface4="$procd_wan_interface"
-       wanIface6="$procd_wan6_interface"
+       wanIface4="$uplink_interface"
+       wanIface6="$uplink_interface6"
        config_load 'firewall'
        config_foreach _find_firewall_wan_zone 'zone'
        for i in $(uci_get 'firewall' "$firewallWanZone" 'network'); do