From 9dbc8dc2179f1ba543da46be5fc7b28499dbd2ca Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 24 Jan 2025 19:38:03 +0000 Subject: [PATCH 001/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1f98310..9f893f2 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=5 +PKG_RELEASE:=6 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 4939f0f0898fe42d19f67348897a31207b968142 Mon Sep 17 00:00:00 2001 From: egc112 Date: Tue, 4 Feb 2025 12:48:29 +0100 Subject: [PATCH 002/185] luci-app-pbr: Ignore WireGuard Server if on ignored list This is the accompanying PR for: https://github.com/stangri/pbr/pull/29 This updates the help text, the read.me should probably also needs updating. As this PR changes previous behavior I am not sure if this is the optimal solution, so feel free to change/improve or discard this pull request. It only updates the template, the translations should also need updating not sure if that is done automatically? Signed-off-by: Erik Conijn --- Makefile | 2 +- po/templates/pbr.pot | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 9f893f2..6415ac3 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=6 +PKG_RELEASE:=7 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index cd347bf..33d8cd8 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -47,14 +47,15 @@ msgstr "" 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*." +"have dev option other than tun* or tap*, or have a WireGuard server which " +"also functions as a client (site-to-site)." msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:155 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." +"Allows to specify the list of interface names (lower case) to be ignored by " +"the service. Can be useful for an OpenVPN server. WireGuard servers, which " +"have a listenport, are handled automatically. So do not add those here." msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:43 From a621f290f0621530352b7b6b217cfd843529446d Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 6 Feb 2025 23:59:35 +0000 Subject: [PATCH 003/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9f893f2..80f092a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=6 +PKG_RELEASE:=8 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From c3b7d5403d1270c9210299baa4c1d2e160031793 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 9 Feb 2025 18:56:51 +0000 Subject: [PATCH 004/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 80f092a..6c2ef07 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=8 +PKG_RELEASE:=10 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From bde7b231f35a26927805667895f93f2130adb56f Mon Sep 17 00:00:00 2001 From: egc112 Date: Mon, 10 Feb 2025 12:43:04 +0100 Subject: [PATCH 005/185] luci-app-pbr: edit help text Change `listenport` to `listen_port` Signed-off-by: Erik Conijn --- po/templates/pbr.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 33d8cd8..9bbea67 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -55,7 +55,7 @@ msgstr "" msgid "" "Allows to specify the list of interface names (lower case) to be ignored by " "the service. Can be useful for an OpenVPN server. WireGuard servers, which " -"have a listenport, are handled automatically. So do not add those here." +"have a listen_port, are handled automatically. So do not add those here." msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:43 From 6cfcda445abd09f96cad5e3a18cc286a06f7856c Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 10 Feb 2025 21:49:53 +0000 Subject: [PATCH 006/185] fix docs link in README --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index facd562..6e83d50 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ # README -Documentation for this project is available at [https://docs.openwrt.melmac.net/luci-app-pbr/](https://docs.openwrt.melmac.net/luci-app-pbr/). - +Documentation for this project is available at [https://docs.openwrt.melmac.net/pbr/](https://docs.openwrt.melmac.net/pbr/). From 47acb865a101e4f71ddb75aad3b5d3b8e1364807 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 12 Feb 2025 00:18:56 +0000 Subject: [PATCH 007/185] wg server use cases update --- .../resources/view/pbr/overview.js | 15 ++- po/templates/pbr.pot | 101 +++++++++--------- 2 files changed, 63 insertions(+), 53 deletions(-) diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 0b35268..1e76efc 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -141,7 +141,11 @@ return view.extend({ _("Supported Interfaces"), _( "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*." + "Can be useful if your OpenVPN tunnels have dev option other than tun* or tap* or specific use cases " + + "of WireGuard servers. See the %sREADME%s for details." + ).format( + '', + "" ) ); o.optional = false; @@ -152,8 +156,13 @@ return view.extend({ "ignored_interface", _("Ignored Interfaces"), _( - "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." + "Allows to specify the list of interface names (lower case) to be ignored by the service. " + + "Can be useful for an OpenVPN server running on OpenWrt device. WireGuard servers, which " + + "have a listen_port defined, are handled automatically, do not add those here." + + "See the %sREADME%s for details." + ).format( + '', + "" ) ); o.optional = false; diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 9bbea67..4299682 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -25,15 +25,15 @@ msgstr "" msgid "AdGuardHome ipset" 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:177 msgid "Add" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:225 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:234 msgid "Add Ignore Target" 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:236 msgid "" "Adds 'ignore' to the list of interfaces for policies. See the %sREADME%s for " "details." @@ -47,22 +47,23 @@ msgstr "" 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*, or have a WireGuard server which " -"also functions as a client (site-to-site)." +"have dev option other than tun* or tap* or specific use cases of WireGuard " +"servers. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:155 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:159 msgid "" "Allows to specify the list of interface names (lower case) to be ignored by " -"the service. Can be useful for an OpenVPN server. WireGuard servers, which " -"have a listen_port, are handled automatically. So do not add those here." +"the service. Can be useful for an OpenVPN server running on OpenWrt device. " +"WireGuard servers, which have a listen_port defined, are handled " +"automatically, do not add those here.See the %sREADME%s for details." msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:43 msgid "Basic Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:312 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:321 msgid "Chain" msgstr "" @@ -82,7 +83,7 @@ msgstr "" msgid "Controls both system log and console output verbosity." 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:402 msgid "Custom User File Includes" msgstr "" @@ -90,19 +91,19 @@ msgstr "" msgid "Custom user file '%s' not found or empty" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:331 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:340 msgid "DNS Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:384 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:393 msgid "DSCP Tag" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:371 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:380 msgid "DSCP Tagging" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:176 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:185 msgid "Default ICMP Interface" msgstr "" @@ -120,7 +121,7 @@ msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:114 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:134 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:233 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:242 msgid "Disabled" msgstr "" @@ -128,7 +129,7 @@ msgstr "" msgid "Disabling %s service" 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:252 msgid "Display these protocols in protocol column in Web UI." msgstr "" @@ -159,10 +160,10 @@ msgid "Enable" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:135 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:234 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:265 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:345 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:406 +#: 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 msgid "Enabled" msgstr "" @@ -178,7 +179,7 @@ msgstr "" msgid "Errors encountered, please check the %sREADME%s" 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:219 msgid "" "FW Mask used by the service. High mask is used to avoid conflict with SQM/" "QoS. Change with caution together with" @@ -212,7 +213,7 @@ msgstr "" msgid "Failed to set up any gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:177 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:186 msgid "Force the ICMP protocol interface." msgstr "" @@ -224,7 +225,7 @@ msgstr "" msgid "IPv6 Support" msgstr "" -#: 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:157 msgid "Ignored Interfaces" msgstr "" @@ -246,7 +247,7 @@ msgid "" "support" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:169 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:178 msgid "Insert" msgstr "" @@ -262,7 +263,7 @@ msgstr "" msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:321 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:330 msgid "Interface" msgstr "" @@ -278,12 +279,12 @@ msgstr "" msgid "Invalid OpenVPN config for '%s' interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:271 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:352 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:280 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:361 msgid "Local addresses / devices" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:277 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:286 msgid "Local ports" msgstr "" @@ -295,12 +296,12 @@ msgstr "" msgid "Mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:269 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:349 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:278 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:358 msgid "Name" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:252 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:261 msgid "" "Name, interface and at least one other field are required. Multiple local " "and remote addresses/devices/domains and ports can be space separated. " @@ -308,14 +309,14 @@ msgid "" "fields are left blank. For more information on options, check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:333 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:342 msgid "" "Name, local address and remote DNS fields are required. Multiple local " "addresses/devices can be space separated. For more information on options, " "check the %sREADME%s." 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:188 msgid "No Change" msgstr "" @@ -328,7 +329,7 @@ msgstr "" msgid "Output verbosity" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:420 msgid "Path" msgstr "" @@ -362,7 +363,7 @@ msgstr "" 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:250 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:259 msgid "Policies" msgstr "" @@ -403,7 +404,7 @@ msgstr "" msgid "Policy Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:295 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:304 msgid "Protocol" msgstr "" @@ -415,15 +416,15 @@ msgstr "" msgid "Refer to https://docs.openwrt.melmac.net/pbr/#procd_wan_interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:359 +#: 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:283 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:292 msgid "Remote addresses / domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:289 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:298 msgid "Remote ports" msgstr "" @@ -461,11 +462,11 @@ msgstr "" msgid "Restarting %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:165 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:174 msgid "Rule Create option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:395 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:404 msgid "" "Run the following user files after setting up but before restarting DNSMASQ. " "See the %sREADME%s for details." @@ -479,7 +480,7 @@ msgstr "" msgid "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:166 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:175 msgid "Select Add for -A/add and Insert for -I/Insert." msgstr "" @@ -491,8 +492,8 @@ msgstr "" msgid "Service Errors" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:197 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:208 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:217 msgid "Service FW Mask" msgstr "" @@ -508,7 +509,7 @@ msgstr "" msgid "Service Warnings" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:373 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:382 msgid "" "Set DSCP tags (in range between 1 and 63) for specific interfaces. See the " "%sREADME%s for details." @@ -526,7 +527,7 @@ msgstr "" msgid "Starting %s service" msgstr "" -#: 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: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" @@ -564,7 +565,7 @@ msgstr "" msgid "Supported Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:242 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:251 msgid "Supported Protocols" msgstr "" @@ -668,8 +669,8 @@ msgstr "" msgid "Version %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:191 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:214 +#: 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 "" @@ -677,7 +678,7 @@ msgstr "" msgid "Web UI Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:304 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:313 msgid "all" msgstr "" From 9250b6ce4929de994e2398ba9cd37d0de816c1cb Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 17 Mar 2025 13:33:18 +0000 Subject: [PATCH 008/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6c2ef07..06184ae 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=10 +PKG_RELEASE:=12 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From fff8fdc753a0e0348e6d06be61124342247f8caf Mon Sep 17 00:00:00 2001 From: "Arthur K." Date: Mon, 7 Apr 2025 17:45:55 +0300 Subject: [PATCH 009/185] fix: don't resolve domain names in `is_running_iptables` check Signed-off-by: Arthur K. --- root/usr/libexec/rpcd/luci.pbr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 477137f..4d1651d 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -22,7 +22,7 @@ else fi # compatibility with old luci app versions -is_running_iptables() { iptables -t mangle -L | grep -q PBR_PREROUTING >/dev/null 2>&1; } +is_running_iptables() { iptables -t mangle -n -L | grep -q PBR_PREROUTING >/dev/null 2>&1; } is_running() { is_running_iptables || is_running_nft; } check_ipset() { { [ -n "$ipset" ] && "$ipset" help hash:net; } >/dev/null 2>&1; } check_agh_ipset() { From e924aa154b7d470a94fe6431dbcf106feba9e484 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 8 Apr 2025 00:35:22 +0000 Subject: [PATCH 010/185] version bump for bugfix --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 06184ae..3ce2e1e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=12 +PKG_RELEASE:=14 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 81fc5e45142590a6a91fd02f3f3bed8355d6d2f7 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 30 Apr 2025 03:38:06 +0000 Subject: [PATCH 011/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3ce2e1e..e5ec110 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=14 +PKG_RELEASE:=16 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 342588b4167a509945fb44f59babefa1a53283d0 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 20 May 2025 17:57:24 +0000 Subject: [PATCH 012/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e5ec110..d3e7f7a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=16 +PKG_RELEASE:=18 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From edf809670ac4cbdd086f8b4b729759e4f8d4df9d Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 27 May 2025 22:09:16 +0000 Subject: [PATCH 013/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d3e7f7a..4937405 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=18 +PKG_RELEASE:=20 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 40fc74ab70c75a66f9b7968c784b075527fb74a3 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 27 May 2025 22:55:29 +0000 Subject: [PATCH 014/185] Makefile license header update --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 4937405..44a5708 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -# Copyright 2017-2024 MOSSDeF, Stan Grishin (stangri@melmac.ca). -# This is free software, licensed under AGPL-3.0-or-later. +# SPDX-Identifier-License: AGPL-3.0-or-later +# Copyright 2017-2025 MOSSDeF, Stan Grishin (stangri@melmac.ca). include $(TOPDIR)/rules.mk From 90daf4b5d6777349c524b96837ec08778f1ea144 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 3 Jun 2025 20:01:13 +0000 Subject: [PATCH 015/185] versiom bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 44a5708..e261331 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=20 +PKG_RELEASE:=22 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 9a2a1b5db1d071642ad7cf35b4e514563570d5b6 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 3 Jun 2025 21:41:52 +0000 Subject: [PATCH 016/185] new labels --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 1 + po/templates/pbr.pot | 64 ++++++++++++---------- root/usr/libexec/rpcd/luci.pbr | 6 +- 4 files changed, 39 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index e261331..ccdd8de 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=22 +PKG_RELEASE:=25 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index d8b47bc..1d732ba 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -384,6 +384,7 @@ var status = baseclass.extend({ errorPolicyProcessInsertionFailedIpv4: _( "Insertion failed for IPv4 for policy '%s'" ), + errorPolicyProcessUnknownEntry: _("Unknown entry in policy '%s'"), errorInterfaceRoutingEmptyValues: _( "Received empty tid/mark or interface name when setting up routing" ), diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 4299682..c53bdbf 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -67,7 +67,7 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:406 msgid "Command failed: '%s'" msgstr "" @@ -107,15 +107,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:545 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:546 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:539 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:540 msgid "Disabling %s service" msgstr "" @@ -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:592 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:593 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 msgid "Enable" msgstr "" @@ -167,7 +167,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:521 msgid "Enabling %s service" msgstr "" @@ -175,7 +175,7 @@ msgstr "" msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -185,15 +185,15 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 msgid "Failed to install fw4 nft file '%s'" msgstr "" @@ -201,7 +201,7 @@ msgstr "" msgid "Failed to reload '%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:391 msgid "Failed to resolve '%s'" msgstr "" @@ -237,7 +237,7 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -275,7 +275,7 @@ msgstr "" msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -334,7 +334,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:215 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:600 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:601 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -383,7 +383,7 @@ msgstr "" msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -408,7 +408,7 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" @@ -428,7 +428,7 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:412 msgid "Required binary '%s' is missing" msgstr "" @@ -454,11 +454,11 @@ 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:488 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 msgid "Restarting %s service" msgstr "" @@ -484,11 +484,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:571 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:572 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 msgid "Service Errors" msgstr "" @@ -519,11 +519,11 @@ msgstr "" msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 msgid "Starting %s service" msgstr "" @@ -537,7 +537,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 msgid "Stop" msgstr "" @@ -549,7 +549,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:502 msgid "Stopping %s service" msgstr "" @@ -607,7 +607,7 @@ msgstr "" msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 msgid "The file:// schema requires curl, but it's not detected on this system" msgstr "" @@ -627,11 +627,15 @@ msgstr "" msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 +msgid "Unknown entry in policy '%s'" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Unknown error!" msgstr "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 4d1651d..7fed7af 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -11,7 +11,7 @@ # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly luciCompat='11' +readonly luciCompat='12' readonly pbrFunctionsFile='/etc/init.d/pbr' if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr @@ -120,7 +120,7 @@ get_init_status() { if [ -n "$errors" ]; then while read -r line; do if str_contains "$line" ' '; then - error_id="${line% *}" + error_id="${line%% *}" error_extra="${line#* }" else error_id="$line" @@ -139,7 +139,7 @@ EOF if [ -n "$warnings" ]; then while read -r line; do if str_contains "$line" ' '; then - warning_id="${line% *}" + warning_id="${line%% *}" warning_extra="${line#* }" else warning_id="$line" From 88270cf1874bcc167e57de17c760f9ff18affb26 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 5 Jun 2025 03:13:25 +0000 Subject: [PATCH 017/185] better errors/warnings handling --- Makefile | 2 +- root/usr/libexec/rpcd/luci.pbr | 50 +++++++++++++++++----------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index ccdd8de..ee1223a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=25 +PKG_RELEASE:=26 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 7fed7af..e604720 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -11,7 +11,7 @@ # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly luciCompat='12' +readonly luciCompat='13' readonly pbrFunctionsFile='/etc/init.d/pbr' if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr @@ -117,42 +117,42 @@ get_init_status() { json_add_string 'version' "$PKG_VERSION" json_add_string 'gateways' "$gateways" json_add_array 'errors' - if [ -n "$errors" ]; then - while read -r line; do - if str_contains "$line" ' '; then - error_id="${line%% *}" - error_extra="${line#* }" - else - error_id="$line" - unset error_extra - fi + while read -r line; do + if str_contains "$line" ' '; then + error_id="${line%% *}" + error_extra="${line#* }" + else + error_id="$line" + unset error_extra + fi + if [ -n "$error_id" ]; then json_add_object json_add_string 'id' "$error_id" json_add_string 'extra' "$error_extra" json_close_object - done < Date: Thu, 5 Jun 2025 16:57:51 +0000 Subject: [PATCH 018/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ee1223a..c44c4a0 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=26 +PKG_RELEASE:=28 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 4944ea5683fdce63856461b349ba78b74a8f579a Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 7 Jun 2025 04:38:51 +0000 Subject: [PATCH 019/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c44c4a0..ffaff1e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=28 +PKG_RELEASE:=29 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 459b86d01ce87b8dcad7f4ae1894fbc15a539c07 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 14 Jun 2025 09:33:15 +0000 Subject: [PATCH 020/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ffaff1e..20da983 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=29 +PKG_RELEASE:=30 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 18d0e0602ea006c2d801c65b56e3b2edefa7f015 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 18 Jun 2025 05:26:32 +0000 Subject: [PATCH 021/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 20da983..2e009f9 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=30 +PKG_RELEASE:=31 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 2829606838c3b64333b1e660d2630055bacdaa86 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 22 Jul 2025 00:17:40 +0000 Subject: [PATCH 022/185] improve readme --- README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6e83d50..72b16b2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,19 @@ -# README +# LuCI App for pbr -Documentation for this project is available at [https://docs.openwrt.melmac.net/pbr/](https://docs.openwrt.melmac.net/pbr/). +[![OpenWrt](https://img.shields.io/badge/OpenWrt-Compatible-blueviolet)](https://openwrt.org) +[![Web UI](https://img.shields.io/badge/Web_UI-Available-blue)](https://docs.openwrt.melmac.net/pbr/) +[![License](https://img.shields.io/badge/License-GPL--3.0-lightgrey)](https://github.com/stangri/luci-app-pbr/blob/master/LICENSE) + +LuCI interface for the `pbr` (policy-based routing) package. +Provides a visual way to manage traffic policies for routing over specific WAN or VPN interfaces. + +## Highlights + +- Intuitive Web UI with policy table +- Add/edit/delete rules by IP, port, MAC, domain +- Interface-specific status panel and logs +- Quick toggles for services and resolver settings +- Integrated with OpenWrtโ€™s service management + +๐Ÿ“š **Full documentation:** +[https://docs.openwrt.melmac.net/pbr/](https://docs.openwrt.melmac.net/pbr/) From 210c947966ae84d65b4bf7d46f1e14c7f925cc08 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 22 Jul 2025 00:21:44 +0000 Subject: [PATCH 023/185] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 72b16b2..646068e 100644 --- a/README.md +++ b/README.md @@ -15,5 +15,5 @@ Provides a visual way to manage traffic policies for routing over specific WAN o - Quick toggles for services and resolver settings - Integrated with OpenWrtโ€™s service management -๐Ÿ“š **Full documentation:** +**Full documentation:** [https://docs.openwrt.melmac.net/pbr/](https://docs.openwrt.melmac.net/pbr/) From 2c2a91fcf9e66fb3bdb5e87f9efe7e3ff1e0719e Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 22 Jul 2025 02:56:05 +0000 Subject: [PATCH 024/185] update links to .ca --- README.md | 4 ++-- htdocs/luci-static/resources/pbr/status.js | 6 +++--- po/templates/pbr.pot | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 646068e..8733e8a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # LuCI App for pbr [![OpenWrt](https://img.shields.io/badge/OpenWrt-Compatible-blueviolet)](https://openwrt.org) -[![Web UI](https://img.shields.io/badge/Web_UI-Available-blue)](https://docs.openwrt.melmac.net/pbr/) +[![Web UI](https://img.shields.io/badge/Web_UI-Available-blue)](https://docs.openwrt.melmac.ca/pbr/) [![License](https://img.shields.io/badge/License-GPL--3.0-lightgrey)](https://github.com/stangri/luci-app-pbr/blob/master/LICENSE) LuCI interface for the `pbr` (policy-based routing) package. @@ -16,4 +16,4 @@ Provides a visual way to manage traffic policies for routing over specific WAN o - Integrated with OpenWrtโ€™s service management **Full documentation:** -[https://docs.openwrt.melmac.net/pbr/](https://docs.openwrt.melmac.net/pbr/) +[https://docs.openwrt.melmac.ca/pbr/](https://docs.openwrt.melmac.ca/pbr/) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 1d732ba..c761186 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -15,7 +15,7 @@ var pkg = { }, get URL() { return ( - "https://docs.openwrt.melmac.net/" + + "https://docs.openwrt.melmac.ca/" + pkg.Name + "/" + (pkg.ReadmeCompat ? pkg.ReadmeCompat + "/" : "") @@ -23,7 +23,7 @@ var pkg = { }, get DonateURL() { return ( - "https://docs.openwrt.melmac.net/" + + "https://docs.openwrt.melmac.ca/" + pkg.Name + "/" + (pkg.ReadmeCompat ? pkg.ReadmeCompat + "/" : "") + @@ -333,7 +333,7 @@ var status = baseclass.extend({ "The %s interface not found, you need to set the 'pbr.config.procd_wan_interface' option" ), errorNoWanInterfaceHint: _( - "Refer to https://docs.openwrt.melmac.net/pbr/#procd_wan_interface" + "Refer to https://docs.openwrt.melmac.ca/pbr/#procd_wan_interface" ), errorIpsetNameTooLong: _( "The ipset name '%s' is longer than allowed 31 characters" diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index c53bdbf..5028e0c 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -413,7 +413,7 @@ msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:336 -msgid "Refer to https://docs.openwrt.melmac.net/pbr/#procd_wan_interface" +msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#procd_wan_interface" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:368 From 3bcd431ce147de0417f6bb568fc61356bce0ac48 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 30 Jul 2025 05:00:34 +0000 Subject: [PATCH 025/185] forced version update before release --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2e009f9..fa89ae5 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=31 +PKG_RELEASE:=32 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From bf92adac3c106244ece4fd6c7a1c59af0f1d230d Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 31 Jul 2025 12:43:58 +0000 Subject: [PATCH 026/185] warnings/errors refactor --- htdocs/luci-static/resources/pbr/status.js | 151 ++++++++-------- po/templates/pbr.pot | 191 ++++++++++---------- root/usr/libexec/rpcd/luci.pbr | 74 +++----- root/usr/share/rpcd/acl.d/luci-app-pbr.json | 3 +- 4 files changed, 194 insertions(+), 225 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index c761186..3143c40 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -10,6 +10,9 @@ var pkg = { get Name() { return "pbr"; }, + get LuciCompat() { + return 14; + }, get ReadmeCompat() { return "1.1.8"; }, @@ -62,6 +65,12 @@ var getPlatformSupport = rpc.declare({ params: ["name"], }); +var getUbusInfo = rpc.declare({ + object: "luci." + pkg.Name, + method: "getUbusInfo", + params: ["name"], +}); + var _setInitAction = rpc.declare({ object: "luci." + pkg.Name, method: "setInitAction", @@ -87,41 +96,6 @@ var RPC = { } }); }, - getInitList: function (name) { - getInitList(name).then( - function (result) { - this.emit("getInitList", result); - }.bind(this) - ); - }, - getInitStatus: function (name) { - getInitStatus(name).then( - function (result) { - this.emit("getInitStatus", result); - }.bind(this) - ); - }, - getGateways: function (name) { - getGateways(name).then( - function (result) { - this.emit("getGateways", result); - }.bind(this) - ); - }, - getPlatformSupport: function (name) { - getPlatformSupport(name).then( - function (result) { - this.emit("getPlatformSupport", result); - }.bind(this) - ); - }, - getInterfaces: function (name) { - getInterfaces(name).then( - function (result) { - this.emit("getInterfaces", result); - }.bind(this) - ); - }, setInitAction: function (name, action) { _setInitAction(name, action).then( function (result) { @@ -135,17 +109,10 @@ var status = baseclass.extend({ render: function () { return Promise.all([ L.resolveDefault(getInitStatus(pkg.Name), {}), - // L.resolveDefault(getGateways(pkg.Name), {}), + L.resolveDefault(getUbusInfo(pkg.Name), {}), ]).then(function (data) { - // var replyStatus = data[0]; - // var replyGateways = data[1]; - var reply; - var text; - - if (data[0] && data[0][pkg.Name]) { - reply = data[0][pkg.Name]; - } else { - reply = { + var reply = { + status: data[0]?.[pkg.Name] || { enabled: null, running: null, running_iptables: null, @@ -153,32 +120,57 @@ var status = baseclass.extend({ running_nft_file: null, version: null, gateways: null, + packageCompat: 0, + rpcdCompat: 0, + }, + ubus: data[1]?.[pkg.Name]?.instances?.main?.data || { + packageCompat: 0, errors: [], warnings: [], - }; + }, + }; + + if ( + pkg.LuciCompat !== reply.status.packageCompat || + reply.status.packageCompat !== reply.status.rpcdCompat || + pkg.LuciCompat !== reply.status.rpcdCompat + ) { + reply.ubus.warnings.push({ + code: "warningInternalVersionMismatch", + info: [ + reply.ubus.packageCompat, + pkg.LuciCompat, + reply.status.rpcdCompat, + '', + "", + ], + }); } + var text; var header = E("h2", {}, _("Policy Based Routing - Status")); var statusTitle = E( "label", { class: "cbi-value-title" }, _("Service Status") ); - if (reply.version) { - text = _("Version %s").format(reply.version) + " - "; - if (reply.running) { + if (reply.status.version) { + text = _("Version %s").format(reply.status.version) + " - "; + if (reply.status.running) { text += _("Running"); - if (reply.running_iptables) { + if (reply.status.running_iptables) { text += " (" + _("iptables mode") + ")."; - } else if (reply.running_nft_file) { + } else if (reply.status.running_nft_file) { text += " (" + _("fw4 nft file mode") + ")."; - } else if (reply.running_nft) { + } else if (reply.status.running_nft) { text += " (" + _("nft mode") + ")."; } else { text += "."; } } else { - if (reply.enabled) { + if (reply.status.enabled) { text += _("Stopped."); } else { text += _("Stopped (Disabled)."); @@ -195,7 +187,7 @@ var status = baseclass.extend({ ]); var gatewaysDiv = []; - if (reply.gateways) { + if (reply.status.gateways) { var gatewaysTitle = E( "label", { class: "cbi-value-title" }, @@ -217,7 +209,7 @@ var status = baseclass.extend({ "" ); var gatewaysDescr = E("div", { class: "cbi-value-description" }, text); - var gatewaysText = E("div", {}, reply.gateways); + var gatewaysText = E("div", {}, reply.status.gateways); var gatewaysField = E("div", { class: "cbi-value-field" }, [ gatewaysText, gatewaysDescr, @@ -229,8 +221,11 @@ var status = baseclass.extend({ } var warningsDiv = []; - if (reply.warnings && reply.warnings.length) { - var textLabelsTable = { + if (reply.ubus.warnings && reply.ubus.warnings.length) { + var warningTable = { + warningInternalVersionMismatch: _( + "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." + ), warningResolverNotSupported: _( "Resolver set (%s) is not supported on this system." ).format(L.uci.get(pkg.Name, "config", "resolver_set")), @@ -283,14 +278,12 @@ var status = baseclass.extend({ _("Service Warnings") ); var text = ""; - reply.warnings.forEach((element) => { - if (element.id && textLabelsTable[element.id]) { - if (element.id !== "warningPolicyProcessCMD") { - text += - (textLabelsTable[element.id] + ".").format( - element.extra || " " - ) + "
"; - } + reply.ubus.warnings.forEach((element) => { + if (element.code && warningTable[element.code]) { + text += Array.isArray(element.info) + ? warningTable[element.code].format(...element.info) + "
" + : warningTable[element.code].format(element.info || " ") + + "
"; } else { text += _("Unknown warning") + "
"; } @@ -308,8 +301,8 @@ var status = baseclass.extend({ } var errorsDiv = []; - if (reply.errors && reply.errors.length) { - var textLabelsTable = { + if (reply.ubus.errors && reply.ubus.errors.length) { + var errorTable = { errorConfigValidation: _("Config (%s) validation failure").format( "/etc/config/" + pkg.Name ), @@ -420,16 +413,13 @@ var status = baseclass.extend({ _("Service Errors") ); var text = ""; - reply.errors.forEach((element) => { - if (element.id && textLabelsTable[element.id]) { - if (element.id !== "errorPolicyProcessCMD") { - text += - (textLabelsTable[element.id] + "!").format( - element.extra || " " - ) + "
"; - } + reply.ubus.errors.forEach((element) => { + if (element.code && errorTable[element.code]) { + text += Array.isArray(element.info) + ? errorTable[element.code].format(...element.info) + "
" + : errorTable[element.code].format(element.info || " ") + "
"; } else { - text += _("Unknown error!") + "
"; + text += _("Unknown error") + "
"; } }); text += _("Errors encountered, please check the %sREADME%s").format( @@ -546,10 +536,10 @@ var status = baseclass.extend({ _("Disable") ); - if (reply.enabled) { + if (reply.status.enabled) { btn_enable.disabled = true; btn_disable.disabled = false; - if (reply.running) { + if (reply.status.running) { btn_start.disabled = true; btn_action.disabled = false; btn_stop.disabled = false; @@ -583,7 +573,7 @@ var status = baseclass.extend({ btn_disable, ]); var buttonsField = E("div", { class: "cbi-value-field" }, buttonsText); - var buttonsDiv = reply.version + var buttonsDiv = reply.status.version ? E("div", { class: "cbi-value" }, [buttonsTitle, buttonsField]) : ""; @@ -605,7 +595,7 @@ var status = baseclass.extend({ ) ); - var donateDiv = reply.version + var donateDiv = reply.status.version ? E("div", { class: "cbi-value" }, [donateTitle, donateText]) : ""; @@ -633,4 +623,5 @@ return L.Class.extend({ getInitStatus: getInitStatus, getInterfaces: getInterfaces, getPlatformSupport: getPlatformSupport, + getUbusInfo: getUbusInfo, }); diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 5028e0c..9b59dc1 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:240 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:349 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:316 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 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:406 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 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:313 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304 msgid "Config (%s) validation failure" msgstr "" @@ -87,7 +87,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:352 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -107,15 +107,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:546 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:534 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:540 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:528 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:266 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:259 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:593 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:581 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:515 msgid "Enable" msgstr "" @@ -167,15 +167,15 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:521 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:509 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:363 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -185,31 +185,31 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:360 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:350 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358 msgid "Failed to set up any gateway" msgstr "" @@ -237,11 +237,11 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:263 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:256 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -251,15 +251,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:385 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376 msgid "Insertion failed for IPv4 for policy '%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:373 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:238 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:231 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -267,15 +267,22 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:344 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:254 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:225 +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:247 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -288,7 +295,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -320,7 +327,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:188 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:178 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" @@ -333,8 +340,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:215 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:601 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:205 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:589 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -342,24 +349,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:270 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:263 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:248 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:241 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:251 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:245 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:238 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:242 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -367,23 +374,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:347 msgid "Policy '%s' has an unknown 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:342 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:350 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:341 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:348 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:339 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -396,7 +403,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:161 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:151 msgid "Policy Based Routing - Status" msgstr "" @@ -408,11 +415,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:336 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#procd_wan_interface" msgstr "" @@ -428,37 +435,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:412 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:368 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:324 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:315 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:318 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 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:321 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:312 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:489 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 msgid "Restarting %s service" msgstr "" @@ -472,7 +479,7 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:170 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:160 msgid "Running" msgstr "" @@ -484,11 +491,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:572 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:560 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 msgid "Service Errors" msgstr "" @@ -497,15 +504,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:202 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:192 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:165 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:155 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:283 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:276 msgid "Service Warnings" msgstr "" @@ -515,15 +522,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 msgid "Starting %s service" msgstr "" @@ -537,19 +544,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:184 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:174 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:182 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:172 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:502 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 msgid "Stopping %s service" msgstr "" @@ -573,15 +580,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:362 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:196 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:333 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:324 msgid "" "The %s interface not found, you need to set the 'pbr.config." "procd_wan_interface' option" @@ -591,11 +598,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:321 msgid "The %s service failed to discover WAN gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:318 msgid "The %s service is currently disabled" msgstr "" @@ -603,55 +610,55 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:257 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:250 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 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:339 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:342 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:333 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:260 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:253 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:345 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:336 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 -msgid "Unknown error!" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +msgid "Unknown error" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:373 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:364 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:379 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:295 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286 msgid "Unknown warning" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:365 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -669,7 +676,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:168 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:158 msgid "Version %s" msgstr "" @@ -686,17 +693,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:174 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:164 #: 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:172 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:162 #: 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:176 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:166 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 msgid "nft mode" msgstr "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index e604720..e5ce4fb 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -8,10 +8,11 @@ # ubus -S call luci.pbr getInitList '{"name": "pbr" }' # ubus -S call luci.pbr getInitStatus '{"name": "pbr" }' # ubus -S call luci.pbr getPlatformSupport '{"name": "pbr" }' +# ubus -S call luci.pbr getUbusInfo '{"name": "pbr" }' # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly luciCompat='13' +readonly rpcdCompat='14' readonly pbrFunctionsFile='/etc/init.d/pbr' if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr @@ -84,13 +85,10 @@ set_init_action() { } get_init_status() { - local name + local name gateways name="$(basename "$1")" name="${name:-$packageName}" - local gateways warnings errors gateways="$(ubus_get_status gateways | sed "s|\\\n|
|g;s|\(\\\033[^<]*\)|โœ“|g;")" - warnings="$(ubus_get_status warnings)" - errors="$(ubus_get_status errors)" json_init json_add_object "$packageName" json_add_boolean 'enabled' "$(is_enabled "$packageName")" @@ -116,53 +114,8 @@ get_init_status() { fi json_add_string 'version' "$PKG_VERSION" json_add_string 'gateways' "$gateways" - json_add_array 'errors' - while read -r line; do - if str_contains "$line" ' '; then - error_id="${line%% *}" - error_extra="${line#* }" - else - error_id="$line" - unset error_extra - fi - if [ -n "$error_id" ]; then - json_add_object - json_add_string 'id' "$error_id" - json_add_string 'extra' "$error_extra" - json_close_object - fi - done < Date: Thu, 31 Jul 2025 12:49:04 +0000 Subject: [PATCH 027/185] update after apk run --- po/templates/pbr.pot | 184 +++++++++++++++++++++---------------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 9b59dc1..cea2a66 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:349 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 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:397 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 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:304 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:306 msgid "Config (%s) validation failure" msgstr "" @@ -87,7 +87,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:352 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -107,15 +107,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:534 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:536 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:528 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:530 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:259 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:261 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:581 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:583 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:515 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 msgid "Enable" msgstr "" @@ -167,15 +167,15 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:509 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:511 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -185,31 +185,31 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 msgid "Failed to reload '%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:384 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:350 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:352 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:360 msgid "Failed to set up any gateway" msgstr "" @@ -237,11 +237,11 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 msgid "Incompatible custom user file detected '%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:258 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -251,15 +251,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:373 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:375 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:231 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -267,22 +267,22 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:344 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:346 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:225 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:227 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:247 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:249 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -295,7 +295,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:369 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -327,7 +327,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:178 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:180 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" @@ -340,8 +340,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:205 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:589 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:591 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -349,24 +349,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:263 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265 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:241 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:243 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:246 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:238 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:240 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:237 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -374,23 +374,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:347 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:349 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:342 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:344 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:341 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:343 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:339 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:341 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -403,7 +403,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:151 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:153 msgid "Policy Based Routing - Status" msgstr "" @@ -415,11 +415,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:329 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#procd_wan_interface" msgstr "" @@ -435,37 +435,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:315 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:317 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:311 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:312 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:314 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:477 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 msgid "Restarting %s service" msgstr "" @@ -479,7 +479,7 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:160 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:162 msgid "Running" msgstr "" @@ -491,11 +491,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:560 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:562 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 msgid "Service Errors" msgstr "" @@ -504,15 +504,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:192 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:194 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:155 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:157 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:276 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:278 msgid "Service Warnings" msgstr "" @@ -522,15 +522,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:363 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 msgid "Starting %s service" msgstr "" @@ -544,19 +544,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:174 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:176 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:172 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:174 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 msgid "Stopping %s service" msgstr "" @@ -580,15 +580,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:355 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:196 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:198 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:324 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:326 msgid "" "The %s interface not found, you need to set the 'pbr.config." "procd_wan_interface' option" @@ -598,11 +598,11 @@ msgstr "" msgid "The %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:323 msgid "The %s service failed to discover WAN gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:318 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 msgid "The %s service is currently disabled" msgstr "" @@ -610,55 +610,55 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:250 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:252 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 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:330 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:332 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:333 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:335 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:253 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:255 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:336 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 msgid "Unknown error" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:364 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:366 msgid "Unknown packet mark for interface '%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:372 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:288 msgid "Unknown warning" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -676,7 +676,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:158 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:160 msgid "Version %s" msgstr "" @@ -693,17 +693,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:164 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:166 #: 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:162 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:164 #: 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:166 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:168 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 msgid "nft mode" msgstr "" From 16371497cf6ce88b6e383d8d5082643469f0f787 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 1 Aug 2025 02:15:26 +0000 Subject: [PATCH 028/185] address copilot comments --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 28 ++++++++++++++-------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index fa89ae5..0fadc1b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# SPDX-Identifier-License: AGPL-3.0-or-later +# SPDX-License-Identifier: AGPL-3.0-or-later # Copyright 2017-2025 MOSSDeF, Stan Grishin (stangri@melmac.ca). include $(TOPDIR)/rules.mk diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 3143c40..18f9f2b 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -33,6 +33,17 @@ var pkg = { "#Donate" ); }, + isVersionMismatch: function (luci, pkg, rpcd) { + return luci !== pkg || pkg !== rpcd || luci !== rpcd; + }, + formatMessage: function (info, template) { + if (!template) return _("Unknown message") + "
"; + return ( + (Array.isArray(info) + ? template.format(...info) + : template.format(info || " ")) + "
" + ); + }, }; var getGateways = rpc.declare({ @@ -131,9 +142,11 @@ var status = baseclass.extend({ }; if ( - pkg.LuciCompat !== reply.status.packageCompat || - reply.status.packageCompat !== reply.status.rpcdCompat || - pkg.LuciCompat !== reply.status.rpcdCompat + pkg.isVersionMismatch( + pkg.LuciCompat, + reply.status.packageCompat, + reply.status.rpcdCompat + ) ) { reply.ubus.warnings.push({ code: "warningInternalVersionMismatch", @@ -280,10 +293,7 @@ var status = baseclass.extend({ var text = ""; reply.ubus.warnings.forEach((element) => { if (element.code && warningTable[element.code]) { - text += Array.isArray(element.info) - ? warningTable[element.code].format(...element.info) + "
" - : warningTable[element.code].format(element.info || " ") + - "
"; + text += pkg.formatMessage(element.info, warningTable[element.code]); } else { text += _("Unknown warning") + "
"; } @@ -415,9 +425,7 @@ var status = baseclass.extend({ var text = ""; reply.ubus.errors.forEach((element) => { if (element.code && errorTable[element.code]) { - text += Array.isArray(element.info) - ? errorTable[element.code].format(...element.info) + "
" - : errorTable[element.code].format(element.info || " ") + "
"; + text += pkg.formatMessage(element.info, errorTable[element.code]); } else { text += _("Unknown error") + "
"; } From d5a5fc3d33cbc43bf56a0b9707471cdf064ad715 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 1 Aug 2025 02:26:36 +0000 Subject: [PATCH 029/185] update pot --- po/templates/pbr.pot | 188 ++++++++++++++++++++++--------------------- 1 file changed, 96 insertions(+), 92 deletions(-) diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index cea2a66..5290fa4 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:319 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:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 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:306 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:316 msgid "Config (%s) validation failure" msgstr "" @@ -87,7 +87,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:364 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -107,15 +107,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:536 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:544 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:530 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 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:261 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:274 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:583 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:591 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:525 msgid "Enable" msgstr "" @@ -167,15 +167,15 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:511 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:519 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:366 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -185,31 +185,31 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:363 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:352 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:362 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:360 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370 msgid "Failed to set up any gateway" msgstr "" @@ -237,11 +237,11 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:258 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:271 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -251,15 +251,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:375 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:385 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:246 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -267,22 +267,22 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:346 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:227 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:240 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:249 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:262 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -295,7 +295,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:369 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:379 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -327,7 +327,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:180 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:193 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" @@ -340,8 +340,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:591 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:220 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:599 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -349,24 +349,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:278 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:243 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:256 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' 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:259 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:240 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:253 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:237 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:250 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -374,23 +374,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:349 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:344 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:343 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:341 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -403,7 +403,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:153 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:166 msgid "Policy Based Routing - Status" msgstr "" @@ -415,11 +415,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:329 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:339 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#procd_wan_interface" msgstr "" @@ -435,37 +435,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:371 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:317 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:243 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:311 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:321 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:314 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:324 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:479 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:481 msgid "Restarting %s service" msgstr "" @@ -479,7 +479,7 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:162 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:175 msgid "Running" msgstr "" @@ -491,11 +491,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:562 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:570 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 msgid "Service Errors" msgstr "" @@ -504,15 +504,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:194 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:157 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:170 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:278 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:291 msgid "Service Warnings" msgstr "" @@ -522,15 +522,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:363 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:373 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 msgid "Starting %s service" msgstr "" @@ -544,19 +544,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:506 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:176 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:189 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:174 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:187 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:500 msgid "Stopping %s service" msgstr "" @@ -580,15 +580,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:355 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:365 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:198 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:326 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:336 msgid "" "The %s interface not found, you need to set the 'pbr.config." "procd_wan_interface' option" @@ -598,11 +598,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:323 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:333 msgid "The %s service failed to discover WAN gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330 msgid "The %s service is currently disabled" msgstr "" @@ -610,55 +610,59 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:252 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 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:332 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:342 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:335 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:345 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:255 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:268 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:348 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 msgid "Unknown error" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:366 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:40 +msgid "Unknown message" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:372 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:288 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:298 msgid "Unknown warning" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:368 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -676,7 +680,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:160 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:173 msgid "Version %s" msgstr "" @@ -693,17 +697,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:166 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:179 #: 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:164 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:177 #: 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:168 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:181 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 msgid "nft mode" msgstr "" From a978fac3a3dfec0d7dae9bec2819c54fd3c404ae Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 1 Aug 2025 18:12:14 +0000 Subject: [PATCH 030/185] @systemcrash improvements --- htdocs/luci-static/resources/pbr/status.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 18f9f2b..915ce2b 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -121,9 +121,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,7 +134,7 @@ 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, errors: [], warnings: [], From 580ecb6202ea97ec13eb32cf3028f438de66c19a Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 5 Aug 2025 17:16:32 +0000 Subject: [PATCH 031/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0fadc1b..a76de6c 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.8 -PKG_RELEASE:=32 +PKG_RELEASE:=34 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 29bd44996b8413cc6f5f74179e5eab5700f5e026 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 6 Aug 2025 18:52:06 +0000 Subject: [PATCH 032/185] update to 1.1.9-1 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index a76de6c..090c4e4 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin -PKG_VERSION:=1.1.8 -PKG_RELEASE:=34 +PKG_VERSION:=1.1.9 +PKG_RELEASE:=1 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From a21224005d4a3a796bb1d44b10c7b9f7fe36d002 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 6 Aug 2025 18:53:27 +0000 Subject: [PATCH 033/185] update README link --- htdocs/luci-static/resources/pbr/status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 915ce2b..d14cc16 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -14,7 +14,7 @@ var pkg = { return 14; }, get ReadmeCompat() { - return "1.1.8"; + return "1.1.9"; }, get URL() { return ( From 9d850213a6ee484be7334a9333b521a246195c2b Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 12 Aug 2025 00:58:32 +0000 Subject: [PATCH 034/185] add build/release workflow --- .github/workflows/openwrt-release.yml | 176 ++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 .github/workflows/openwrt-release.yml diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml new file mode 100644 index 0000000..e755261 --- /dev/null +++ b/.github/workflows/openwrt-release.yml @@ -0,0 +1,176 @@ +permissions: + contents: write +name: Build OpenWrt Package + +on: + push: + branches: + - 1.1.9 + workflow_dispatch: + +jobs: + build: + name: Build for ${{ matrix.version }} / ${{ matrix.target }} + runs-on: ubuntu-latest + env: + REPO_APK_KEY: ${{ secrets.REPO_APK_KEY }} + + strategy: + fail-fast: false + matrix: + include: + - version: openwrt-24.10 + target: x86_64 + suffix: all + # - version: openwrt-24.10 + # target: aarch64_cortex-a53 + # - version: openwrt-24.10 + # target: aarch64_generic + # - version: openwrt-24.10 + # target: arm_cortex-a7 + # - version: openwrt-24.10 + # target: arm_cortex-a9 + # - version: openwrt-24.10 + # target: mips_24kc + # - version: openwrt-24.10 + # target: mipsel_24kc + - version: snapshots + target: x86_64 + suffix: noarch + # - version: snapshots + # target: aarch64_cortex-a53 + # - version: snapshots + # target: aarch64_generic + # - version: snapshots + # target: arm_cortex-a7 + # - version: snapshots + # target: arm_cortex-a9 + # - version: snapshots + # target: mips_24kc + # - version: snapshots + # target: mipsel_24kc + + steps: + - name: ๐Ÿงพ Checkout repo + uses: actions/checkout@v4 + + - name: ๐Ÿ“› Set PKG_NAME from repo + run: echo "PKG_NAME=${{ github.event.repository.name }}" >> "$GITHUB_ENV" + + - name: ๐Ÿงฐ Set up melmac feed structure + run: | + set -e + # Also add a shim so ../../luci.mk from package/feeds/melmac/ works: + mkdir -p package + printf 'include $(TOPDIR)/feeds/luci/luci.mk\n' > package/luci.mk + + # LuCI-style layout so ../../luci.mk resolves from applications/ + mkdir -p feed/luci/applications/${PKG_NAME} + + # Add shim luci/luci.mk pointing to the official LuCI feed + mkdir -p feed/luci + printf 'include $(TOPDIR)/feeds/luci/luci.mk\n' > feed/luci/luci.mk + + # Copy the package sources into the feed subdir (exclude CI and feed itself) + rsync -av \ + --exclude='.git' \ + --exclude='feed' \ + --exclude='.github' \ + ./ feed/luci/applications/${PKG_NAME}/ + + - name: ๐Ÿงฎ Compute ARCH + run: | + if [ "${{ matrix.version }}" = "snapshots" ]; then + echo "ARCH=${{ matrix.target }}-SNAPSHOT" >> "$GITHUB_ENV" + else + echo "ARCH=${{ matrix.target }}-${{ matrix.version }}" >> "$GITHUB_ENV" + fi + + - name: ๐Ÿ—๏ธ Build with OpenWrt SDK + uses: openwrt/gh-action-sdk@v8 + env: + ARCH: ${{ env.ARCH }} + FEEDNAME: melmac + PACKAGES: ${{ env.PKG_NAME }} + INDEX: 0 + FEED_DIR: ${{ github.workspace }}/feed + NO_SHFMT_CHECK: 1 + NO_REFRESH_CHECK: 1 + PRIVATE_KEY: ${{ secrets.REPO_APK_KEY }} + + - name: ๐Ÿ” Debug build output + run: | + echo "=== Build directory structure ===" + find . -name "*.ipk" -type f 2>/dev/null || echo "No .ipk files found" + echo "=== bin directory structure ===" + ls -la bin/ 2>/dev/null || echo "No bin directory found" + if [ -d "bin/packages" ]; then + echo "=== packages directory structure ===" + find bin/packages/ -type f -name "*.ipk" 2>/dev/null || echo "No .ipk files in packages directory" + echo "=== Full packages directory tree ===" + ls -laR bin/packages/ 2>/dev/null || echo "No packages directory" + fi + + - name: ๐Ÿท๏ธ Rename APK with version and target + run: | + set -euo pipefail + PKG_VERSION=$(grep -E '^PKG_VERSION *:?=' Makefile | head -n1 | cut -d= -f2 | tr -d '[:space:]') + PKG_RELEASE=$(grep -E '^PKG_RELEASE *:?=' Makefile | head -n1 | cut -d= -f2 | tr -d '[:space:]') + for ext in ipk apk; do + for f in $(find bin/packages -type f -path "*/melmac/*.${ext}"); do + dir=$(dirname "$f") + if [ -n "${{ matrix.suffix }}" ]; then + mv -v "$f" "$dir/${PKG_NAME}-${PKG_VERSION}-${PKG_RELEASE}_${{ matrix.version }}_${{ matrix.suffix }}.${ext}" + else + mv -v "$f" "$dir/${PKG_NAME}-${PKG_VERSION}-${PKG_RELEASE}_${{ matrix.version }}_${{ matrix.target }}.${ext}" + fi + done + done + + - name: ๐Ÿ“ฆ Upload artifact for ${{ matrix.target }} + uses: actions/upload-artifact@v4 + with: + name: ${{ env.PKG_NAME }}-${{ matrix.target }}-${{ matrix.version }} + path: | + bin/packages/*/melmac/${{ env.PKG_NAME }}*.ipk + bin/packages/*/melmac/${{ env.PKG_NAME }}*.apk + # bin/packages/*/melmac/Packages* + # bin/packages/*/melmac/index.json + # bin/packages/*/melmac/packages.adb + if-no-files-found: ignore + + release: + name: Release ${{ github.repository }} + needs: build + runs-on: ubuntu-latest + + steps: + - name: ๐Ÿงพ Checkout repo + uses: actions/checkout@v4 + + - name: ๐Ÿ” Extract version and release from Makefile + id: version + run: | + PKG_VERSION=$(grep -E '^PKG_VERSION *:?=' Makefile | head -n1 | cut -d= -f2 | tr -d '[:space:]') + PKG_RELEASE=$(grep -E '^PKG_RELEASE *:?=' Makefile | head -n1 | cut -d= -f2 | tr -d '[:space:]') + COMBINED_VERSION="${PKG_VERSION}-${PKG_RELEASE}" + echo "๐Ÿ“ฆ Version: $COMBINED_VERSION" + echo "version=$COMBINED_VERSION" >> "$GITHUB_OUTPUT" + + - name: โฌ‡๏ธ Download all build artifacts + uses: actions/download-artifact@v4 + with: + path: ./release-assets + + - name: ๐Ÿ—ƒ๏ธ Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ steps.version.outputs.version }} + name: Build v${{ steps.version.outputs.version }} + files: | + ./release-assets/**/*.ipk + ./release-assets/**/*.apk + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 51959046e3fea16f19ea1bbfa04b38d8d6a72c48 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 13 Aug 2025 22:43:34 +0000 Subject: [PATCH 035/185] delete references to obsolete packages --- Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile b/Makefile index 090c4e4..b2a3f74 100644 --- a/Makefile +++ b/Makefile @@ -14,8 +14,6 @@ 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 From a13ccf5f6bbf4a64028f9d2a5e927e138e0b7d9a Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 15 Aug 2025 01:26:52 +0000 Subject: [PATCH 036/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b2a3f74..4705c4f 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=1 +PKG_RELEASE:=3 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From db7f51aea1d5e740b1cd04219e8ea64fed08ac39 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 15 Aug 2025 19:59:18 +0000 Subject: [PATCH 037/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4705c4f..11612c8 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=3 +PKG_RELEASE:=5 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From c07caf39efa5f65a4c9baf399f1cf52efa10e767 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 16 Aug 2025 22:19:20 +0000 Subject: [PATCH 038/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 11612c8..631703f 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=5 +PKG_RELEASE:=7 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From c353bbe879bad65da7566b189635c84fa837f579 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 17 Aug 2025 01:14:23 +0000 Subject: [PATCH 039/185] luci-app-pbr: 1.1.9-9 --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 21 ++- .../resources/view/pbr/overview.js | 6 +- po/templates/pbr.pot | 160 ++++++++++-------- root/usr/libexec/rpcd/luci.pbr | 10 +- 5 files changed, 114 insertions(+), 85 deletions(-) diff --git a/Makefile b/Makefile index 631703f..4d263dc 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=7 +PKG_RELEASE:=9 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index d14cc16..a235a4a 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 14; + return 15; }, get ReadmeCompat() { return "1.1.9"; @@ -284,6 +284,10 @@ var status = baseclass.extend({ "" ) ), + warningSummary: _("Warnings encountered, please check %s"), + warningIncompatibleDHCPOption6: _( + "Incompatible DHCP Option 6 for interface %s" + ), }; var warningsTitle = E( "label", @@ -298,6 +302,10 @@ var status = baseclass.extend({ text += _("Unknown warning") + "
"; } }); + text += _("Warnings encountered, please check the %sREADME%s").format( + '', + "!
" + ); var warningsText = E("div", { class: "cbi-value-description" }, text); var warningsField = E( "div", @@ -332,11 +340,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 +424,7 @@ var status = baseclass.extend({ errorInterfaceRoutingUnknownDevType: _( "Unknown IPv6 Link type for device '%s'" ), + errorSummary: _("Errors encountered, please check %s"), }; var errorsTitle = E( "label", @@ -431,7 +440,7 @@ var status = baseclass.extend({ } }); text += _("Errors encountered, please check the %sREADME%s").format( - '', + '', "!
" ); var errorsText = E("div", { class: "cbi-value-description" }, text); diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 1e76efc..9bac62c 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -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" ) + " " + diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 5290fa4..58c7398 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -2,11 +2,11 @@ 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:369 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:327 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:417 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:324 msgid "Config (%s) validation failure" msgstr "" @@ -87,7 +87,7 @@ msgstr "" 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:372 msgid "Custom user file '%s' not found or empty" 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:422 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:421 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:553 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:547 msgid "Disabling %s service" msgstr "" @@ -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:600 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:534 msgid "Enable" msgstr "" @@ -167,15 +167,19 @@ msgstr "" 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:528 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:374 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:427 +msgid "Errors encountered, please check %s" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -185,31 +189,31 @@ 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:413 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:411 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:406 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:371 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:402 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:370 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:378 msgid "Failed to set up any gateway" msgstr "" @@ -237,7 +241,11 @@ 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:289 +msgid "Incompatible DHCP Option 6 for interface %s" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -251,11 +259,11 @@ 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:396 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:393 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" @@ -267,7 +275,7 @@ 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:364 msgid "Interface '%s' has no assigned DNS" msgstr "" @@ -282,7 +290,7 @@ msgstr "" 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:404 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -295,7 +303,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:387 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -341,7 +349,7 @@ 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:608 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -374,23 +382,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:367 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:362 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:361 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:359 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:408 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -415,12 +423,12 @@ 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:400 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:347 +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 @@ -435,15 +443,15 @@ 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:423 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:379 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:335 msgid "Resolver set (%s) is not supported on this system" msgstr "" @@ -451,21 +459,21 @@ msgstr "" 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:329 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:332 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:496 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:490 msgid "Restarting %s service" msgstr "" @@ -491,11 +499,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:579 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:432 msgid "Service Errors" msgstr "" @@ -512,7 +520,7 @@ msgstr "" 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:295 msgid "Service Warnings" msgstr "" @@ -522,29 +530,30 @@ msgid "" "%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:381 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:477 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:471 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:515 msgid "Stop" msgstr "" @@ -556,7 +565,7 @@ msgstr "" 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:509 msgid "Stopping %s service" msgstr "" @@ -580,7 +589,7 @@ 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:373 msgid "Syntax error in custom user file '%s'" msgstr "" @@ -588,21 +597,21 @@ msgstr "" 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:344 msgid "" "The %s interface not found, you need to set the 'pbr.config." -"procd_wan_interface' option" +"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:341 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:338 msgid "The %s service is currently disabled" msgstr "" @@ -614,15 +623,15 @@ msgstr "" 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:415 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:350 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:353 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" @@ -630,19 +639,19 @@ msgstr "" 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:356 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:425 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:398 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:439 msgid "Unknown error" msgstr "" @@ -650,19 +659,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:384 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:390 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:302 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:376 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -684,11 +697,18 @@ msgstr "" 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:287 +msgid "Warnings encountered, please check %s" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:305 +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 "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index e5ce4fb..71969c8 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -12,7 +12,7 @@ # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='14' +readonly rpcdCompat='15' readonly pbrFunctionsFile='/etc/init.d/pbr' if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr @@ -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 From fa97e3c8d5c4f35b42a18f59f966752eb9aeac79 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 18 Aug 2025 16:28:23 +0000 Subject: [PATCH 040/185] verision bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4d263dc..4d403ba 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=9 +PKG_RELEASE:=15 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 7db14a4e798fef6efd608ad7ae17c65d2f1c3195 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 24 Aug 2025 02:26:33 +0000 Subject: [PATCH 041/185] version update --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4d403ba..99a47f7 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=15 +PKG_RELEASE:=17 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 78e7b7f307aa38485fd459ff0159b463869a15b0 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 31 Aug 2025 20:40:41 +0000 Subject: [PATCH 042/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 99a47f7..6f6c44e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=17 +PKG_RELEASE:=19 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 00eefc5d27a079d3a3b9e99d4019cf193d7cbbc9 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 2 Sep 2025 00:53:22 +0000 Subject: [PATCH 043/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6f6c44e..01493e0 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=19 +PKG_RELEASE:=21 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From d73c9db39582f80a593e071a1a955942283c56c9 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 4 Sep 2025 02:28:37 +0000 Subject: [PATCH 044/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 01493e0..c84d4e0 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=21 +PKG_RELEASE:=23 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 877381b088fd1fd01f5456f9895ea51862fc47e1 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 14 Sep 2025 03:00:38 +0000 Subject: [PATCH 045/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c84d4e0..974b9e5 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=23 +PKG_RELEASE:=25 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From f57387cb498d22f8ed4a293382f950bb4d16c58f Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 14 Sep 2025 03:19:22 +0000 Subject: [PATCH 046/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 974b9e5..c732e58 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=25 +PKG_RELEASE:=27 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 63cabb8b87142e04068af565e4a039a3d154f666 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 15 Sep 2025 01:05:31 +0000 Subject: [PATCH 047/185] add support for dest_dns_port and parsing of ubus gateways array --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 39 +++- .../resources/view/pbr/overview.js | 6 + po/templates/pbr.pot | 210 +++++++++--------- root/usr/libexec/rpcd/luci.pbr | 2 +- 5 files changed, 149 insertions(+), 110 deletions(-) diff --git a/Makefile b/Makefile index c732e58..5f46349 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=27 +PKG_RELEASE:=29 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index a235a4a..b5b4460 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 15; + return 16; }, get ReadmeCompat() { return "1.1.9"; @@ -44,6 +44,29 @@ var pkg = { : template.format(info || " ")) + "
" ); }, + 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("
"); + }, }; var getGateways = rpc.declare({ @@ -136,6 +159,7 @@ var status = baseclass.extend({ }, 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({ "", "" ); - 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, diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 9bac62c..9ad2411 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -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", diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 58c7398..dea71a5 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -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:369 +#: 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:327 +#: 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:417 +#: 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:324 +#: 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:372 +#: 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:422 +#: 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:421 +#: 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:553 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:582 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:547 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:576 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:600 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:629 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:534 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:563 msgid "Enable" msgstr "" @@ -163,23 +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:528 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:557 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:374 +#: 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:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:456 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -189,31 +189,31 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 +#: 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:411 +#: 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:406 +#: 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:371 +#: 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:402 +#: 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:370 +#: 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:378 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 msgid "Failed to set up any gateway" msgstr "" @@ -241,15 +241,15 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:289 +#: 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:419 +#: 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" @@ -259,15 +259,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 +#: 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:393 +#: 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 "" @@ -275,22 +275,22 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:364 +#: 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:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -303,7 +303,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -335,7 +335,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 "" @@ -344,12 +344,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:608 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:637 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -357,24 +357,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 "" @@ -382,23 +382,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 +#: 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:362 +#: 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:361 +#: 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:359 +#: 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:408 +#: 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 "" @@ -411,7 +411,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 "" @@ -423,11 +423,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 +#: 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:347 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface" msgstr "" @@ -435,6 +435,10 @@ msgstr "" 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 "" @@ -443,37 +447,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 +#: 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:379 +#: 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:335 +#: 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:329 +#: 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:332 +#: 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:496 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:525 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:519 msgid "Restarting %s service" msgstr "" @@ -481,13 +485,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 "" @@ -499,11 +503,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:579 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:608 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 msgid "Service Errors" msgstr "" @@ -512,33 +516,33 @@ 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:295 +#: 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:381 +#: 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:477 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:506 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:500 msgid "Starting %s service" msgstr "" @@ -553,19 +557,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:515 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:544 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:509 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 msgid "Stopping %s service" msgstr "" @@ -589,15 +593,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:373 +#: 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:344 +#: 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." "uplink_interface' option" @@ -607,11 +611,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:341 +#: 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:338 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 msgid "The %s service is currently disabled" msgstr "" @@ -619,39 +623,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:415 +#: 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:350 +#: 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:353 +#: 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:356 +#: 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:425 +#: 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:398 +#: 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:439 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 msgid "Unknown error" msgstr "" @@ -659,15 +663,15 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 +#: 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:390 +#: 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:302 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331 msgid "Unknown warning" msgstr "" @@ -675,7 +679,7 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376 +#: 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" @@ -693,7 +697,7 @@ 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 "" @@ -701,11 +705,11 @@ msgstr "" msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:287 +#: 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:305 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" @@ -717,17 +721,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 "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 71969c8..c0871f7 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -12,7 +12,7 @@ # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='15' +readonly rpcdCompat='16' readonly pbrFunctionsFile='/etc/init.d/pbr' if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr From f3079eedd40f46d16f6e08b9017124b7553c0c00 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 15 Sep 2025 03:44:46 +0000 Subject: [PATCH 048/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5f46349..66e9de0 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=29 +PKG_RELEASE:=31 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From c4b3f3cd0c8720004a78073d29991ac962f2acfb Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 16 Sep 2025 00:31:34 +0000 Subject: [PATCH 049/185] include mktemp error message --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 5 ++- po/templates/pbr.pot | 38 ++++++++++++---------- root/usr/libexec/rpcd/luci.pbr | 2 +- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 66e9de0..b7c0e05 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=31 +PKG_RELEASE:=33 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index b5b4460..20ef9b4 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 16; + return 17; }, get ReadmeCompat() { return "1.1.9"; @@ -453,6 +453,9 @@ 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( diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index dea71a5..0af3293 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -115,7 +115,7 @@ msgstr "" msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:582 +#: 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:576 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:579 msgid "Disabling %s service" msgstr "" @@ -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:629 +#: 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:563 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:566 msgid "Enable" msgstr "" @@ -167,7 +167,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:557 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:560 msgid "Enabling %s service" msgstr "" @@ -175,11 +175,11 @@ msgstr "" msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:456 +#: 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:471 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -189,6 +189,10 @@ msgid "" "QoS. Change with caution together with" msgstr "" +#: 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 "" @@ -349,7 +353,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:637 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:640 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -473,11 +477,11 @@ 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:525 +#: 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:519 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:522 msgid "Restarting %s service" msgstr "" @@ -503,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:608 +#: 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:461 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 msgid "Service Errors" msgstr "" @@ -538,11 +542,11 @@ msgstr "" msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:506 +#: 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:500 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:503 msgid "Starting %s service" msgstr "" @@ -557,7 +561,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:544 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:547 msgid "Stop" msgstr "" @@ -569,7 +573,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:541 msgid "Stopping %s service" msgstr "" @@ -655,7 +659,7 @@ msgstr "" msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 msgid "Unknown error" msgstr "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index c0871f7..de6f7b0 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -12,7 +12,7 @@ # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='16' +readonly rpcdCompat='17' readonly pbrFunctionsFile='/etc/init.d/pbr' if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr From 9e0bdbed7a27f06a59361efbdce4a6e4cd64dc1e Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 18 Sep 2025 01:05:58 +0000 Subject: [PATCH 050/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b7c0e05..45dea8a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=33 +PKG_RELEASE:=37 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From b6ffbe3a27f0ac76c175725f454b9f4cb52f76e1 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 18 Sep 2025 20:01:25 +0000 Subject: [PATCH 051/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 45dea8a..c2c0ad2 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=37 +PKG_RELEASE:=39 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 1bd73ec6a85856f740843630f9d98d72c4d6d6a0 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 20 Sep 2025 23:13:33 +0000 Subject: [PATCH 052/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c2c0ad2..9cac51c 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=39 +PKG_RELEASE:=41 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From d17d0948f78adcc554875932fc341abc5fc11ad5 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 21 Sep 2025 04:43:36 +0000 Subject: [PATCH 053/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9cac51c..89dc582 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=41 +PKG_RELEASE:=43 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From b8cb2892ec2439d5a2cc25bad94875caae4c5478 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 22 Sep 2025 01:38:10 +0000 Subject: [PATCH 054/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 89dc582..6d43414 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=43 +PKG_RELEASE:=45 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 1c2fc4681cebbab7866e4094b8d5cb63dea80486 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 23 Sep 2025 00:54:03 +0000 Subject: [PATCH 055/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6d43414..5d94d5a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=45 +PKG_RELEASE:=47 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 4ce6cacab472cf5636597e5474d74ab4998f445c Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 23 Sep 2025 22:32:57 +0000 Subject: [PATCH 056/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5d94d5a..84bc2dd 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=47 +PKG_RELEASE:=49 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 8e92e686b456c9e37c9c6fd55f186f93110fbfbb Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 24 Sep 2025 20:01:27 +0000 Subject: [PATCH 057/185] IPKG_INSTROOT and ubus fixes --- Makefile | 2 +- root/usr/libexec/rpcd/luci.pbr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 84bc2dd..6eee0af 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.1.9 -PKG_RELEASE:=49 +PKG_RELEASE:=53 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index de6f7b0..2cb9b33 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -13,7 +13,7 @@ # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' readonly rpcdCompat='17' -readonly pbrFunctionsFile='/etc/init.d/pbr' +readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr . "$pbrFunctionsFile" From f6284d74348c11d6964a22d13b9b348066779fee Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 27 Sep 2025 02:37:05 +0000 Subject: [PATCH 058/185] create 1.2.0 --- .github/workflows/openwrt-release.yml | 2 +- Makefile | 4 ++-- htdocs/luci-static/resources/pbr/status.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index e755261..54ff917 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -5,7 +5,7 @@ name: Build OpenWrt Package on: push: branches: - - 1.1.9 + - 1.2.0 workflow_dispatch: jobs: diff --git a/Makefile b/Makefile index 6eee0af..57a6214 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin -PKG_VERSION:=1.1.9 -PKG_RELEASE:=53 +PKG_VERSION:=1.2.0 +PKG_RELEASE:=0 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 20ef9b4..6820d93 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -14,7 +14,7 @@ var pkg = { return 17; }, get ReadmeCompat() { - return "1.1.9"; + return "1.2.0"; }, get URL() { return ( From 4a7c87c4a91e1e4d5faa54494222b6764075e286 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 28 Sep 2025 20:14:18 +0000 Subject: [PATCH 059/185] version bump --- .github/workflows/openwrt-release.yml | 2 +- Makefile | 4 ++-- htdocs/luci-static/resources/pbr/status.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index 54ff917..00043a3 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -5,7 +5,7 @@ name: Build OpenWrt Package on: push: branches: - - 1.2.0 + - 1.2.1 workflow_dispatch: jobs: diff --git a/Makefile b/Makefile index 57a6214..278620c 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin -PKG_VERSION:=1.2.0 -PKG_RELEASE:=0 +PKG_VERSION:=1.2.1 +PKG_RELEASE:=1 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 6820d93..dd3d237 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -14,7 +14,7 @@ var pkg = { return 17; }, get ReadmeCompat() { - return "1.2.0"; + return "1.2.1"; }, get URL() { return ( From 38e741f589c82aadfcaae03be3dfd6610017777d Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 30 Sep 2025 20:02:38 +0000 Subject: [PATCH 060/185] netifd-related changes --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 11 +++- po/templates/pbr.pot | 68 +++++++++++++--------- root/usr/libexec/rpcd/luci.pbr | 2 +- 4 files changed, 52 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 278620c..9422c3d 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=1 +PKG_RELEASE:=3 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index dd3d237..367eb0a 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 17; + return 18; }, get ReadmeCompat() { return "1.2.1"; @@ -433,6 +433,15 @@ var status = baseclass.extend({ "Invalid OpenVPN config for '%s' interface" ), errorNftFileInstall: _("Failed to install fw4 nft file '%s'"), + errorNftNetifdFileInstall: _( + "Failed to install fw4 netifd nft file '%s'" + ), + errorNftNetifdFileRemove: _( + "Failed to remove fw4 netifd nft file '%s'" + ), + errorMissingNetifdOption: _( + "Netifd extensions setup requires setting up option '%s'" + ), errorNoDownloadWithSecureReload: _( "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" ), diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 0af3293..042b1c6 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -67,7 +67,7 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 msgid "Command failed: '%s'" msgstr "" @@ -107,15 +107,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:585 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:594 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:579 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:588 msgid "Disabling %s service" msgstr "" @@ -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:632 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:641 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:566 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:575 msgid "Enable" msgstr "" @@ -167,7 +167,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:560 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:569 msgid "Enabling %s service" msgstr "" @@ -175,11 +175,11 @@ msgstr "" msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -189,18 +189,22 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 +msgid "Failed to install fw4 netifd nft file '%s'" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 msgid "Failed to install fw4 nft file '%s'" msgstr "" @@ -209,6 +213,10 @@ msgstr "" msgid "Failed to reload '%s'" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 +msgid "Failed to remove fw4 netifd nft file '%s'" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 msgid "Failed to resolve '%s'" msgstr "" @@ -249,7 +257,7 @@ msgstr "" msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -335,6 +343,10 @@ msgid "" "check the %sREADME%s." msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 +msgid "Netifd extensions setup requires setting up option '%s'" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:188 msgid "No Change" msgstr "" @@ -353,7 +365,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:640 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:649 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -402,7 +414,7 @@ msgstr "" msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -451,7 +463,7 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 msgid "Required binary '%s' is missing" msgstr "" @@ -477,11 +489,11 @@ 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:528 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:537 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:522 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:531 msgid "Restarting %s service" msgstr "" @@ -507,11 +519,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:611 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:620 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 msgid "Service Errors" msgstr "" @@ -542,11 +554,11 @@ msgstr "" msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:509 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:518 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:503 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 msgid "Starting %s service" msgstr "" @@ -561,7 +573,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:547 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:556 msgid "Stop" msgstr "" @@ -573,7 +585,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:541 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:550 msgid "Stopping %s service" msgstr "" @@ -631,7 +643,7 @@ msgstr "" msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 msgid "The file:// schema requires curl, but it's not detected on this system" msgstr "" @@ -651,7 +663,7 @@ msgstr "" msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" @@ -659,7 +671,7 @@ msgstr "" msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 msgid "Unknown error" msgstr "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 2cb9b33..b0fec27 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -12,7 +12,7 @@ # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='17' +readonly rpcdCompat='18' readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr From f341823f7cd5d90a8c10732f5bd569e277de07da Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 1 Oct 2025 04:51:29 +0000 Subject: [PATCH 061/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9422c3d..922fa3a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=3 +PKG_RELEASE:=5 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From f8a83b049e955e94b7aecd070150ef3c75e20f92 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 1 Oct 2025 16:49:02 +0000 Subject: [PATCH 062/185] sync with principal --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 29 ++-- po/templates/pbr.pot | 168 +++++++++++---------- root/usr/libexec/rpcd/luci.pbr | 2 +- 4 files changed, 111 insertions(+), 90 deletions(-) diff --git a/Makefile b/Makefile index 922fa3a..4cb7eb6 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=5 +PKG_RELEASE:=7 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 367eb0a..b55e34e 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 18; + return 19; }, get ReadmeCompat() { return "1.2.1"; @@ -317,6 +317,9 @@ var status = baseclass.extend({ warningIncompatibleDHCPOption6: _( "Incompatible DHCP Option 6 for interface %s" ), + warningNetifdMissingInterfaceLocal: _( + "Netifd setup: option netifd_interface_local is missing, assuming '%s'" + ), }; var warningsTitle = E( "label", @@ -433,15 +436,6 @@ var status = baseclass.extend({ "Invalid OpenVPN config for '%s' interface" ), errorNftFileInstall: _("Failed to install fw4 nft file '%s'"), - errorNftNetifdFileInstall: _( - "Failed to install fw4 netifd nft file '%s'" - ), - errorNftNetifdFileRemove: _( - "Failed to remove fw4 netifd nft file '%s'" - ), - errorMissingNetifdOption: _( - "Netifd extensions setup requires setting up option '%s'" - ), errorNoDownloadWithSecureReload: _( "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" ), @@ -466,6 +460,21 @@ var status = baseclass.extend({ "Failed to create temporary file with mktemp mask: '%s'" ), errorSummary: _("Errors encountered, please check %s"), + errorNetifdNftFileInstall: _( + "Netifd setup: failed to install fw4 netifd nft file '%s'" + ), + errorNetifdNftFileRemove: _( + "Netifd setup: failed to remove fw4 netifd nft file '%s'" + ), + errorNetifdMissingOption: _( + "Netifd setup: required option '%s' is missing" + ), + errorNetifdInvalidGateway4: _( + "Netifd setup: invalid value of netifd_interface_default option '%s'" + ), + errorNetifdInvalidGateway6: _( + "Netifd setup: invalid value of netifd_interface_default6 option '%s'" + ), }; var errorsTitle = E( "label", diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 042b1c6..7e10814 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -2,11 +2,11 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:277 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 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:455 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 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:353 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 msgid "Config (%s) validation failure" msgstr "" @@ -87,7 +87,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -107,15 +107,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:594 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:603 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:588 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 msgid "Disabling %s service" msgstr "" @@ -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:641 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:650 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:575 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:584 msgid "Enable" msgstr "" @@ -167,19 +167,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:569 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:406 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -189,43 +189,35 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 -msgid "Failed to install fw4 netifd nft file '%s'" -msgstr "" - -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 -msgid "Failed to remove fw4 netifd nft file '%s'" -msgstr "" - -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 msgid "Failed to set up any gateway" msgstr "" @@ -257,7 +249,7 @@ msgstr "" msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -271,11 +263,11 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:428 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" @@ -287,7 +279,7 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 msgid "Interface '%s' has no assigned DNS" msgstr "" @@ -302,7 +294,7 @@ msgstr "" msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -315,7 +307,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -343,8 +335,28 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 -msgid "Netifd extensions setup requires setting up option '%s'" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 +msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:467 +msgid "Netifd setup: failed to remove fw4 netifd nft file '%s'" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 +msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 +msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:321 +msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 +msgid "Netifd setup: required option '%s' is missing" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:188 @@ -365,7 +377,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:649 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:658 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -398,23 +410,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -439,11 +451,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:379 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface" msgstr "" @@ -463,15 +475,15 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:364 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 msgid "Resolver set (%s) is not supported on this system" msgstr "" @@ -479,21 +491,21 @@ msgstr "" msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361 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:361 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:364 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:537 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:546 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:531 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:540 msgid "Restarting %s service" msgstr "" @@ -519,11 +531,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:620 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:629 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 msgid "Service Errors" msgstr "" @@ -540,7 +552,7 @@ msgstr "" msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:324 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327 msgid "Service Warnings" msgstr "" @@ -550,15 +562,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:518 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:521 msgid "Starting %s service" msgstr "" @@ -573,7 +585,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:556 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:565 msgid "Stop" msgstr "" @@ -585,7 +597,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:550 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:559 msgid "Stopping %s service" msgstr "" @@ -609,7 +621,7 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 msgid "Syntax error in custom user file '%s'" msgstr "" @@ -617,7 +629,7 @@ msgstr "" msgid "The %s indicates default gateway. 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:376 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -627,11 +639,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:373 msgid "The %s service failed to discover WAN gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370 msgid "The %s service is currently disabled" msgstr "" @@ -643,15 +655,15 @@ msgstr "" msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 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:379 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:385 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" @@ -659,19 +671,19 @@ msgstr "" msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:385 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 msgid "Unknown error" msgstr "" @@ -679,15 +691,15 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 msgid "Unknown warning" msgstr "" @@ -695,7 +707,7 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -725,7 +737,7 @@ msgstr "" msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:337 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index b0fec27..6aa482e 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -12,7 +12,7 @@ # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='18' +readonly rpcdCompat='19' readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr From 616b60394dfeb997a51600f91e3030a4ba58b291 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 2 Oct 2025 05:48:06 +0000 Subject: [PATCH 063/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4cb7eb6..d648957 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=7 +PKG_RELEASE:=11 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 62ae4313e860190c8bdd705511cb6663ea492fae Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 3 Oct 2025 00:45:49 +0000 Subject: [PATCH 064/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d648957..54a1cfc 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=11 +PKG_RELEASE:=13 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 24633043c54f6ecc4cf52c5d1e4159df20aa5e02 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 3 Oct 2025 18:44:58 +0000 Subject: [PATCH 065/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 54a1cfc..9470f68 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=13 +PKG_RELEASE:=15 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 0cfbc6fffbba8dbd3794df3932e89143b38e7f9c Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 8 Oct 2025 01:00:48 +0000 Subject: [PATCH 066/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9470f68..394246b 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=15 +PKG_RELEASE:=17 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 3055b26b061a2ff48a712b19049239291a8b6512 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 10 Oct 2025 01:06:10 +0000 Subject: [PATCH 067/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 394246b..7702476 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=17 +PKG_RELEASE:=19 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From aabc4bb2bcee4a716988d92eeb98d1b4c4e381f2 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 22 Oct 2025 19:11:02 +0000 Subject: [PATCH 068/185] update to r21 --- Makefile | 2 +- .../resources/view/pbr/overview.js | 2 -- po/templates/pbr.pot | 30 +++++++++---------- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 7702476..16e646c 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=19 +PKG_RELEASE:=21 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 9ad2411..df4e9fa 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -321,9 +321,7 @@ return view.extend({ o = s.option(form.ListValue, "chain", _("Chain")); o.value("", "prerouting"); o.value("forward", "forward"); - o.value("input", "input"); o.value("output", "output"); - o.value("postrouting", "postrouting"); o.default = ""; o.rmempty = true; diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 7e10814..4ed3ad3 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -83,7 +83,7 @@ msgstr "" msgid "Controls both system log and console output verbosity." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:406 msgid "Custom User File Includes" msgstr "" @@ -91,15 +91,15 @@ msgstr "" msgid "Custom user file '%s' not found or empty" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:340 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:338 msgid "DNS Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:397 msgid "DSCP Tag" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:384 msgid "DSCP Tagging" msgstr "" @@ -162,8 +162,8 @@ msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:135 #: 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:421 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:352 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:419 msgid "Enabled" msgstr "" @@ -275,7 +275,7 @@ msgstr "" msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:330 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:328 msgid "Interface" msgstr "" @@ -299,7 +299,7 @@ msgid "Invalid OpenVPN config for '%s' interface" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:280 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:361 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:359 msgid "Local addresses / devices" msgstr "" @@ -316,7 +316,7 @@ msgid "Mode" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:278 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:358 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:356 msgid "Name" msgstr "" @@ -328,7 +328,7 @@ msgid "" "fields are left blank. For more information on options, check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:342 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:340 msgid "" "Name, local address and remote DNS fields are required. Multiple local " "addresses/devices can be space separated. For more information on options, " @@ -372,7 +372,7 @@ msgstr "" msgid "Output verbosity" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:426 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:424 msgid "Path" msgstr "" @@ -459,11 +459,11 @@ msgstr "" 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 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:366 msgid "Remote DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:376 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:374 msgid "Remote DNS Port" msgstr "" @@ -513,7 +513,7 @@ msgstr "" msgid "Rule Create option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:408 msgid "" "Run the following user files after setting up but before restarting DNSMASQ. " "See the %sREADME%s for details." @@ -556,7 +556,7 @@ msgstr "" msgid "Service Warnings" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:388 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:386 msgid "" "Set DSCP tags (in range between 1 and 63) for specific interfaces. See the " "%sREADME%s for details." From 84861f4594a23b77be48e3c56c7f92d4b59bbcc0 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Thu, 6 Nov 2025 16:50:47 +0100 Subject: [PATCH 069/185] Update Makefile 1.2.1, Version bump, sync with pbr (#8) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 16e646c..28fea1d 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=21 +PKG_RELEASE:=23 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From e81bdce98761759d8a4c459474514709b62d0ce3 Mon Sep 17 00:00:00 2001 From: Braulio Oliveira Date: Sat, 8 Nov 2025 23:51:55 -0300 Subject: [PATCH 070/185] Add uplink_ip_rules_priority configuration option Implement the uplink_ip_rules_priority option in the Advanced Configuration tab. This option allows users to configure the starting IP rules priority used by the pbr service for WAN/uplink interfaces. The default value is 30000. The option was documented but missing from the UI. This change adds it to match the pbr service configuration option name (uplink_ip_rules_priority). --- htdocs/luci-static/resources/view/pbr/overview.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index df4e9fa..6969935 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -227,6 +227,21 @@ return view.extend({ o.placeholder = "ff0000"; o.datatype = "hexstring"; + o = s.taboption( + "tab_advanced", + form.Value, + "uplink_ip_rules_priority", + _("Uplink IP Rules Priority"), + _( + "Starting (Uplink/WAN) ip rules priority used by the pbr service. High starting priority is " + + "used to avoid conflict with other services, this can be changed by user." + ) + ); + o.rmempty = true; + o.placeholder = "30000"; + o.datatype = "uinteger"; + o.default = "30000"; + o = s.taboption( "tab_webui", form.ListValue, From 4c7ac7167fcef0837dc28f7c9aad4bd1ac6f386e Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 21 Nov 2025 22:23:55 +0000 Subject: [PATCH 071/185] fix platform support in reply, trim rpcd script --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 27 +- po/templates/pbr.pot | 281 +++++++++++---------- root/usr/libexec/rpcd/luci.pbr | 1 - 4 files changed, 159 insertions(+), 152 deletions(-) diff --git a/Makefile b/Makefile index 28fea1d..5d5f472 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=23 +PKG_RELEASE:=25 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index b55e34e..32bb602 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -69,12 +69,6 @@ var pkg = { }, }; -var getGateways = rpc.declare({ - object: "luci." + pkg.Name, - method: "getGateways", - params: ["name"], -}); - var getInitList = rpc.declare({ object: "luci." + pkg.Name, method: "getInitList", @@ -87,12 +81,6 @@ var getInitStatus = rpc.declare({ params: ["name"], }); -var getInterfaces = rpc.declare({ - object: "luci." + pkg.Name, - method: "getInterfaces", - params: ["name"], -}); - var getPlatformSupport = rpc.declare({ object: "luci." + pkg.Name, method: "getPlatformSupport", @@ -143,8 +131,9 @@ var status = baseclass.extend({ render: function () { return Promise.all([ L.resolveDefault(getInitStatus(pkg.Name), {}), + L.resolveDefault(getPlatformSupport(pkg.Name), {}), L.resolveDefault(getUbusInfo(pkg.Name), {}), - ]).then(function ([initStatus, ubusInfo]) { + ]).then(function ([initStatus, platformSupport, ubusInfo]) { var reply = { status: initStatus?.[pkg.Name] || { enabled: null, @@ -153,10 +142,19 @@ var status = baseclass.extend({ running_nft: null, running_nft_file: null, version: null, - gateways: null, packageCompat: 0, rpcdCompat: 0, }, + platform: platformSupport?.[pkg.Name] || { + ipset_installed: false, + nft_installed: false, + adguardhome_installed: false, + dnsmasq_installed: false, + unbound_installed: false, + adguardhome_ipset_support: false, + dnsmasq_ipset_support: false, + dnsmasq_nftset_support: false, + }, ubus: ubusInfo?.[pkg.Name]?.instances?.main?.data || { packageCompat: 0, gateways: [], @@ -688,7 +686,6 @@ return L.Class.extend({ status: status, pkg: pkg, getInitStatus: getInitStatus, - getInterfaces: getInterfaces, getPlatformSupport: getPlatformSupport, getUbusInfo: getUbusInfo, }); diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 4ed3ad3..5cac357 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:277 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:357 msgid "%s binary cannot be found" msgstr "" @@ -29,11 +29,11 @@ msgstr "" msgid "Add" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:234 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:249 msgid "Add Ignore Target" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:236 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:251 msgid "" "Adds 'ignore' to the list of interfaces for policies. See the %sREADME%s for " "details." @@ -63,11 +63,11 @@ msgstr "" msgid "Basic Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:321 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:336 msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 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:356 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 msgid "Config (%s) validation failure" msgstr "" @@ -83,23 +83,23 @@ msgstr "" msgid "Controls both system log and console output verbosity." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:406 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:421 msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 msgid "Custom user file '%s' not found or empty" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:338 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:353 msgid "DNS Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:397 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:412 msgid "DSCP Tag" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:384 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:399 msgid "DSCP Tagging" msgstr "" @@ -107,33 +107,33 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:603 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:601 msgid "Disable" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:114 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:134 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:242 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:257 msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:595 msgid "Disabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:252 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:267 msgid "Display these protocols in protocol column in Web UI." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:303 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:301 msgid "" "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own " "confdir" @@ -151,35 +151,35 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:650 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:648 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:584 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:582 msgid "Enable" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:135 -#: 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:352 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:419 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:258 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:289 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:367 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:434 msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:576 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:406 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -189,35 +189,35 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 msgid "Failed to install fw4 nft file '%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:401 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 msgid "Failed to set up any gateway" msgstr "" @@ -245,15 +245,15 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:318 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:316 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:300 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:298 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -263,51 +263,51 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:428 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:273 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:328 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:343 msgid "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:394 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:269 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:267 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:291 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:289 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:280 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:359 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:295 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:374 msgid "Local addresses / devices" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:286 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:301 msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -315,12 +315,12 @@ msgstr "" msgid "Mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:278 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:356 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:293 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:371 msgid "Name" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:261 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:276 msgid "" "Name, interface and at least one other field are required. Multiple local " "and remote addresses/devices/domains and ports can be space separated. " @@ -328,34 +328,34 @@ msgid "" "fields are left blank. For more information on options, check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:340 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:355 msgid "" "Name, local address and remote DNS fields are required. Multiple local " "addresses/devices can be space separated. For more information on options, " "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:467 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:465 msgid "Netifd setup: failed to remove fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:321 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:319 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -363,7 +363,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:217 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:215 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" @@ -372,12 +372,12 @@ msgstr "" msgid "Output verbosity" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:424 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:439 msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:658 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:242 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:656 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -385,48 +385,48 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:305 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:285 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:283 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:288 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:282 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:280 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:277 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:259 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:274 msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -439,7 +439,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:190 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:188 msgid "Policy Based Routing - Status" msgstr "" @@ -447,65 +447,65 @@ msgstr "" msgid "Policy Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:304 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:319 msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:379 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:377 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:366 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:381 msgid "Remote DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:374 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:389 msgid "Remote DNS Port" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:292 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:307 msgid "Remote addresses / domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:298 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:313 msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:365 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:272 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:270 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:361 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 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:364 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:362 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:546 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:544 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:540 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 msgid "Restarting %s service" msgstr "" @@ -513,13 +513,13 @@ msgstr "" msgid "Rule Create option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:423 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:199 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:197 msgid "Running" msgstr "" @@ -531,11 +531,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:629 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:627 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 msgid "Service Errors" msgstr "" @@ -544,33 +544,33 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:231 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:229 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:194 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:192 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:325 msgid "Service Warnings" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:401 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:413 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:525 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:521 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:519 msgid "Starting %s service" msgstr "" @@ -581,23 +581,30 @@ msgid "" "together with" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:236 +msgid "" +"Starting (Uplink/WAN) ip rules priority used by the pbr service. High " +"starting priority is used to avoid conflict with other services, this can be " +"changed by user." +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:565 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:563 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:213 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:209 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:559 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:557 msgid "Stopping %s service" msgstr "" @@ -613,7 +620,7 @@ msgstr "" msgid "Supported Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:251 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:266 msgid "Supported Protocols" msgstr "" @@ -621,15 +628,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:376 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:374 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -639,11 +646,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:373 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:371 msgid "The %s service failed to discover WAN gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:368 msgid "The %s service is currently disabled" msgstr "" @@ -651,39 +658,39 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:294 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:292 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 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:382 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:385 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:383 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:297 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:295 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:388 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 msgid "Unknown IPv6 Link type for device '%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:428 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 msgid "Unknown error" msgstr "" @@ -691,23 +698,27 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:332 msgid "Unknown warning" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:234 +msgid "Uplink IP Rules Priority" +msgstr "" + #: 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:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:406 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -725,7 +736,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:197 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:195 msgid "Version %s" msgstr "" @@ -733,11 +744,11 @@ msgstr "" msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:316 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:314 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:337 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:335 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" @@ -745,21 +756,21 @@ msgstr "" msgid "Web UI Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:313 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:328 msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:203 +#: 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:44 msgid "fw4 nft file mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:201 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:199 #: 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:205 +#: 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:46 msgid "nft mode" msgstr "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 6aa482e..e01aabd 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -113,7 +113,6 @@ get_init_status() { json_add_boolean 'running_nft_file' '0' fi json_add_string 'version' "$PKG_VERSION" - json_add_string 'gateways' "$gateways" json_add_int 'packageCompat' "${packageCompat:-0}" json_add_int 'rpcdCompat' "${rpcdCompat:-0}" json_close_object From cbebafc380623d5b5079b1fc11e1327bf595e636 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 24 Nov 2025 21:01:32 +0000 Subject: [PATCH 072/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5d5f472..3ca18f5 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=25 +PKG_RELEASE:=27 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 34bf3590ba65f149cf4b07a65d6f9ce572576f05 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 28 Nov 2025 20:11:47 +0000 Subject: [PATCH 073/185] fix non-function calls --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 20 +- po/templates/pbr.pot | 206 ++++++++++----------- 3 files changed, 112 insertions(+), 116 deletions(-) diff --git a/Makefile b/Makefile index 3ca18f5..2ba406e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=27 +PKG_RELEASE:=31 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 32bb602..bc5c01f 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -81,6 +81,12 @@ var getInitStatus = rpc.declare({ params: ["name"], }); +var getInterfaces = rpc.declare({ + object: "luci." + pkg.Name, + method: "getInterfaces", + params: ["name"], +}); + var getPlatformSupport = rpc.declare({ object: "luci." + pkg.Name, method: "getPlatformSupport", @@ -131,9 +137,8 @@ var status = baseclass.extend({ render: function () { return Promise.all([ L.resolveDefault(getInitStatus(pkg.Name), {}), - L.resolveDefault(getPlatformSupport(pkg.Name), {}), L.resolveDefault(getUbusInfo(pkg.Name), {}), - ]).then(function ([initStatus, platformSupport, ubusInfo]) { + ]).then(function ([initStatus, ubusInfo]) { var reply = { status: initStatus?.[pkg.Name] || { enabled: null, @@ -145,16 +150,6 @@ var status = baseclass.extend({ packageCompat: 0, rpcdCompat: 0, }, - platform: platformSupport?.[pkg.Name] || { - ipset_installed: false, - nft_installed: false, - adguardhome_installed: false, - dnsmasq_installed: false, - unbound_installed: false, - adguardhome_ipset_support: false, - dnsmasq_ipset_support: false, - dnsmasq_nftset_support: false, - }, ubus: ubusInfo?.[pkg.Name]?.instances?.main?.data || { packageCompat: 0, gateways: [], @@ -686,6 +681,7 @@ return L.Class.extend({ status: status, pkg: pkg, getInitStatus: getInitStatus, + getInterfaces: getInterfaces, getPlatformSupport: getPlatformSupport, getUbusInfo: getUbusInfo, }); diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 5cac357..3b87af1 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:270 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:357 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:352 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:447 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 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:354 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:349 msgid "Config (%s) validation failure" msgstr "" @@ -87,7 +87,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -107,15 +107,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:601 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:595 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 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:301 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:296 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:648 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:643 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:582 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:577 msgid "Enable" msgstr "" @@ -167,19 +167,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:576 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:571 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -189,35 +189,35 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 msgid "Failed to set up any gateway" msgstr "" @@ -245,15 +245,15 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:316 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:311 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 msgid "Incompatible custom user file detected '%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:293 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -263,15 +263,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:421 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:418 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:273 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:268 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -279,22 +279,22 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:267 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:262 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:289 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:284 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -307,7 +307,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:412 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -335,27 +335,27 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:465 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Netifd setup: failed to remove fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%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:314 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -363,7 +363,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:215 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" @@ -376,8 +376,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:242 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:656 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:237 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:651 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -385,24 +385,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:305 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:300 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:283 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:278 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:281 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:280 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:277 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:272 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -410,23 +410,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:391 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -439,7 +439,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:188 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:183 msgid "Policy Based Routing - Status" msgstr "" @@ -451,11 +451,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:377 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:372 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface" msgstr "" @@ -475,37 +475,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:365 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:360 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:270 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 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:362 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:357 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:544 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:539 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:533 msgid "Restarting %s service" msgstr "" @@ -519,7 +519,7 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:197 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:192 msgid "Running" msgstr "" @@ -531,11 +531,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:627 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:622 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 msgid "Service Errors" msgstr "" @@ -544,15 +544,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:229 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:224 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:192 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:187 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:325 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 msgid "Service Warnings" msgstr "" @@ -562,15 +562,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:406 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:525 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:519 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 msgid "Starting %s service" msgstr "" @@ -592,19 +592,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:563 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:209 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:204 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:557 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:552 msgid "Stopping %s service" msgstr "" @@ -628,15 +628,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:374 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:369 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -646,11 +646,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:371 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:366 msgid "The %s service failed to discover WAN gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:368 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:363 msgid "The %s service is currently disabled" msgstr "" @@ -658,39 +658,39 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:292 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:287 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 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:380 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:375 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:383 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:295 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:290 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:381 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:428 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 msgid "Unknown error" msgstr "" @@ -698,15 +698,15 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:332 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327 msgid "Unknown warning" msgstr "" @@ -718,7 +718,7 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:406 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -736,7 +736,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:195 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:190 msgid "Version %s" msgstr "" @@ -744,11 +744,11 @@ msgstr "" msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:314 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:335 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" @@ -760,17 +760,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:201 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:196 #: 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:199 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:194 #: 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:203 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:198 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 msgid "nft mode" msgstr "" From 4f009497dad5b8ca76bd16acb0235e39b6fa0b99 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Mon, 8 Dec 2025 12:51:11 +0100 Subject: [PATCH 074/185] Version Bump to get in line with PBR --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2ba406e..b2eb703 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=31 +PKG_RELEASE:=33 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 71ff140e2b08e59d54178e39d1be5cd44c8dfdc1 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 8 Dec 2025 19:44:28 +0000 Subject: [PATCH 075/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b2eb703..503da86 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=33 +PKG_RELEASE:=35 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 43db884d47d263f6e45701295bdc852e1d6f4a48 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 9 Dec 2025 02:36:26 +0000 Subject: [PATCH 076/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 503da86..700ad7d 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=35 +PKG_RELEASE:=37 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From b5c330694c263150ab6d5a2674236b36d9c5785a Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 9 Dec 2025 22:13:11 +0000 Subject: [PATCH 077/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 700ad7d..30de47c 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=37 +PKG_RELEASE:=41 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 8160b91c53a4ccfa17b659b3d98a55c705f3b627 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 21 Dec 2025 04:08:30 +0000 Subject: [PATCH 078/185] feat: update translation template line numbers and modify RPC script --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 62 ++++++- po/templates/pbr.pot | 206 ++++++++++----------- root/usr/libexec/rpcd/luci.pbr | 4 +- 4 files changed, 158 insertions(+), 116 deletions(-) diff --git a/Makefile b/Makefile index 30de47c..4a59bc6 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=41 +PKG_RELEASE:=43 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index bc5c01f..43c9037 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 19; + return 20; }, get ReadmeCompat() { return "1.2.1"; @@ -133,6 +133,44 @@ var RPC = { }, }; +// Poll service status until completion (for long-running operations like download) +var pollServiceStatus = function (callback) { + var maxAttempts = 300; // Max 5 minutes of polling + var attempt = 0; + + var checkStatus = function () { + attempt++; + + // Use the RPC function directly from the module scope + L.resolveDefault(getInitStatus(pkg.Name), {}).then(function (statusData) { + var currentStatus = statusData && statusData[pkg.Name] && statusData[pkg.Name].running; + + // Check if completed or failed + if (currentStatus === true) { + callback(true, currentStatus); + } + // Check if timed out + else if (attempt >= maxAttempts) { + callback(false, 'timeout'); + } + // Continue polling + else { + setTimeout(checkStatus, 1000); // Check again in 1 second + } + }).catch(function (err) { + // Retry on error unless timed out + if (attempt < maxAttempts) { + setTimeout(checkStatus, 1000); + } else { + callback(false, 'error'); + } + }); + }; + + // Start polling after 2 seconds delay (give backend time to start the task) + setTimeout(checkStatus, 3000); +}; + var status = baseclass.extend({ render: function () { return Promise.all([ @@ -172,8 +210,8 @@ var status = baseclass.extend({ pkg.LuciCompat, reply.status.rpcdCompat, '', + pkg.URL + + '#Warning:InternalVersionMismatch" target="_blank">', "", ], }); @@ -229,8 +267,8 @@ var status = baseclass.extend({ ).format( "โœ“", '', + pkg.URL + + '#AWordAboutDefaultRouting" target="_blank">', "" ) + "
" + @@ -300,9 +338,9 @@ var status = baseclass.extend({ "Please set 'dhcp.%%s.force=1' to speed up service start-up %s(more info)%s" ).format( "", + pkg.URL + + "#Warning:Pleasesetdhcp.lan.force1" + + "' target='_blank'>", "" ) ), @@ -673,8 +711,12 @@ var status = baseclass.extend({ }); RPC.on("setInitAction", function (reply) { - ui.hideModal(); - location.reload(); + // Don't immediately hide modal and reload + // Instead, poll status until the operation actually completes + pollServiceStatus(function () { + ui.hideModal(); + location.reload(); + }); }); return L.Class.extend({ diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 3b87af1..843b660 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:270 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:308 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:352 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390 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:442 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 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:349 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 msgid "Config (%s) validation failure" msgstr "" @@ -87,7 +87,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -107,15 +107,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:634 msgid "Disable" msgstr "" @@ -125,7 +125,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:628 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:296 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 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:643 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:681 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:577 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:615 msgid "Enable" msgstr "" @@ -167,19 +167,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:571 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:609 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -189,35 +189,35 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:491 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:465 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 msgid "Failed to set up '%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:441 msgid "Failed to set up any gateway" msgstr "" @@ -245,15 +245,15 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:311 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:349 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:293 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -263,15 +263,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:421 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:418 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:456 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:268 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:306 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -279,22 +279,22 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:262 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:300 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:284 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:322 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:467 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -307,7 +307,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:412 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -335,27 +335,27 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Netifd setup: failed to remove fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:314 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:352 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -363,7 +363,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" @@ -376,8 +376,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:237 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:651 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:689 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -385,24 +385,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:300 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 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:278 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:316 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:281 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:319 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:313 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:272 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:310 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -410,23 +410,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -439,7 +439,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:183 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:221 msgid "Policy Based Routing - Status" msgstr "" @@ -451,11 +451,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:372 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface" msgstr "" @@ -475,37 +475,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:360 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:303 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 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:357 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 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:539 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:577 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:533 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:571 msgid "Restarting %s service" msgstr "" @@ -519,7 +519,7 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:192 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230 msgid "Running" msgstr "" @@ -531,11 +531,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:622 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:660 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:513 msgid "Service Errors" msgstr "" @@ -544,15 +544,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:224 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:262 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:187 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:225 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358 msgid "Service Warnings" msgstr "" @@ -562,15 +562,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:406 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:552 msgid "Starting %s service" msgstr "" @@ -592,19 +592,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:204 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:242 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:552 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 msgid "Stopping %s service" msgstr "" @@ -628,15 +628,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:266 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:369 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -646,11 +646,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:366 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 msgid "The %s service failed to discover WAN gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:363 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 msgid "The %s service is currently disabled" msgstr "" @@ -658,39 +658,39 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:287 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:325 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:478 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:375 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:290 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:328 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:381 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "Unknown error" msgstr "" @@ -698,15 +698,15 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 msgid "Unknown protocol in policy '%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:365 msgid "Unknown warning" msgstr "" @@ -718,7 +718,7 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -736,7 +736,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:190 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 msgid "Version %s" msgstr "" @@ -744,11 +744,11 @@ msgstr "" msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:347 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:368 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" @@ -760,17 +760,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:196 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:234 #: 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:194 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:232 #: 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:198 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:236 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 msgid "nft mode" msgstr "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index e01aabd..0211eb6 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -12,7 +12,7 @@ # ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='19' +readonly rpcdCompat='20' readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr @@ -24,7 +24,7 @@ fi # compatibility with old luci app versions is_running_iptables() { iptables -t mangle -n -L | grep -q PBR_PREROUTING >/dev/null 2>&1; } -is_running() { is_running_iptables || is_running_nft; } +is_running() { exists_lockfile && { is_running_iptables || is_running_nft; }; } check_ipset() { { [ -n "$ipset" ] && "$ipset" help hash:net; } >/dev/null 2>&1; } check_agh_ipset() { check_ipset || return 1 From b3e9aff3c440aed9bc7d9ecce1079a5209f96a5c Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 29 Dec 2025 01:02:33 +0000 Subject: [PATCH 079/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4a59bc6..d5e263b 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=43 +PKG_RELEASE:=45 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From f2000184060b021500cf5217d57077772ba237a5 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 3 Jan 2026 02:01:06 +0000 Subject: [PATCH 080/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d5e263b..2728c5b 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=45 +PKG_RELEASE:=47 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From a30812fc05ec34d935f46f3c5dfa864ea61b8394 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 6 Jan 2026 22:07:50 +0000 Subject: [PATCH 081/185] bump copyright year in Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2728c5b..ea2a38a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: AGPL-3.0-or-later -# Copyright 2017-2025 MOSSDeF, Stan Grishin (stangri@melmac.ca). +# Copyright 2017-2026 MOSSDeF, Stan Grishin (stangri@melmac.ca). include $(TOPDIR)/rules.mk From 539213cb55e25189036a792bcfc2e80181820ea8 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 8 Jan 2026 04:11:28 +0000 Subject: [PATCH 082/185] update donate link --- htdocs/luci-static/resources/pbr/status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 43c9037..6e05471 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -30,7 +30,7 @@ var pkg = { pkg.Name + "/" + (pkg.ReadmeCompat ? pkg.ReadmeCompat + "/" : "") + - "#Donate" + "#donate" ); }, isVersionMismatch: function (luci, pkg, rpcd) { From 63061d2a1b2fd77ac9de5ecc8ea2fad4779a072b Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 14 Jan 2026 20:04:26 +0000 Subject: [PATCH 083/185] replace RPCD call with direct ubus pull --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 13 ++++--- root/usr/libexec/rpcd/luci.pbr | 38 +-------------------- root/usr/share/rpcd/acl.d/luci-app-pbr.json | 7 ++-- 4 files changed, 12 insertions(+), 48 deletions(-) diff --git a/Makefile b/Makefile index ea2a38a..11c87f5 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=47 +PKG_RELEASE:=49 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 6e05471..26efb99 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 20; + return 21; }, get ReadmeCompat() { return "1.2.1"; @@ -93,10 +93,10 @@ var getPlatformSupport = rpc.declare({ params: ["name"], }); -var getUbusInfo = rpc.declare({ - object: "luci." + pkg.Name, - method: "getUbusInfo", - params: ["name"], +var getServiceInfo = rpc.declare({ + object: "service", + method: "list", + params: ["name", "verbose"], }); var _setInitAction = rpc.declare({ @@ -175,7 +175,7 @@ var status = baseclass.extend({ render: function () { return Promise.all([ L.resolveDefault(getInitStatus(pkg.Name), {}), - L.resolveDefault(getUbusInfo(pkg.Name), {}), + L.resolveDefault(getServiceInfo(pkg.Name, true), {}), ]).then(function ([initStatus, ubusInfo]) { var reply = { status: initStatus?.[pkg.Name] || { @@ -725,5 +725,4 @@ return L.Class.extend({ getInitStatus: getInitStatus, getInterfaces: getInterfaces, getPlatformSupport: getPlatformSupport, - getUbusInfo: getUbusInfo, }); diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 0211eb6..e557471 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -8,11 +8,9 @@ # ubus -S call luci.pbr getInitList '{"name": "pbr" }' # ubus -S call luci.pbr getInitStatus '{"name": "pbr" }' # ubus -S call luci.pbr getPlatformSupport '{"name": "pbr" }' -# ubus -S call luci.pbr getUbusInfo '{"name": "pbr" }' -# ubus -S call luci.pbr getGateways '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='20' +readonly rpcdCompat='21' readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr @@ -171,13 +169,6 @@ get_platform_support() { json_cleanup } -# shellcheck disable=SC3037 -get_gateways() { - echo -en "{\"$packageName\":{\"gateways\":" - ubus_get_gateways - echo -en "}}" -} - get_supported_interfaces() { _build_ifaces_supported() { is_supported_interface "$1" && ! str_contains "$ifacesSupported" "$1" && ifacesSupported="${ifacesSupported}${1} "; } _find_firewall_wan_zone() { [ "$(uci_get 'firewall' "$1" 'name')" = "wan" ] && firewallWanZone="$1"; } @@ -220,19 +211,9 @@ get_supported_interfaces() { json_cleanup } -get_ubus_info() { - local name - name="$(basename "$1")" - name="${name:-$packageName}" - ubus call service list '{"name":"'"$name"'"}' -} - case "$1" in list) json_init - json_add_object "getGateways" - json_add_string 'name' 'name' - json_close_object json_add_object "getInitList" json_add_string 'name' 'name' json_close_object @@ -245,9 +226,6 @@ case "$1" in json_add_object "getPlatformSupport" json_add_string 'name' 'name' json_close_object - json_add_object "getUbusInfo" - json_add_string 'name' 'name' - json_close_object json_add_object "setInitAction" json_add_string 'name' 'name' json_add_string 'action' 'action' @@ -257,13 +235,6 @@ case "$1" in ;; call) case "$2" in - getGateways) - read -r input - json_load "$input" - json_get_var name 'name' - json_cleanup - get_gateways "$packageName" - ;; getInitList) read -r input json_load "$input" @@ -292,13 +263,6 @@ case "$1" in json_cleanup get_platform_support "$packageName" ;; - getUbusInfo) - read -r input - json_load "$input" - json_get_var name 'name' - json_cleanup - get_ubus_info "$name" - ;; setInitAction) read -r input json_load "$input" diff --git a/root/usr/share/rpcd/acl.d/luci-app-pbr.json b/root/usr/share/rpcd/acl.d/luci-app-pbr.json index f785d3a..73ec4a2 100644 --- a/root/usr/share/rpcd/acl.d/luci-app-pbr.json +++ b/root/usr/share/rpcd/acl.d/luci-app-pbr.json @@ -4,12 +4,13 @@ "read": { "ubus": { "luci.pbr": [ - "getGateways", "getInitList", "getInitStatus", "getInterfaces", - "getPlatformSupport", - "getUbusInfo" + "getPlatformSupport" + ], + "service": [ + "list" ] }, "file": { From cb166ac85683be9447cd41cc0be4d6b9af0e1e7c Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 15 Jan 2026 00:58:55 +0000 Subject: [PATCH 084/185] add line break before donate text --- htdocs/luci-static/resources/pbr/status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 26efb99..2beec66 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -271,7 +271,7 @@ var status = baseclass.extend({ '#AWordAboutDefaultRouting" target="_blank">', "" ) + - "
" + + "
" + "
" + _("Please %sdonate%s to support development of this project.").format( "", "" From 72453091988d29426cab162c8228cfa45db208a2 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 16 Jan 2026 23:43:44 +0000 Subject: [PATCH 085/185] fix command injection (thanks @iwallplace) --- Makefile | 2 +- root/usr/libexec/rpcd/luci.pbr | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 11c87f5..c4157fb 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=49 +PKG_RELEASE:=51 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index e557471..7b4012d 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -55,24 +55,23 @@ get_init_list() { } set_init_action() { - local name action="$2" cmd - name="$(basename "$1")" - name="${name:-$packageName}" + local action="$2" cmd + [ "$(basename "$1")" = "$packageName" ] || { print_json_bool 'result' '0'; return 1; } if [ ! -f "/etc/init.d/$packageName" ]; then print_json_string 'error' 'Init script not found!' return fi case $action in enable) - cmd="/etc/init.d/${name} ${action}" - cmd="${cmd} && uci_set ${name} config enabled 1 && uci_commit $name" + cmd="/etc/init.d/${packageName} ${action}" + cmd="${cmd} && uci_set ${packageName} config enabled 1 && uci_commit $packageName" ;; disable) - cmd="/etc/init.d/${name} ${action}" - cmd="${cmd} && uci_set ${name} config enabled 0 && uci_commit $name" + cmd="/etc/init.d/${packageName} ${action}" + cmd="${cmd} && uci_set ${packageName} config enabled 0 && uci_commit $packageName" ;; start|stop|reload|restart) - cmd="/etc/init.d/${name} ${action}" + cmd="/etc/init.d/${packageName} ${action}" ;; esac if [ -n "$cmd" ] && eval "$cmd" 1>/dev/null 2>&1; then From 4df3ac5e02d40420d3a1f5b06aea2941ce27d882 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 17 Jan 2026 00:06:40 +0000 Subject: [PATCH 086/185] switch CI to build using 25.12 --- .github/workflows/openwrt-release.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index 00043a3..8c2d5ee 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -34,20 +34,20 @@ jobs: # target: mips_24kc # - version: openwrt-24.10 # target: mipsel_24kc - - version: snapshots + - version: openwrt-25.12 target: x86_64 suffix: noarch - # - version: snapshots + # - version: openwrt-25.12 # target: aarch64_cortex-a53 - # - version: snapshots + # - version: openwrt-25.12 # target: aarch64_generic - # - version: snapshots + # - version: openwrt-25.12 # target: arm_cortex-a7 - # - version: snapshots + # - version: openwrt-25.12 # target: arm_cortex-a9 - # - version: snapshots + # - version: openwrt-25.12 # target: mips_24kc - # - version: snapshots + # - version: openwrt-25.12 # target: mipsel_24kc steps: From 17c28e4899f56420f6d6fd8414a9612d50037637 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 22 Jan 2026 02:05:37 +0000 Subject: [PATCH 087/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c4157fb..478db28 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=51 +PKG_RELEASE:=55 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 8ca0b10c92ac0853f2f15fd0e677464f2f2c2231 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 23 Jan 2026 22:02:18 +0000 Subject: [PATCH 088/185] update to sync with principal package --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 25 +++++- po/templates/pbr.pot | 89 +++++++++++++--------- root/usr/libexec/rpcd/luci.pbr | 18 +---- 4 files changed, 79 insertions(+), 55 deletions(-) diff --git a/Makefile b/Makefile index 478db28..cae5053 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=55 +PKG_RELEASE:=59 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 2beec66..7cf047d 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 21; + return 22; }, get ReadmeCompat() { return "1.2.1"; @@ -400,8 +400,8 @@ var status = baseclass.extend({ errorServiceDisabled: _( "The %s service is currently disabled" ).format(pkg.Name), - errorNoWanGateway: _( - "The %s service failed to discover WAN gateway" + errorNoUplinkGateway: _( + "The %s service failed to discover uplink gateway" ).format(pkg.Name), errorNoUplinkInterface: _( "The %s interface not found, you need to set the 'pbr.config.uplink_interface' option" @@ -462,6 +462,9 @@ var status = baseclass.extend({ errorInterfaceRoutingEmptyValues: _( "Received empty tid/mark or interface name when setting up routing" ), + errorInterfaceMarkOverflow: _( + "Interface mark for '%s' exceeds the fwmask value" + ), errorFailedToResolve: _("Failed to resolve '%s'"), errorInvalidOVPNConfig: _( "Invalid OpenVPN config for '%s' interface" @@ -506,6 +509,22 @@ var status = baseclass.extend({ errorNetifdInvalidGateway6: _( "Netifd setup: invalid value of netifd_interface_default6 option '%s'" ), + errorUplinkDown: _( + "Uplink/WAN interface is still down, increase value of 'procd_boot_trigger_delay' option" + ), + errorUnexpectedExit: _( + "Unexpected exit or service termination: '%s'" + ), + errorNoDownloadWithSecureReload: _( + "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" + ), + errorIncompatibleUserFile: _( + "Incompatible custom user file detected '%s'" + ), + errorTryFailed: _("Command failed: '%s'"), + errorMktempFileCreate: _( + "Failed to create temporary file with mktemp mask: '%s'" + ), }; var errorsTitle = E( "label", diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 843b660..a2d2175 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -67,7 +67,8 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:524 msgid "Command failed: '%s'" msgstr "" @@ -107,15 +108,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:634 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:653 msgid "Disable" msgstr "" @@ -125,7 +126,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:628 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:647 msgid "Disabling %s service" msgstr "" @@ -151,11 +152,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:681 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:700 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:615 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:634 msgid "Enable" msgstr "" @@ -167,7 +168,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:609 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:628 msgid "Enabling %s service" msgstr "" @@ -175,11 +176,11 @@ msgstr "" msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:542 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -189,19 +190,20 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:491 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:494 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:472 msgid "Failed to install fw4 nft file '%s'" msgstr "" @@ -209,7 +211,7 @@ msgstr "" msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:465 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 msgid "Failed to resolve '%s'" msgstr "" @@ -249,7 +251,8 @@ msgstr "" msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:522 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -283,6 +286,10 @@ msgstr "" msgid "Interface '%s' has no assigned DNS" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +msgid "Interface mark for '%s' exceeds the fwmask value" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:300 msgid "" "Internal version mismatch (package: %s, luci app: %s, luci rpcd: %s), you " @@ -294,7 +301,7 @@ msgstr "" msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:467 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -335,19 +342,19 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 msgid "Netifd setup: failed to remove fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" @@ -355,7 +362,7 @@ msgstr "" msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -377,7 +384,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:689 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:708 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -426,7 +433,8 @@ msgstr "" msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:519 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -475,7 +483,7 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 msgid "Required binary '%s' is missing" msgstr "" @@ -501,11 +509,11 @@ 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:577 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:571 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 msgid "Restarting %s service" msgstr "" @@ -531,11 +539,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:660 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:679 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:513 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:532 msgid "Service Errors" msgstr "" @@ -566,11 +574,11 @@ msgstr "" msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:577 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:552 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:571 msgid "Starting %s service" msgstr "" @@ -592,7 +600,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:615 msgid "Stop" msgstr "" @@ -604,7 +612,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:609 msgid "Stopping %s service" msgstr "" @@ -647,7 +655,7 @@ msgid "The %s is not supported on this system." msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 -msgid "The %s service failed to discover WAN gateway" +msgid "The %s service failed to discover uplink gateway" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 @@ -662,7 +670,7 @@ msgstr "" msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:478 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:481 msgid "The file:// schema requires curl, but it's not detected on this system" msgstr "" @@ -679,10 +687,11 @@ msgid "The principal package (pbr) is outdated, please update it" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:516 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:491 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" @@ -690,7 +699,7 @@ msgstr "" msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:539 msgid "Unknown error" msgstr "" @@ -718,6 +727,12 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:513 +msgid "" +"Uplink/WAN interface is still down, increase value of " +"'procd_boot_trigger_delay' option" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 7b4012d..5b8aa73 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -10,7 +10,7 @@ # ubus -S call luci.pbr getPlatformSupport '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='21' +readonly rpcdCompat='22' readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr @@ -170,26 +170,16 @@ get_platform_support() { get_supported_interfaces() { _build_ifaces_supported() { is_supported_interface "$1" && ! str_contains "$ifacesSupported" "$1" && ifacesSupported="${ifacesSupported}${1} "; } - _find_firewall_wan_zone() { [ "$(uci_get 'firewall' "$1" 'name')" = "wan" ] && firewallWanZone="$1"; } + _find_firewall_wan_zone() { [ "$(uci_get 'firewall' "$1" 'name')" = 'wan' ] && firewallWanZone="$1"; } local i local firewallWanZone local ifacesSupported - local webui_show_ignore_target - local ignored_interface supported_interface - local wanIface4 wanIface6 - config_load "$packageName" - 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 uplink_interface 'config' 'uplink_interface' 'wan' - config_get uplink_interface6 'config' 'uplink_interface6' 'wan6' + load_package_config 'rpcd' local i - 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 - is_supported_interface "$i" && ! str_contains "$ifacesSupported" "$1" && ifacesSupported="${ifacesSupported}${i} " + is_supported_interface "$i" && ! str_contains "$ifacesSupported" "$i" && ifacesSupported="${ifacesSupported}${i} " done config_load 'network' config_foreach _build_ifaces_supported 'interface' From 513c51b46d32a19aa7ddbf877c6afe87ece78d91 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 24 Jan 2026 00:55:13 +0000 Subject: [PATCH 089/185] minor rpcd fixes --- root/usr/libexec/rpcd/luci.pbr | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 5b8aa73..5561742 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -175,7 +175,6 @@ get_supported_interfaces() { local firewallWanZone local ifacesSupported load_package_config 'rpcd' - local i config_load 'firewall' config_foreach _find_firewall_wan_zone 'zone' for i in $(uci_get 'firewall' "$firewallWanZone" 'network'); do @@ -187,7 +186,7 @@ get_supported_interfaces() { for i in $supported_interface; do is_xray "$i" && ifacesSupported="$ifacesSupported $i" done - [ "$webui_show_ignore_target" -eq '1' ] && ifacesSupported="$ifacesSupported ignore" + [ "${webui_show_ignore_target:-0}" -eq '1' ] && ifacesSupported="$ifacesSupported ignore" json_init json_add_object "$packageName" json_add_array 'interfaces' From e62d0437bb13d05c3f3a444218a30a0aabb69dde Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 26 Jan 2026 19:25:18 +0000 Subject: [PATCH 090/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index cae5053..c31bd72 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=59 +PKG_RELEASE:=61 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 2f39bea65191691b9e3f331dcdd218ea4c8fb352 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 26 Jan 2026 20:20:01 +0000 Subject: [PATCH 091/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c31bd72..3b39b84 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=61 +PKG_RELEASE:=63 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 17554182b86da9adeef4fca5c79da4b689334daf Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 26 Jan 2026 20:46:21 +0000 Subject: [PATCH 092/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3b39b84..9b05f90 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=63 +PKG_RELEASE:=65 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From ecf1d35f9d8b8b02fa568f4dc6eccc90ab7bcb01 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 27 Jan 2026 00:48:35 +0000 Subject: [PATCH 093/185] sync with principal --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 243 +++++++++++---------- po/templates/pbr.pot | 224 +++++++++---------- root/usr/libexec/rpcd/luci.pbr | 2 +- 4 files changed, 241 insertions(+), 230 deletions(-) diff --git a/Makefile b/Makefile index 9b05f90..d14b74a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=65 +PKG_RELEASE:=67 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 7cf047d..767a77e 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 22; + return 23; }, get ReadmeCompat() { return "1.2.1"; @@ -128,7 +128,7 @@ var RPC = { _setInitAction(name, action).then( function (result) { this.emit("setInitAction", result); - }.bind(this) + }.bind(this), ); }, }; @@ -142,29 +142,32 @@ var pollServiceStatus = function (callback) { attempt++; // Use the RPC function directly from the module scope - L.resolveDefault(getInitStatus(pkg.Name), {}).then(function (statusData) { - var currentStatus = statusData && statusData[pkg.Name] && statusData[pkg.Name].running; - - // Check if completed or failed - if (currentStatus === true) { - callback(true, currentStatus); - } - // Check if timed out - else if (attempt >= maxAttempts) { - callback(false, 'timeout'); - } - // Continue polling - else { - setTimeout(checkStatus, 1000); // Check again in 1 second - } - }).catch(function (err) { - // Retry on error unless timed out - if (attempt < maxAttempts) { - setTimeout(checkStatus, 1000); - } else { - callback(false, 'error'); - } - }); + L.resolveDefault(getInitStatus(pkg.Name), {}) + .then(function (statusData) { + var currentStatus = + statusData && statusData[pkg.Name] && statusData[pkg.Name].running; + + // Check if completed or failed + if (currentStatus === true) { + callback(true, currentStatus); + } + // Check if timed out + else if (attempt >= maxAttempts) { + callback(false, "timeout"); + } + // Continue polling + else { + setTimeout(checkStatus, 1000); // Check again in 1 second + } + }) + .catch(function (err) { + // Retry on error unless timed out + if (attempt < maxAttempts) { + setTimeout(checkStatus, 1000); + } else { + callback(false, "error"); + } + }); }; // Start polling after 2 seconds delay (give backend time to start the task) @@ -200,7 +203,7 @@ var status = baseclass.extend({ pkg.isVersionMismatch( pkg.LuciCompat, reply.status.packageCompat, - reply.status.rpcdCompat + reply.status.rpcdCompat, ) ) { reply.ubus.warnings.push({ @@ -210,8 +213,8 @@ var status = baseclass.extend({ pkg.LuciCompat, reply.status.rpcdCompat, '', + pkg.URL + + '#Warning:InternalVersionMismatch" target="_blank">', "", ], }); @@ -222,7 +225,7 @@ var status = baseclass.extend({ var statusTitle = E( "label", { class: "cbi-value-title" }, - _("Service Status") + _("Service Status"), ); if (reply.status.version) { text = _("Version %s").format(reply.status.version) + " - "; @@ -259,27 +262,28 @@ var status = baseclass.extend({ var gatewaysTitle = E( "label", { class: "cbi-value-title" }, - _("Service Gateways") + _("Service Gateways"), ); var description = _( - "The %s indicates default gateway. See the %sREADME%s for details." + "The %s indicates default gateway. See the %sREADME%s for details.", ).format( "โœ“", '', - "" + pkg.URL + + '#AWordAboutDefaultRouting" target="_blank">', + "", ) + - "
" + "
" + + "
" + + "
" + _("Please %sdonate%s to support development of this project.").format( "", - "" + "", ); var gatewaysDescr = E( "div", { class: "cbi-value-description" }, - description + description, ); text = pkg.buildGatewayText(reply.ubus.gateways); var gatewaysText = E("div", {}, text); @@ -297,65 +301,68 @@ var status = baseclass.extend({ if (reply.ubus.warnings && reply.ubus.warnings.length) { var warningTable = { warningInternalVersionMismatch: _( - "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." + "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.", ), warningResolverNotSupported: _( - "Resolver set (%s) is not supported on this system." + "Resolver set (%s) is not supported on this system.", ).format(L.uci.get(pkg.Name, "config", "resolver_set")), warningAGHVersionTooLow: _( - "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." + "Installed AdGuardHome (%s) doesn't support 'ipset_file' option.", ), warningPolicyProcessCMD: _("%s"), warningTorUnsetParams: _( - "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" + "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'", ), warningTorUnsetProto: _( - "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" + "Please unset 'proto' or set 'proto' to 'all' for policy '%s'", ), warningTorUnsetChainIpt: _( - "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" + "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'", ), warningTorUnsetChainNft: _( - "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" + "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'", ), warningInvalidOVPNConfig: _( - "Invalid OpenVPN config for %s interface" + "Invalid OpenVPN config for %s interface", ), warningOutdatedLuciPackage: _( - "The WebUI application (luci-app-pbr) is outdated, please update it" + "The WebUI application (luci-app-pbr) is outdated, please update it", ), warningOutdatedPrincipalPackage: _( - "The principal package (pbr) is outdated, please update it" + "The principal package (pbr) is outdated, please update it", ), warningBadNftCallsInUserFile: _( - "Incompatible nft calls detected in user include file, disabling fw4 nft file support" + "Incompatible nft calls detected in user include file, disabling fw4 nft file support", ), warningDnsmasqInstanceNoConfdir: _( - "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own confdir" + "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own confdir", ), warningDhcpLanForce: _( _( - "Please set 'dhcp.%%s.force=1' to speed up service start-up %s(more info)%s" + "Please set 'dhcp.%%s.force=1' to speed up service start-up %s(more info)%s", ).format( "", - "" - ) + pkg.URL + + "#Warning:Pleasesetdhcp.lan.force1" + + "' target='_blank'>", + "", + ), ), warningSummary: _("Warnings encountered, please check %s"), warningIncompatibleDHCPOption6: _( - "Incompatible DHCP Option 6 for interface %s" + "Incompatible DHCP Option 6 for interface %s", ), warningNetifdMissingInterfaceLocal: _( - "Netifd setup: option netifd_interface_local is missing, assuming '%s'" + "Netifd setup: option netifd_interface_local is missing, assuming '%s'", + ), + warningUplinkDown: _( + "Uplink/WAN interface is still down, going back to boot mode", ), }; var warningsTitle = E( "label", { class: "cbi-value-title" }, - _("Service Warnings") + _("Service Warnings"), ); var text = ""; reply.ubus.warnings.forEach((element) => { @@ -367,13 +374,13 @@ var status = baseclass.extend({ }); text += _("Warnings encountered, please check the %sREADME%s").format( '', - "!
" + "!
", ); var warningsText = E("div", { class: "cbi-value-description" }, text); var warningsField = E( "div", { class: "cbi-value-field" }, - warningsText + warningsText, ); warningsDiv = E("div", { class: "cbi-value" }, [ warningsTitle, @@ -385,49 +392,49 @@ var status = baseclass.extend({ if (reply.ubus.errors && reply.ubus.errors.length) { var errorTable = { errorConfigValidation: _("Config (%s) validation failure").format( - "/etc/config/" + pkg.Name + "/etc/config/" + pkg.Name, ), errorNoIptables: _("%s binary cannot be found").format("iptables"), errorNoIpset: _( - "Resolver set support (%s) requires ipset, but ipset binary cannot be found" + "Resolver set support (%s) requires ipset, but ipset binary cannot be found", ).format(L.uci.get(pkg.Name, "config", "resolver_set")), errorNoNft: _( - "Resolver set support (%s) requires nftables, but nft binary cannot be found" + "Resolver set support (%s) requires nftables, but nft binary cannot be found", ).format(L.uci.get(pkg.Name, "config", "resolver_set")), errorResolverNotSupported: _( - "Resolver set (%s) is not supported on this system" + "Resolver set (%s) is not supported on this system", ).format(L.uci.get(pkg.Name, "config", "resolver_set")), errorServiceDisabled: _( - "The %s service is currently disabled" + "The %s service is currently disabled", ).format(pkg.Name), errorNoUplinkGateway: _( - "The %s service failed to discover uplink gateway" + "The %s service failed to discover uplink gateway", ).format(pkg.Name), errorNoUplinkInterface: _( - "The %s interface not found, you need to set the 'pbr.config.uplink_interface' option" + "The %s interface not found, you need to set the 'pbr.config.uplink_interface' option", ), errorNoUplinkInterfaceHint: _( - "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface" + "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface", ), errorIpsetNameTooLong: _( - "The ipset name '%s' is longer than allowed 31 characters" + "The ipset name '%s' is longer than allowed 31 characters", ), errorNftsetNameTooLong: _( - "The nft set name '%s' is longer than allowed 255 characters" + "The nft set name '%s' is longer than allowed 255 characters", ), errorUnexpectedExit: _( - "Unexpected exit or service termination: '%s'" + "Unexpected exit or service termination: '%s'", ), errorPolicyNoSrcDest: _( - "Policy '%s' has no source/destination parameters" + "Policy '%s' has no source/destination parameters", ), errorPolicyNoInterface: _("Policy '%s' has no assigned interface"), errorPolicyNoDns: _("Policy '%s' has no assigned DNS"), errorPolicyProcessNoInterfaceDns: _( - "Interface '%s' has no assigned DNS" + "Interface '%s' has no assigned DNS", ), errorPolicyUnknownInterface: _( - "Policy '%s' has an unknown interface" + "Policy '%s' has an unknown interface", ), errorPolicyProcessCMD: _("%s"), errorFailedSetup: _("Failed to set up '%s'"), @@ -436,100 +443,100 @@ var status = baseclass.extend({ errorUserFileSyntax: _("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" + "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't installed", ), errorNoGateways: _("Failed to set up any gateway"), errorResolver: _("Resolver '%s'"), errorPolicyProcessNoIpv6: _( - "Skipping IPv6 policy '%s' as IPv6 support is disabled" + "Skipping IPv6 policy '%s' as IPv6 support is disabled", ), errorPolicyProcessUnknownFwmark: _( - "Unknown packet mark for interface '%s'" + "Unknown packet mark for interface '%s'", ), errorPolicyProcessMismatchFamily: _( - "Mismatched IP family between in policy '%s'" + "Mismatched IP family between in policy '%s'", ), errorPolicyProcessUnknownProtocol: _( - "Unknown protocol in policy '%s'" + "Unknown protocol in policy '%s'", ), errorPolicyProcessInsertionFailed: _( - "Insertion failed for both IPv4 and IPv6 for policy '%s'" + "Insertion failed for both IPv4 and IPv6 for policy '%s'", ), errorPolicyProcessInsertionFailedIpv4: _( - "Insertion failed for IPv4 for policy '%s'" + "Insertion failed for IPv4 for policy '%s'", ), errorPolicyProcessUnknownEntry: _("Unknown entry in policy '%s'"), errorInterfaceRoutingEmptyValues: _( - "Received empty tid/mark or interface name when setting up routing" + "Received empty tid/mark or interface name when setting up routing", ), errorInterfaceMarkOverflow: _( - "Interface mark for '%s' exceeds the fwmask value" + "Interface mark for '%s' exceeds the fwmask value", ), errorFailedToResolve: _("Failed to resolve '%s'"), errorInvalidOVPNConfig: _( - "Invalid OpenVPN config for '%s' interface" + "Invalid OpenVPN config for '%s' interface", ), errorNftFileInstall: _("Failed to install fw4 nft file '%s'"), errorNoDownloadWithSecureReload: _( - "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" + "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode", ), errorDownloadUrlNoHttps: _( - "Failed to download '%s', HTTPS is not supported" + "Failed to download '%s', HTTPS is not supported", ), errorDownloadUrl: _("Failed to download '%s'"), errorFileSchemaRequiresCurl: _( - "The file:// schema requires curl, but it's not detected on this system" + "The file:// schema requires curl, but it's not detected on this system", ), errorTryFailed: _("Command failed: '%s'"), errorIncompatibleUserFile: _( - "Incompatible custom user file detected '%s'" + "Incompatible custom user file detected '%s'", ), errorDefaultFw4TableMissing: _("Default fw4 table '%s' is missing"), errorDefaultFw4ChainMissing: _("Default fw4 chain '%s' is missing"), errorRequiredBinaryMissing: _("Required binary '%s' is missing"), errorInterfaceRoutingUnknownDevType: _( - "Unknown IPv6 Link type for device '%s'" + "Unknown IPv6 Link type for device '%s'", ), errorMktempFileCreate: _( - "Failed to create temporary file with mktemp mask: '%s'" + "Failed to create temporary file with mktemp mask: '%s'", ), errorSummary: _("Errors encountered, please check %s"), errorNetifdNftFileInstall: _( - "Netifd setup: failed to install fw4 netifd nft file '%s'" + "Netifd setup: failed to install fw4 netifd nft file '%s'", ), errorNetifdNftFileRemove: _( - "Netifd setup: failed to remove fw4 netifd nft file '%s'" + "Netifd setup: failed to remove fw4 netifd nft file '%s'", ), errorNetifdMissingOption: _( - "Netifd setup: required option '%s' is missing" + "Netifd setup: required option '%s' is missing", ), errorNetifdInvalidGateway4: _( - "Netifd setup: invalid value of netifd_interface_default option '%s'" + "Netifd setup: invalid value of netifd_interface_default option '%s'", ), errorNetifdInvalidGateway6: _( - "Netifd setup: invalid value of netifd_interface_default6 option '%s'" + "Netifd setup: invalid value of netifd_interface_default6 option '%s'", ), errorUplinkDown: _( - "Uplink/WAN interface is still down, increase value of 'procd_boot_trigger_delay' option" + "Uplink/WAN interface is still down, increase value of 'procd_boot_trigger_delay' option", ), errorUnexpectedExit: _( - "Unexpected exit or service termination: '%s'" + "Unexpected exit or service termination: '%s'", ), errorNoDownloadWithSecureReload: _( - "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" + "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode", ), errorIncompatibleUserFile: _( - "Incompatible custom user file detected '%s'" + "Incompatible custom user file detected '%s'", ), errorTryFailed: _("Command failed: '%s'"), errorMktempFileCreate: _( - "Failed to create temporary file with mktemp mask: '%s'" + "Failed to create temporary file with mktemp mask: '%s'", ), }; var errorsTitle = E( "label", { class: "cbi-value-title" }, - _("Service Errors") + _("Service Errors"), ); var text = ""; reply.ubus.errors.forEach((element) => { @@ -541,7 +548,7 @@ var status = baseclass.extend({ }); text += _("Errors encountered, please check the %sREADME%s").format( '', - "!
" + "!
", ); var errorsText = E("div", { class: "cbi-value-description" }, text); var errorsField = E("div", { class: "cbi-value-field" }, errorsText); @@ -555,7 +562,7 @@ var status = baseclass.extend({ var btn_gap_long = E( "span", {}, - "        " + "        ", ); var btn_start = E( @@ -568,13 +575,13 @@ var status = baseclass.extend({ E( "p", { class: "spinning" }, - _("Starting %s service").format(pkg.Name) + _("Starting %s service").format(pkg.Name), ), ]); return RPC.setInitAction(pkg.Name, "start"); }, }, - _("Start") + _("Start"), ); var btn_action = E( @@ -587,13 +594,13 @@ var status = baseclass.extend({ E( "p", { class: "spinning" }, - _("Restarting %s service").format(pkg.Name) + _("Restarting %s service").format(pkg.Name), ), ]); return RPC.setInitAction(pkg.Name, "restart"); }, }, - _("Restart") + _("Restart"), ); var btn_stop = E( @@ -606,13 +613,13 @@ var status = baseclass.extend({ E( "p", { class: "spinning" }, - _("Stopping %s service").format(pkg.Name) + _("Stopping %s service").format(pkg.Name), ), ]); return RPC.setInitAction(pkg.Name, "stop"); }, }, - _("Stop") + _("Stop"), ); var btn_enable = E( @@ -625,13 +632,13 @@ var status = baseclass.extend({ E( "p", { class: "spinning" }, - _("Enabling %s service").format(pkg.Name) + _("Enabling %s service").format(pkg.Name), ), ]); return RPC.setInitAction(pkg.Name, "enable"); }, }, - _("Enable") + _("Enable"), ); var btn_disable = E( @@ -644,13 +651,13 @@ var status = baseclass.extend({ E( "p", { class: "spinning" }, - _("Disabling %s service").format(pkg.Name) + _("Disabling %s service").format(pkg.Name), ), ]); return RPC.setInitAction(pkg.Name, "disable"); }, }, - _("Disable") + _("Disable"), ); if (reply.status.enabled) { @@ -676,7 +683,7 @@ var status = baseclass.extend({ var buttonsTitle = E( "label", { class: "cbi-value-title" }, - _("Service Control") + _("Service Control"), ); var buttonsText = E("div", {}, [ btn_start, @@ -697,7 +704,7 @@ var status = baseclass.extend({ var donateTitle = E( "label", { class: "cbi-value-title" }, - _("Donate to the Project") + _("Donate to the Project"), ); var donateText = E( "div", @@ -707,9 +714,9 @@ var status = baseclass.extend({ { class: "cbi-value-description" }, _("Please %sdonate%s to support development of this project.").format( "", - "" - ) - ) + "", + ), + ), ); var donateDiv = reply.status.version diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index a2d2175..e28f2d3 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:308 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:312 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 msgid "%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:397 msgid "%s binary cannot be found" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:524 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:531 msgid "Command failed: '%s'" msgstr "" @@ -76,7 +76,7 @@ msgstr "" msgid "Condensed output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 msgid "Config (%s) validation failure" msgstr "" @@ -88,7 +88,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -108,15 +108,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:494 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:653 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:660 msgid "Disable" msgstr "" @@ -126,7 +126,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:647 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:654 msgid "Disabling %s service" msgstr "" @@ -134,7 +134,7 @@ msgstr "" msgid "Display these protocols in protocol column in Web UI." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 msgid "" "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own " "confdir" @@ -152,11 +152,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:700 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:707 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:634 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:641 msgid "Enable" msgstr "" @@ -168,19 +168,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:628 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:635 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:503 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:542 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:549 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -190,36 +190,36 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:494 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:533 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:472 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 msgid "Failed to resolve '%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:440 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 msgid "Failed to set up any gateway" msgstr "" @@ -247,16 +247,16 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:349 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:522 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:529 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:335 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -266,15 +266,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:456 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:306 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:310 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -282,26 +282,26 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 msgid "Interface mark for '%s' exceeds the fwmask value" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:300 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304 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:322 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:326 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -314,7 +314,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -342,27 +342,27 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 msgid "Netifd setup: failed to remove fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:352 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:511 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -370,7 +370,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:251 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" @@ -383,8 +383,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:275 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:708 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:715 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -392,24 +392,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:342 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:316 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%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:323 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:313 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:317 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:310 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:314 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -417,24 +417,24 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:519 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:481 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -447,7 +447,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:221 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:224 msgid "Policy Based Routing - Status" msgstr "" @@ -459,11 +459,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface" msgstr "" @@ -483,37 +483,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:303 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 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:395 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 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:596 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:603 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 msgid "Restarting %s service" msgstr "" @@ -527,7 +527,7 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233 msgid "Running" msgstr "" @@ -539,11 +539,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:679 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:686 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:532 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:539 msgid "Service Errors" msgstr "" @@ -552,15 +552,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:262 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:225 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:358 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:365 msgid "Service Warnings" msgstr "" @@ -570,15 +570,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:577 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:584 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:571 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 msgid "Starting %s service" msgstr "" @@ -600,19 +600,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:615 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:622 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:247 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:242 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:245 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:609 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:616 msgid "Stopping %s service" msgstr "" @@ -636,15 +636,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:266 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:269 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -654,11 +654,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 msgid "The %s service failed to discover uplink gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 msgid "The %s service is currently disabled" msgstr "" @@ -666,40 +666,40 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:325 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:329 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:481 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 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:413 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:328 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:332 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:516 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:491 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:539 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:546 msgid "Unknown error" msgstr "" @@ -707,15 +707,15 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:365 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:372 msgid "Unknown warning" msgstr "" @@ -727,13 +727,17 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:513 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 +msgid "Uplink/WAN interface is still down, going back to boot mode" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -751,7 +755,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:231 msgid "Version %s" msgstr "" @@ -759,11 +763,11 @@ msgstr "" msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:347 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:368 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:375 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" @@ -775,17 +779,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:234 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:237 #: 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:232 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235 #: 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:236 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:239 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 msgid "nft mode" msgstr "" diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 5561742..438a340 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -10,7 +10,7 @@ # ubus -S call luci.pbr getPlatformSupport '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='22' +readonly rpcdCompat='23' readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr From 5cc05bc106ea6975db3e98b5e3329beaf30a4f2f Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Tue, 27 Jan 2026 11:01:42 +0100 Subject: [PATCH 094/185] Version bump to 69 (#13) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d14b74a..f19458b 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=67 +PKG_RELEASE:=69 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 2898bea73c15f6101a8ea63a7df4a5c017f4d41e Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 29 Jan 2026 17:55:03 +0000 Subject: [PATCH 095/185] sync with principal package --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 10 +++++----- po/templates/pbr.pot | 8 ++++---- root/usr/libexec/rpcd/luci.pbr | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index f19458b..961b8ce 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=69 +PKG_RELEASE:=73 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 767a77e..c381363 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 23; + return 24; }, get ReadmeCompat() { return "1.2.1"; @@ -476,7 +476,7 @@ var status = baseclass.extend({ errorInvalidOVPNConfig: _( "Invalid OpenVPN config for '%s' interface", ), - errorNftFileInstall: _("Failed to install fw4 nft file '%s'"), + errorNftMainFileInstall: _("Failed to install fw4 nft file '%s'"), errorNoDownloadWithSecureReload: _( "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode", ), @@ -501,11 +501,11 @@ var status = baseclass.extend({ "Failed to create temporary file with mktemp mask: '%s'", ), errorSummary: _("Errors encountered, please check %s"), - errorNetifdNftFileInstall: _( + errorNftNetifdFileInstall: _( "Netifd setup: failed to install fw4 netifd nft file '%s'", ), - errorNetifdNftFileRemove: _( - "Netifd setup: failed to remove fw4 netifd nft file '%s'", + errorNftNetifdFileDelete: _( + "Netifd setup: failed to delete fw4 netifd nft file '%s'", ), errorNetifdMissingOption: _( "Netifd setup: required option '%s' is missing", diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index e28f2d3..cac50e2 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -342,12 +342,12 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 -msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 +msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 -msgid "Netifd setup: failed to remove fw4 netifd nft file '%s'" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 +msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 438a340..95f8f4d 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -10,7 +10,7 @@ # ubus -S call luci.pbr getPlatformSupport '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='23' +readonly rpcdCompat='24' readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr From 6892c8813ed4a651d0e7d4e645f9c25dbe9920ec Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 29 Jan 2026 18:13:10 +0000 Subject: [PATCH 096/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 961b8ce..566a37e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=73 +PKG_RELEASE:=75 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From ab822146fc922ce25c4856e3a94bc1287e6777bd Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 29 Jan 2026 20:09:19 +0000 Subject: [PATCH 097/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 566a37e..1eb2db6 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=75 +PKG_RELEASE:=77 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From d53406103c6611bcf06110b9d5a131f6b7fb6bfd Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 30 Jan 2026 20:17:42 +0000 Subject: [PATCH 098/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1eb2db6..d239812 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=77 +PKG_RELEASE:=79 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 2a51a40aa87dc00aa1603fe9e926f1381ebc8292 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 30 Jan 2026 21:43:00 +0000 Subject: [PATCH 099/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d239812..48d78e2 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=79 +PKG_RELEASE:=81 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From ccd94e2a2419147fcc9dd83d91ab6ea1802709b4 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 1 Feb 2026 23:09:30 +0000 Subject: [PATCH 100/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 48d78e2..c837fc6 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=81 +PKG_RELEASE:=85 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 303530e9d535974b93347f26423f05abb35492a5 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 3 Feb 2026 23:24:51 +0000 Subject: [PATCH 101/185] fix #14, thanks @systemcrash --- htdocs/luci-static/resources/pbr/status.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index c381363..e887800 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -414,7 +414,10 @@ var status = baseclass.extend({ "The %s interface not found, you need to set the 'pbr.config.uplink_interface' option", ), errorNoUplinkInterfaceHint: _( - "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface", + "Refer to %sREADME%s for details", + ).format( + '', + "!
", ), errorIpsetNameTooLong: _( "The ipset name '%s' is longer than allowed 31 characters", @@ -485,8 +488,8 @@ var status = baseclass.extend({ ), errorDownloadUrl: _("Failed to download '%s'"), errorFileSchemaRequiresCurl: _( - "The file:// schema requires curl, but it's not detected on this system", - ), + "The '%s' schema requires curl, but it's not detected on this system", + ).format("file://"), errorTryFailed: _("Command failed: '%s'"), errorIncompatibleUserFile: _( "Incompatible custom user file detected '%s'", From 26929114c5a19a0439a68645316bdae3850bd2fb Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 4 Feb 2026 03:50:23 +0000 Subject: [PATCH 102/185] update pot --- po/templates/pbr.pot | 144 +++++++++++++++++++++---------------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index cac50e2..7cae604 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -2,7 +2,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:312 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 msgid "%s" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:531 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:534 msgid "Command failed: '%s'" msgstr "" @@ -88,7 +88,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -108,15 +108,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:494 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:497 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:660 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:663 msgid "Disable" msgstr "" @@ -126,7 +126,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:654 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:657 msgid "Disabling %s service" msgstr "" @@ -152,11 +152,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:707 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:710 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:641 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:644 msgid "Enable" msgstr "" @@ -168,19 +168,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:635 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:638 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:503 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:506 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:549 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:552 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -190,36 +190,36 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:533 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:536 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:478 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Failed to set up any gateway" msgstr "" @@ -251,8 +251,8 @@ msgstr "" msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:529 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:532 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -266,11 +266,11 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" @@ -282,11 +282,11 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 msgid "Interface mark for '%s' exceeds the fwmask value" msgstr "" @@ -301,7 +301,7 @@ msgstr "" msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -314,7 +314,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -342,19 +342,19 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:511 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" @@ -362,7 +362,7 @@ msgstr "" msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:511 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -384,7 +384,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:715 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:718 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -417,24 +417,24 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:481 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:529 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -459,12 +459,12 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 -msgid "Refer to https://docs.openwrt.melmac.ca/pbr/#uplink_interface" +msgid "Refer to %sREADME%s for details" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:381 @@ -483,11 +483,11 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 msgid "Resolver '%s'" msgstr "" @@ -509,11 +509,11 @@ 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:603 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:606 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:600 msgid "Restarting %s service" msgstr "" @@ -539,11 +539,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:686 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:689 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:539 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:542 msgid "Service Errors" msgstr "" @@ -570,15 +570,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:584 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:587 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:581 msgid "Starting %s service" msgstr "" @@ -600,7 +600,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:622 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:625 msgid "Stop" msgstr "" @@ -612,7 +612,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:616 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:619 msgid "Stopping %s service" msgstr "" @@ -636,7 +636,7 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 msgid "Syntax error in custom user file '%s'" msgstr "" @@ -666,19 +666,19 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:329 -msgid "The WebUI application (luci-app-pbr) is outdated, please update it" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:491 +msgid "The '%s' schema requires curl, but it's not detected on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 -msgid "The file:// schema requires curl, but it's not detected on this system" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:329 +msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" @@ -686,20 +686,20 @@ msgstr "" msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:546 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:549 msgid "Unknown error" msgstr "" @@ -707,11 +707,11 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 msgid "Unknown protocol in policy '%s'" msgstr "" @@ -731,13 +731,13 @@ msgstr "" msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" From b57e89301dbf35639d5c82fda5b7bbe79f7e93b1 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Wed, 4 Feb 2026 09:15:32 +0100 Subject: [PATCH 103/185] Version bump (#15) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c837fc6..95dd50a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=85 +PKG_RELEASE:=87 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 17c2044b623556bd317aac35ed6f5f2e81ffdf4b Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 5 Feb 2026 20:48:04 +0000 Subject: [PATCH 104/185] don't list wan6 in case of split wan --- Makefile | 2 +- root/usr/libexec/rpcd/luci.pbr | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 95dd50a..b1acb2a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=87 +PKG_RELEASE:=89 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 95f8f4d..015b333 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -169,7 +169,13 @@ get_platform_support() { } get_supported_interfaces() { - _build_ifaces_supported() { is_supported_interface "$1" && ! str_contains "$ifacesSupported" "$1" && ifacesSupported="${ifacesSupported}${1} "; } + _build_ifaces_supported() { + # Skip wan6 interface in split WAN scenarios as it shouldn't be a target for policies + if is_split_uplink && is_wan6 "$1"; then + return + fi + is_supported_interface "$1" && ! str_contains "$ifacesSupported" "$1" && ifacesSupported="${ifacesSupported}${1} " + } _find_firewall_wan_zone() { [ "$(uci_get 'firewall' "$1" 'name')" = 'wan' ] && firewallWanZone="$1"; } local i local firewallWanZone @@ -178,6 +184,10 @@ get_supported_interfaces() { config_load 'firewall' config_foreach _find_firewall_wan_zone 'zone' for i in $(uci_get 'firewall' "$firewallWanZone" 'network'); do + # Skip wan6 interface in split WAN scenarios as it shouldn't be a target for policies + if is_split_uplink && is_wan6 "$i"; then + continue + fi is_supported_interface "$i" && ! str_contains "$ifacesSupported" "$i" && ifacesSupported="${ifacesSupported}${i} " done config_load 'network' From bf4b2983733c72a15d75cb011ee357e5cccc0cd4 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 6 Feb 2026 03:43:37 +0000 Subject: [PATCH 105/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b1acb2a..41eb53f 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=89 +PKG_RELEASE:=91 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From fa6a4e4c8d30ee8255a1b37618da539e3421cc81 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 8 Feb 2026 02:02:00 +0000 Subject: [PATCH 106/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 41eb53f..760f08c 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=91 +PKG_RELEASE:=93 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 17969823d7e38d40621579b1f7ecd4592bedb173 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Tue, 10 Feb 2026 09:36:36 +0100 Subject: [PATCH 107/185] version bump (#16) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 760f08c..861eb6f 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=93 +PKG_RELEASE:=95 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ From 4beb9449c569fcdbdf6298db1b299cdfbbb945c8 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 10 Feb 2026 19:21:24 +0000 Subject: [PATCH 108/185] sync with principal package --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 2 +- root/usr/libexec/rpcd/luci.pbr | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 861eb6f..f5e226b 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=95 +PKG_RELEASE:=97 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/stangri/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index e887800..e3a10ef 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 24; + return 25; }, get ReadmeCompat() { return "1.2.1"; diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 015b333..66ccd4d 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -10,7 +10,7 @@ # ubus -S call luci.pbr getPlatformSupport '{"name": "pbr" }' # ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' -readonly rpcdCompat='24' +readonly rpcdCompat='25' readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../../../../pbr/files/etc/init.d/pbr @@ -171,7 +171,7 @@ get_platform_support() { get_supported_interfaces() { _build_ifaces_supported() { # Skip wan6 interface in split WAN scenarios as it shouldn't be a target for policies - if is_split_uplink && is_wan6 "$1"; then + if is_split_uplink && is_uplink6 "$1"; then return fi is_supported_interface "$1" && ! str_contains "$ifacesSupported" "$1" && ifacesSupported="${ifacesSupported}${1} " @@ -185,7 +185,7 @@ get_supported_interfaces() { config_foreach _find_firewall_wan_zone 'zone' for i in $(uci_get 'firewall' "$firewallWanZone" 'network'); do # Skip wan6 interface in split WAN scenarios as it shouldn't be a target for policies - if is_split_uplink && is_wan6 "$i"; then + if is_split_uplink && is_uplink6 "$i"; then continue fi is_supported_interface "$i" && ! str_contains "$ifacesSupported" "$i" && ifacesSupported="${ifacesSupported}${i} " From d6c657ba3aa211bc609d4972700cb54840892827 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 13 Feb 2026 18:33:34 +0000 Subject: [PATCH 109/185] update source repo URL --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f5e226b..7934207 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ PKG_VERSION:=1.2.1 PKG_RELEASE:=97 LUCI_TITLE:=Policy Based Routing Service Web UI -LUCI_URL:=https://github.com/stangri/luci-app-pbr/ +LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ LUCI_DESCRIPTION:=Provides Web UI for Policy Based Routing Service. LUCI_DEPENDS:=+luci-base +jsonfilter +pbr From d4a60afdedfed3240f1d68a2e2df78a820c72f45 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 13 Feb 2026 18:48:57 +0000 Subject: [PATCH 110/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7934207..de09b97 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.1 -PKG_RELEASE:=97 +PKG_RELEASE:=99 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 306e521f12361a4e1674bf6c7ce18d414364de34 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 16 Feb 2026 02:39:24 +0000 Subject: [PATCH 111/185] initial commit to branch --- .github/workflows/openwrt-release.yml | 2 -- Makefile | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index 8c2d5ee..f444b3c 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -4,8 +4,6 @@ name: Build OpenWrt Package on: push: - branches: - - 1.2.1 workflow_dispatch: jobs: diff --git a/Makefile b/Makefile index de09b97..bc3ff20 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin -PKG_VERSION:=1.2.1 -PKG_RELEASE:=99 +PKG_VERSION:=1.2.2 +PKG_RELEASE:=1 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 8195bc13f7cbc41c656e9fe573ea3d7114f190f5 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 16 Feb 2026 02:58:52 +0000 Subject: [PATCH 112/185] initial commit --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index bc3ff20..6211d7c 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin -PKG_VERSION:=1.2.2 +PKG_VERSION:=1.2.3 PKG_RELEASE:=1 LUCI_TITLE:=Policy Based Routing Service Web UI From 24e86c186daa9682dd37268d009b7738639f76e0 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 17 Feb 2026 01:05:04 +0000 Subject: [PATCH 113/185] add curly braces to variables inside of curly braces --- root/usr/libexec/rpcd/luci.pbr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr index 66ccd4d..fb4ee08 100755 --- a/root/usr/libexec/rpcd/luci.pbr +++ b/root/usr/libexec/rpcd/luci.pbr @@ -40,7 +40,7 @@ check_dnsmasq_ipset() { get_init_list() { local name name="$(basename "$1")" - name="${name:-$packageName}" + name="${name:-${packageName}}" json_init json_add_object "$packageName" json_add_boolean 'enabled' "$(is_enabled "$packageName")" @@ -84,7 +84,7 @@ set_init_action() { get_init_status() { local name gateways name="$(basename "$1")" - name="${name:-$packageName}" + name="${name:-${packageName}}" gateways="$(ubus_get_status gateways | sed "s|\\\n|
|g;s|\(\\\033[^<]*\)|โœ“|g;")" json_init json_add_object "$packageName" @@ -120,7 +120,7 @@ get_init_status() { get_platform_support() { local name name="$(basename "$1")" - name="${name:-$packageName}" + name="${name:-${packageName}}" json_init json_add_object "$packageName" if check_ipset; then From 69fd09ddf89ec15c1bfae45bb80c36d7938c5d49 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 18 Feb 2026 04:55:59 +0000 Subject: [PATCH 114/185] ucode conversion --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 4 +- root/usr/libexec/rpcd/luci.pbr | 274 --------------------- root/usr/share/rpcd/ucode/luci.pbr | 87 +++++++ 4 files changed, 90 insertions(+), 277 deletions(-) delete mode 100755 root/usr/libexec/rpcd/luci.pbr create mode 100644 root/usr/share/rpcd/ucode/luci.pbr diff --git a/Makefile b/Makefile index 6211d7c..5edfa58 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ PKG_RELEASE:=1 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ LUCI_DESCRIPTION:=Provides Web UI for Policy Based Routing Service. -LUCI_DEPENDS:=+luci-base +jsonfilter +pbr +LUCI_DEPENDS:=+luci-base +jsonfilter +rpcd-mod-ucode +pbr define Package/$(PKG_NAME)/config # shown in make menuconfig diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index e3a10ef..59b464b 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,10 +11,10 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 25; + return 26; }, get ReadmeCompat() { - return "1.2.1"; + return "1.2.3"; }, get URL() { return ( diff --git a/root/usr/libexec/rpcd/luci.pbr b/root/usr/libexec/rpcd/luci.pbr deleted file mode 100755 index fb4ee08..0000000 --- a/root/usr/libexec/rpcd/luci.pbr +++ /dev/null @@ -1,274 +0,0 @@ -#!/bin/sh -# Copyright 2022 Stan Grishin (stangri@melmac.ca) -# shellcheck disable=SC2018,SC2019,SC2039,SC3043,SC3057,SC3060 - -# TechRef: https://openwrt.org/docs/techref/rpcd -# TESTS -# ubus -v list luci.pbr -# ubus -S call luci.pbr getInitList '{"name": "pbr" }' -# ubus -S call luci.pbr getInitStatus '{"name": "pbr" }' -# ubus -S call luci.pbr getPlatformSupport '{"name": "pbr" }' -# ubus -S call luci.pbr getInterfaces '{"name": "pbr" }' - -readonly rpcdCompat='25' -readonly pbrFunctionsFile="${IPKG_INSTROOT}/etc/init.d/pbr" -if [ -s "$pbrFunctionsFile" ]; then -# shellcheck source=../../../../../pbr/files/etc/init.d/pbr - . "$pbrFunctionsFile" -else - print_json_string 'error' "pbr init.d file ($pbrFunctionsFile) not found!" - logger -t pbr 'error' "pbr init.d file ($pbrFunctionsFile) not found!" -fi - -# compatibility with old luci app versions -is_running_iptables() { iptables -t mangle -n -L | grep -q PBR_PREROUTING >/dev/null 2>&1; } -is_running() { exists_lockfile && { is_running_iptables || is_running_nft; }; } -check_ipset() { { [ -n "$ipset" ] && "$ipset" help hash:net; } >/dev/null 2>&1; } -check_agh_ipset() { - check_ipset || return 1 - check_agh || return 1 - is_greater_or_equal "$($agh --version | sed 's|AdGuard Home, version v\(.*\)|\1|' | sed 's|-.*||')" '0.107.13' -} -check_dnsmasq_ipset() { - local o; - check_ipset || return 1 - check_dnsmasq || return 1 - o="$(dnsmasq -v 2>/dev/null)" - ! echo "$o" | grep -q 'no-ipset' && echo "$o" | grep -q 'ipset' -} - -get_init_list() { - local name - name="$(basename "$1")" - name="${name:-${packageName}}" - json_init - json_add_object "$packageName" - json_add_boolean 'enabled' "$(is_enabled "$packageName")" - if is_running "$packageName"; then - json_add_boolean 'running' '1' - else - json_add_boolean 'running' '0' - fi - json_close_object - json_dump - json_cleanup -} - -set_init_action() { - local action="$2" cmd - [ "$(basename "$1")" = "$packageName" ] || { print_json_bool 'result' '0'; return 1; } - if [ ! -f "/etc/init.d/$packageName" ]; then - print_json_string 'error' 'Init script not found!' - return - fi - case $action in - enable) - cmd="/etc/init.d/${packageName} ${action}" - cmd="${cmd} && uci_set ${packageName} config enabled 1 && uci_commit $packageName" - ;; - disable) - cmd="/etc/init.d/${packageName} ${action}" - cmd="${cmd} && uci_set ${packageName} config enabled 0 && uci_commit $packageName" - ;; - start|stop|reload|restart) - cmd="/etc/init.d/${packageName} ${action}" - ;; - esac - if [ -n "$cmd" ] && eval "$cmd" 1>/dev/null 2>&1; then - print_json_bool 'result' '1' - else - print_json_bool 'result' '0' - fi -} - -get_init_status() { - local name gateways - name="$(basename "$1")" - name="${name:-${packageName}}" - gateways="$(ubus_get_status gateways | sed "s|\\\n|
|g;s|\(\\\033[^<]*\)|โœ“|g;")" - json_init - json_add_object "$packageName" - json_add_boolean 'enabled' "$(is_enabled "$packageName")" - if is_running "$packageName"; then - json_add_boolean 'running' '1' - else - json_add_boolean 'running' '0' - fi - if is_running_iptables "$packageName"; then - json_add_boolean 'running_iptables' '1' - else - json_add_boolean 'running_iptables' '0' - fi - if is_running_nft "$packageName"; then - json_add_boolean 'running_nft' '1' - else - json_add_boolean 'running_nft' '0' - fi - if is_running_nft_file "$packageName"; then - json_add_boolean 'running_nft_file' '1' - else - json_add_boolean 'running_nft_file' '0' - fi - json_add_string 'version' "$PKG_VERSION" - json_add_int 'packageCompat' "${packageCompat:-0}" - json_add_int 'rpcdCompat' "${rpcdCompat:-0}" - json_close_object - json_dump - json_cleanup -} - -get_platform_support() { - local name - name="$(basename "$1")" - name="${name:-${packageName}}" - json_init - json_add_object "$packageName" - if check_ipset; then - json_add_boolean 'ipset_installed' '1' - else - json_add_boolean 'ipset_installed' '0' - fi - if check_nft; then - json_add_boolean 'nft_installed' '1' - else - json_add_boolean 'nft_installed' '0' - fi - if check_agh; then - json_add_boolean 'adguardhome_installed' '1' - else - json_add_boolean 'adguardhome_installed' '0' - fi - if check_dnsmasq; then - json_add_boolean 'dnsmasq_installed' '1' - else - json_add_boolean 'dnsmasq_installed' '0' - fi - if check_unbound; then - json_add_boolean 'unbound_installed' '1' - else - json_add_boolean 'unbound_installed' '0' - fi - if check_agh_ipset; then - json_add_boolean 'adguardhome_ipset_support' '1' - else - json_add_boolean 'adguardhome_ipset_support' '0' - fi - if check_dnsmasq_ipset; then - json_add_boolean 'dnsmasq_ipset_support' '1' - else - json_add_boolean 'dnsmasq_ipset_support' '0' - fi - if check_dnsmasq_nftset; then - json_add_boolean 'dnsmasq_nftset_support' '1' - else - json_add_boolean 'dnsmasq_nftset_support' '0' - fi - json_close_object - json_dump - json_cleanup -} - -get_supported_interfaces() { - _build_ifaces_supported() { - # Skip wan6 interface in split WAN scenarios as it shouldn't be a target for policies - if is_split_uplink && is_uplink6 "$1"; then - return - fi - is_supported_interface "$1" && ! str_contains "$ifacesSupported" "$1" && ifacesSupported="${ifacesSupported}${1} " - } - _find_firewall_wan_zone() { [ "$(uci_get 'firewall' "$1" 'name')" = 'wan' ] && firewallWanZone="$1"; } - local i - local firewallWanZone - local ifacesSupported - load_package_config 'rpcd' - config_load 'firewall' - config_foreach _find_firewall_wan_zone 'zone' - for i in $(uci_get 'firewall' "$firewallWanZone" 'network'); do - # Skip wan6 interface in split WAN scenarios as it shouldn't be a target for policies - if is_split_uplink && is_uplink6 "$i"; then - continue - fi - is_supported_interface "$i" && ! str_contains "$ifacesSupported" "$i" && ifacesSupported="${ifacesSupported}${i} " - done - config_load 'network' - config_foreach _build_ifaces_supported 'interface' - is_tor_running && ifacesSupported="$ifacesSupported tor" - for i in $supported_interface; do - is_xray "$i" && ifacesSupported="$ifacesSupported $i" - done - [ "${webui_show_ignore_target:-0}" -eq '1' ] && ifacesSupported="$ifacesSupported ignore" - json_init - json_add_object "$packageName" - json_add_array 'interfaces' - for i in $ifacesSupported; do - json_add_string '' "$i" - done - json_close_array - json_close_object - json_dump - json_cleanup -} - -case "$1" in - list) - json_init - json_add_object "getInitList" - json_add_string 'name' 'name' - json_close_object - json_add_object "getInitStatus" - json_add_string 'name' 'name' - json_close_object - json_add_object "getInterfaces" - json_add_string 'name' 'name' - json_close_object - json_add_object "getPlatformSupport" - json_add_string 'name' 'name' - json_close_object - json_add_object "setInitAction" - json_add_string 'name' 'name' - json_add_string 'action' 'action' - json_close_object - json_dump - json_cleanup - ;; - call) - case "$2" in - getInitList) - read -r input - json_load "$input" - json_get_var name 'name' - json_cleanup - get_init_list "$packageName" - ;; - getInitStatus) - read -r input - json_load "$input" - json_get_var name 'name' - json_cleanup - get_init_status "$packageName" - ;; - getInterfaces) - read -r input - json_load "$input" - json_get_var name 'name' - json_cleanup - get_supported_interfaces "$packageName" - ;; - getPlatformSupport) - read -r input - json_load "$input" - json_get_var name 'name' - json_cleanup - get_platform_support "$packageName" - ;; - setInitAction) - read -r input - json_load "$input" - json_get_var name 'name' - json_get_var action 'action' - json_cleanup - set_init_action "$packageName" "$action" - ;; - esac - ;; -esac diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr new file mode 100644 index 0000000..78cb7d3 --- /dev/null +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +// Copyright 2022-2026 MOSSDeF, Stan Grishin (stangri@melmac.ca). +// +// rpcd ucode plugin for pbr. + +/* +ubus -v list luci.pbr +ubus call luci.pbr getInitList '{"name":"pbr"}' +ubus call luci.pbr getInitStatus '{"name":"pbr"}' +ubus call luci.pbr getPlatformSupport '{"name":"pbr"}' +ubus call luci.pbr getInterfaces '{"name":"pbr"}' +ubus call luci.pbr setInitAction '{"name":"pbr","action":"start"}' +*/ + +import pbr from '/lib/pbr/pbr.uc'; +import { stat } from 'fs'; + +const packageName = 'pbr'; // ucode-lsp disable +const rpcdCompat = 26; // ucode-lsp disable + +// โ”€โ”€ rpcd Method Handlers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + +const methods = { + getInitList: { + args: { name: 'name' }, + call: function(req) { + let name = req.args?.name || packageName; + return pbr.get_init_list(name); + } + }, + getInitStatus: { + args: { name: 'name' }, + call: function(req) { + let name = req.args?.name || packageName; + let result = pbr.get_init_status(name); + if (result[name]) + result[name].rpcdCompat = rpcdCompat; + return result; + } + }, + getInterfaces: { + args: { name: 'name' }, + call: function(req) { + let name = req.args?.name || packageName; + return pbr.get_supported_interfaces(name); + } + }, + getPlatformSupport: { + args: { name: 'name' }, + call: function(req) { + let name = req.args?.name || packageName; + return pbr.get_platform_support(name); + } + }, + setInitAction: { + args: { name: 'name', action: 'action' }, + call: function(req) { + let name = req.args?.name || packageName; + let action = req.args?.action; + if (name != packageName) return { result: false }; + if (!stat('/etc/init.d/' + packageName)) + return { error: 'Init script not found!' }; + + let cmd; + switch (action) { + case 'enable': + cmd = sprintf("/etc/init.d/%s enable && uci set %s.config.enabled=1 && uci commit %s", + packageName, packageName, packageName); + break; + case 'disable': + cmd = sprintf("/etc/init.d/%s disable && uci set %s.config.enabled=0 && uci commit %s", + packageName, packageName, packageName); + break; + case 'start': case 'stop': case 'reload': case 'restart': + cmd = sprintf("/etc/init.d/%s %s", packageName, action); + break; + } + + let result = false; + if (cmd && system(cmd + ' >/dev/null 2>&1') == 0) + result = true; + return { result: result }; + } + }, +}; + +return { 'luci.pbr': methods }; From ddb8be9f7e9d3a92d7729602413f5ad797f88f64 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 18 Feb 2026 21:47:16 +0000 Subject: [PATCH 115/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5edfa58..9faebca 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=1 +PKG_RELEASE:=3 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From a2c6f94c7f9b843a38f4969c6c8ae9586d96b26b Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 20 Feb 2026 17:42:57 +0000 Subject: [PATCH 116/185] sync with principal --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 6 + po/templates/pbr.pot | 166 +++++++++++---------- 3 files changed, 93 insertions(+), 81 deletions(-) diff --git a/Makefile b/Makefile index 9faebca..ab44dd0 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=3 +PKG_RELEASE:=5 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 59b464b..a0b1b61 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -358,6 +358,12 @@ var status = baseclass.extend({ warningUplinkDown: _( "Uplink/WAN interface is still down, going back to boot mode", ), + warningDynamicRoutingMode: _( + "Running in dynamic routing tables mode. Consider installing netifd extensions or mwan4 for more efficient operation. See %sREADME%s.", + ).format( + '', + "", + ), }; var warningsTitle = E( "label", diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 7cae604..532fb29 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -2,11 +2,11 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:312 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:403 msgid "%s binary cannot be found" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:534 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:540 msgid "Command failed: '%s'" msgstr "" @@ -76,7 +76,7 @@ msgstr "" msgid "Condensed output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:394 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 msgid "Config (%s) validation failure" msgstr "" @@ -88,7 +88,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -108,15 +108,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:497 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:503 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:663 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:669 msgid "Disable" msgstr "" @@ -126,7 +126,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:657 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:663 msgid "Disabling %s service" msgstr "" @@ -152,11 +152,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:710 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:716 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:644 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:650 msgid "Enable" msgstr "" @@ -168,19 +168,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:638 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:644 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:506 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:552 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -190,36 +190,36 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:536 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:542 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:478 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 msgid "Failed to set up any gateway" msgstr "" @@ -251,8 +251,8 @@ msgstr "" msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:532 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -266,11 +266,11 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:472 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" @@ -282,11 +282,11 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 msgid "Interface mark for '%s' exceeds the fwmask value" msgstr "" @@ -301,7 +301,7 @@ msgstr "" msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -314,7 +314,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -342,19 +342,19 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:511 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" @@ -362,7 +362,7 @@ msgstr "" msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -384,7 +384,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:718 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:724 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -417,24 +417,24 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:529 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:535 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -459,11 +459,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 msgid "Refer to %sREADME%s for details" msgstr "" @@ -483,15 +483,15 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 msgid "Resolver set (%s) is not supported on this system" msgstr "" @@ -499,21 +499,21 @@ msgstr "" msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 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:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 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:606 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:612 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:600 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:606 msgid "Restarting %s service" msgstr "" @@ -531,6 +531,12 @@ msgstr "" msgid "Running" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:362 +msgid "" +"Running in dynamic routing tables mode. Consider installing netifd " +"extensions or mwan4 for more efficient operation. See %sREADME%s." +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:80 msgid "See the %sREADME%s for details." msgstr "" @@ -539,11 +545,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:689 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:695 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:542 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:548 msgid "Service Errors" msgstr "" @@ -560,7 +566,7 @@ msgstr "" msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:365 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:371 msgid "Service Warnings" msgstr "" @@ -570,15 +576,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:587 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:593 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:581 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:587 msgid "Starting %s service" msgstr "" @@ -600,7 +606,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:625 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:631 msgid "Stop" msgstr "" @@ -612,7 +618,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:619 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:625 msgid "Stopping %s service" msgstr "" @@ -636,7 +642,7 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 msgid "Syntax error in custom user file '%s'" msgstr "" @@ -644,7 +650,7 @@ msgstr "" msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -654,11 +660,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 msgid "The %s service failed to discover uplink gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 msgid "The %s service is currently disabled" msgstr "" @@ -666,7 +672,7 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:491 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:497 msgid "The '%s' schema requires curl, but it's not detected on this system" msgstr "" @@ -674,11 +680,11 @@ msgstr "" msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" @@ -686,20 +692,20 @@ msgstr "" msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:532 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:549 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:555 msgid "Unknown error" msgstr "" @@ -707,15 +713,15 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:372 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 msgid "Unknown warning" msgstr "" @@ -731,13 +737,13 @@ msgstr "" msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:529 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -767,7 +773,7 @@ msgstr "" msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:375 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:381 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" From 4926f4c005cac830a854ec37b013598336754c9f Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 21 Feb 2026 00:36:14 +0000 Subject: [PATCH 117/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ab44dd0..b9c16df 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=5 +PKG_RELEASE:=7 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 87eeacc6f8a9031bf1ba0901499fe27c04a9e6cf Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 21 Feb 2026 02:35:34 +0000 Subject: [PATCH 118/185] sync with principal --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 5 +- po/templates/pbr.pot | 70 ++++++++++++---------- root/usr/share/rpcd/ucode/luci.pbr | 2 +- 4 files changed, 43 insertions(+), 36 deletions(-) diff --git a/Makefile b/Makefile index b9c16df..2606897 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=7 +PKG_RELEASE:=9 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index a0b1b61..da915de 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 26; + return 27; }, get ReadmeCompat() { return "1.2.3"; @@ -500,6 +500,9 @@ var status = baseclass.extend({ errorIncompatibleUserFile: _( "Incompatible custom user file detected '%s'", ), + errorUserFileUnsafeNft: _( + "Unsafe nft command in custom user file '%s'", + ), errorDefaultFw4TableMissing: _("Default fw4 table '%s' is missing"), errorDefaultFw4ChainMissing: _("Default fw4 chain '%s' is missing"), errorRequiredBinaryMissing: _("Required binary '%s' is missing"), diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 532fb29..14db1d9 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -68,7 +68,7 @@ msgid "Chain" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:540 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:543 msgid "Command failed: '%s'" msgstr "" @@ -108,15 +108,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:503 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:506 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:669 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:672 msgid "Disable" msgstr "" @@ -126,7 +126,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:663 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:666 msgid "Disabling %s service" msgstr "" @@ -152,11 +152,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:716 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:719 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:650 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:653 msgid "Enable" msgstr "" @@ -168,7 +168,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:644 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:647 msgid "Enabling %s service" msgstr "" @@ -176,11 +176,11 @@ msgstr "" msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:515 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:561 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -190,8 +190,8 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:542 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:513 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:545 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" @@ -252,7 +252,7 @@ msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:541 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -342,19 +342,19 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:529 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" @@ -362,7 +362,7 @@ msgstr "" msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -384,7 +384,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:724 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:727 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -434,7 +434,7 @@ msgid "Policy '%s' has no source/destination parameters" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:535 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -483,7 +483,7 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 msgid "Required binary '%s' is missing" msgstr "" @@ -509,11 +509,11 @@ 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:612 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:615 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:606 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:609 msgid "Restarting %s service" msgstr "" @@ -545,11 +545,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:695 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:698 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:548 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:551 msgid "Service Errors" msgstr "" @@ -580,11 +580,11 @@ msgstr "" msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:593 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:587 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 msgid "Starting %s service" msgstr "" @@ -606,7 +606,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:631 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:634 msgid "Stop" msgstr "" @@ -618,7 +618,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:625 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:628 msgid "Stopping %s service" msgstr "" @@ -693,11 +693,11 @@ msgid "The principal package (pbr) is outdated, please update it" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:532 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:535 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" @@ -705,7 +705,7 @@ msgstr "" msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:555 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 msgid "Unknown error" msgstr "" @@ -725,6 +725,10 @@ msgstr "" msgid "Unknown warning" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +msgid "Unsafe nft command in custom user file '%s'" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:234 msgid "Uplink IP Rules Priority" msgstr "" @@ -737,7 +741,7 @@ msgstr "" msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:529 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:532 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr index 78cb7d3..1c70902 100644 --- a/root/usr/share/rpcd/ucode/luci.pbr +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -16,7 +16,7 @@ import pbr from '/lib/pbr/pbr.uc'; import { stat } from 'fs'; const packageName = 'pbr'; // ucode-lsp disable -const rpcdCompat = 26; // ucode-lsp disable +const rpcdCompat = 27; // ucode-lsp disable // โ”€โ”€ rpcd Method Handlers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ From d7f39eae4e99a2ba654ad9df83b329f1e04dfb01 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 21 Feb 2026 04:21:21 +0000 Subject: [PATCH 119/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2606897..6174d8f 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=9 +PKG_RELEASE:=11 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From d5e3aa7c0e777e9fc2b6e1c20196224353fe1dd7 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 21 Feb 2026 11:32:24 +0000 Subject: [PATCH 120/185] more elegant ucode/rpcd --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 107 ++--- .../resources/view/pbr/overview.js | 31 +- .../resources/view/status/include/72_pbr.js | 10 +- po/templates/pbr.pot | 382 +++++++++--------- root/usr/share/rpcd/acl.d/luci-app-pbr.json | 3 - root/usr/share/rpcd/ucode/luci.pbr | 2 +- 7 files changed, 240 insertions(+), 297 deletions(-) diff --git a/Makefile b/Makefile index 6174d8f..314203e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=11 +PKG_RELEASE:=13 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index da915de..5c40c54 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 27; + return 28; }, get ReadmeCompat() { return "1.2.3"; @@ -69,36 +69,12 @@ var pkg = { }, }; -var getInitList = rpc.declare({ - object: "luci." + pkg.Name, - method: "getInitList", - params: ["name"], -}); - var getInitStatus = rpc.declare({ object: "luci." + pkg.Name, method: "getInitStatus", params: ["name"], }); -var getInterfaces = rpc.declare({ - object: "luci." + pkg.Name, - method: "getInterfaces", - params: ["name"], -}); - -var getPlatformSupport = rpc.declare({ - object: "luci." + pkg.Name, - method: "getPlatformSupport", - params: ["name"], -}); - -var getServiceInfo = rpc.declare({ - object: "service", - method: "list", - params: ["name", "verbose"], -}); - var _setInitAction = rpc.declare({ object: "luci." + pkg.Name, method: "setInitAction", @@ -176,42 +152,35 @@ var pollServiceStatus = function (callback) { var status = baseclass.extend({ render: function () { - return Promise.all([ - L.resolveDefault(getInitStatus(pkg.Name), {}), - L.resolveDefault(getServiceInfo(pkg.Name, true), {}), - ]).then(function ([initStatus, ubusInfo]) { - var reply = { - status: initStatus?.[pkg.Name] || { - enabled: null, - running: null, - running_iptables: null, - running_nft: null, - running_nft_file: null, - version: null, - packageCompat: 0, - rpcdCompat: 0, - }, - ubus: ubusInfo?.[pkg.Name]?.instances?.main?.data || { - packageCompat: 0, - gateways: [], - errors: [], - warnings: [], - }, + return L.resolveDefault(getInitStatus(pkg.Name), {}).then(function (initStatus) { + var reply = initStatus?.[pkg.Name] || {}; + reply = { + enabled: reply.enabled || false, + running: reply.running || false, + running_iptables: reply.running_iptables || false, + running_nft: reply.running_nft || false, + running_nft_file: reply.running_nft_file || false, + version: reply.version || null, + packageCompat: reply.packageCompat || 0, + rpcdCompat: reply.rpcdCompat || 0, + gateways: reply.gatewaysList || [], + errors: reply.errors || [], + warnings: reply.warnings || [], }; if ( pkg.isVersionMismatch( pkg.LuciCompat, - reply.status.packageCompat, - reply.status.rpcdCompat, + reply.packageCompat, + reply.rpcdCompat, ) ) { - reply.ubus.warnings.push({ + reply.warnings.push({ code: "warningInternalVersionMismatch", info: [ - reply.ubus.packageCompat, + reply.packageCompat, pkg.LuciCompat, - reply.status.rpcdCompat, + reply.rpcdCompat, '', @@ -227,21 +196,21 @@ var status = baseclass.extend({ { class: "cbi-value-title" }, _("Service Status"), ); - if (reply.status.version) { - text = _("Version %s").format(reply.status.version) + " - "; - if (reply.status.running) { + if (reply.version) { + text = _("Version %s").format(reply.version) + " - "; + if (reply.running) { text += _("Running"); - if (reply.status.running_iptables) { + if (reply.running_iptables) { text += " (" + _("iptables mode") + ")."; - } else if (reply.status.running_nft_file) { + } else if (reply.running_nft_file) { text += " (" + _("fw4 nft file mode") + ")."; - } else if (reply.status.running_nft) { + } else if (reply.running_nft) { text += " (" + _("nft mode") + ")."; } else { text += "."; } } else { - if (reply.status.enabled) { + if (reply.enabled) { text += _("Stopped."); } else { text += _("Stopped (Disabled)."); @@ -258,7 +227,7 @@ var status = baseclass.extend({ ]); var gatewaysDiv = []; - if (reply.ubus.gateways) { + if (reply.gateways) { var gatewaysTitle = E( "label", { class: "cbi-value-title" }, @@ -285,7 +254,7 @@ var status = baseclass.extend({ { class: "cbi-value-description" }, description, ); - text = pkg.buildGatewayText(reply.ubus.gateways); + text = pkg.buildGatewayText(reply.gateways); var gatewaysText = E("div", {}, text); var gatewaysField = E("div", { class: "cbi-value-field" }, [ gatewaysText, @@ -298,7 +267,7 @@ var status = baseclass.extend({ } var warningsDiv = []; - if (reply.ubus.warnings && reply.ubus.warnings.length) { + if (reply.warnings && reply.warnings.length) { var warningTable = { warningInternalVersionMismatch: _( "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.", @@ -371,7 +340,7 @@ var status = baseclass.extend({ _("Service Warnings"), ); var text = ""; - reply.ubus.warnings.forEach((element) => { + reply.warnings.forEach((element) => { if (element.code && warningTable[element.code]) { text += pkg.formatMessage(element.info, warningTable[element.code]); } else { @@ -395,7 +364,7 @@ var status = baseclass.extend({ } var errorsDiv = []; - if (reply.ubus.errors && reply.ubus.errors.length) { + if (reply.errors && reply.errors.length) { var errorTable = { errorConfigValidation: _("Config (%s) validation failure").format( "/etc/config/" + pkg.Name, @@ -551,7 +520,7 @@ var status = baseclass.extend({ _("Service Errors"), ); var text = ""; - reply.ubus.errors.forEach((element) => { + reply.errors.forEach((element) => { if (element.code && errorTable[element.code]) { text += pkg.formatMessage(element.info, errorTable[element.code]); } else { @@ -672,10 +641,10 @@ var status = baseclass.extend({ _("Disable"), ); - if (reply.status.enabled) { + if (reply.enabled) { btn_enable.disabled = true; btn_disable.disabled = false; - if (reply.status.running) { + if (reply.running) { btn_start.disabled = true; btn_action.disabled = false; btn_stop.disabled = false; @@ -709,7 +678,7 @@ var status = baseclass.extend({ btn_disable, ]); var buttonsField = E("div", { class: "cbi-value-field" }, buttonsText); - var buttonsDiv = reply.status.version + var buttonsDiv = reply.version ? E("div", { class: "cbi-value" }, [buttonsTitle, buttonsField]) : ""; @@ -731,7 +700,7 @@ var status = baseclass.extend({ ), ); - var donateDiv = reply.status.version + var donateDiv = reply.version ? E("div", { class: "cbi-value" }, [donateTitle, donateText]) : ""; @@ -761,6 +730,4 @@ return L.Class.extend({ status: status, pkg: pkg, getInitStatus: getInitStatus, - getInterfaces: getInterfaces, - getPlatformSupport: getPlatformSupport, }); diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 6969935..6b2571b 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -12,27 +12,22 @@ var pkg = pbr.pkg; return view.extend({ load: function () { return Promise.all([ - L.resolveDefault(pbr.getInterfaces(pkg.Name), {}), - L.resolveDefault(pbr.getPlatformSupport(pkg.Name), {}), + L.resolveDefault(pbr.getInitStatus(pkg.Name), {}), L.resolveDefault(L.uci.load(pkg.Name), {}), ]); }, render: function (data) { var status, m, s, o; + var statusData = (data[0] && data[0][pkg.Name]) || {}; var reply = { - interfaces: (data[0] && - data[0][pkg.Name] && - data[0][pkg.Name].interfaces) || ["wan"], - platform: (data[1] && data[1][pkg.Name]) || { - 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, + interfaces: statusData.interfaces || ["wan"], + platform: statusData.platform || { + nft_installed: false, + adguardhome_installed: false, + dnsmasq_installed: false, + unbound_installed: false, + dnsmasq_nftset_support: false, }, }; @@ -112,14 +107,6 @@ return view.extend({ text ); o.value("none", _("Disabled")); - if (reply.platform.adguardhome_ipset_support) { - o.value("adguardhome.ipset", _("AdGuardHome ipset")); - o.default = "adguardhome.ipset"; - } - if (reply.platform.dnsmasq_ipset_support) { - o.value("dnsmasq.ipset", _("Dnsmasq ipset")); - o.default = "dnsmasq.ipset"; - } if (reply.platform.dnsmasq_nftset_support) { o.value("dnsmasq.nftset", _("Dnsmasq nft set")); o.default = "dnsmasq.nftset"; diff --git a/htdocs/luci-static/resources/view/status/include/72_pbr.js b/htdocs/luci-static/resources/view/status/include/72_pbr.js index b065497..9d145ae 100644 --- a/htdocs/luci-static/resources/view/status/include/72_pbr.js +++ b/htdocs/luci-static/resources/view/status/include/72_pbr.js @@ -19,11 +19,11 @@ return baseclass.extend({ reply = data[0][pkg.Name]; } else { reply = { - enabled: null, - running: null, - running_iptables: null, - running_nft: null, - running_nft_file: null, + enabled: false, + running: false, + running_iptables: false, + running_nft: false, + running_nft_file: false, version: null, gateways: null, errors: [], diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 14db1d9..6c31e1d 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,16 +1,16 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:312 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:281 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 msgid "%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:372 msgid "%s binary cannot be found" 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:43 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 " @@ -21,29 +21,25 @@ msgstr "" msgid "Active" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:116 -msgid "AdGuardHome ipset" -msgstr "" - -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:177 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:164 msgid "Add" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:249 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:236 msgid "Add Ignore Target" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:251 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:238 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:46 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:41 msgid "Advanced Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:143 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:130 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 " @@ -51,7 +47,7 @@ msgid "" "servers. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:159 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:146 msgid "" "Allows to specify the list of interface names (lower case) to be ignored by " "the service. Can be useful for an OpenVPN server running on OpenWrt device. " @@ -59,171 +55,167 @@ msgid "" "automatically, do not add those here.See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:43 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:38 msgid "Basic Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:336 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:323 msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:543 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 msgid "Command failed: '%s'" 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:66 msgid "Condensed output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:369 msgid "Config (%s) validation failure" 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:63 msgid "Controls both system log and console output verbosity." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:421 +#: 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:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 msgid "Custom user file '%s' not found or empty" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:353 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:340 msgid "DNS Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:412 +#: 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:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:386 msgid "DSCP Tagging" 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:172 msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:506 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:672 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:641 msgid "Disable" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:114 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:134 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:257 +#: 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:121 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:244 msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:666 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:635 msgid "Disabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:267 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:254 msgid "Display these protocols in protocol column in Web UI." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 msgid "" "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own " "confdir" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:120 -msgid "Dnsmasq ipset" -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:111 msgid "Dnsmasq nft set" 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:80 msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:719 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:688 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:653 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:622 msgid "Enable" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:135 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:258 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:289 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:367 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:434 +#: 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:245 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:276 +#: 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:421 msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:647 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:616 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:515 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:561 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:530 msgid "Errors encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:219 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206 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:513 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:545 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:418 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 msgid "Failed to set up any gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:186 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:173 msgid "Force the ICMP protocol interface." msgstr "" @@ -231,11 +223,11 @@ msgstr "" msgid "Grant UCI and file access for luci-app-pbr" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:132 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:119 msgid "IPv6 Support" msgstr "" -#: 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:144 msgid "Ignored Interfaces" msgstr "" @@ -247,74 +239,74 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:322 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:541 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:335 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:178 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:165 msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:472 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:310 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:343 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:330 msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:412 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Interface mark for '%s' exceeds the fwmask value" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:273 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:326 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:295 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:295 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:374 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:282 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:361 msgid "Local addresses / devices" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:301 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:288 msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -322,12 +314,12 @@ msgstr "" msgid "Mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:293 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:371 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:280 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:358 msgid "Name" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:276 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:263 msgid "" "Name, interface and at least one other field are required. Multiple local " "and remote addresses/devices/domains and ports can be space separated. " @@ -335,106 +327,106 @@ msgid "" "fields are left blank. For more information on options, check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:355 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:342 msgid "" "Name, local address and remote DNS fields are required. Multiple local " "addresses/devices can be space separated. For more information on options, " "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:517 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:529 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:325 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 msgid "Netifd setup: required option '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:188 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:175 msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:251 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:220 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:67 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:62 msgid "Output verbosity" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:439 +#: 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:279 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:727 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:696 msgid "Please %sdonate%s to support development of this project." 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:96 msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:342 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:311 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:320 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:289 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:323 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:292 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:317 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:314 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:283 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:274 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:261 msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:538 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -443,11 +435,11 @@ msgstr "" msgid "Policy Based Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:40 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:35 msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:224 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:193 msgid "Policy Based Routing - Status" msgstr "" @@ -455,147 +447,147 @@ msgstr "" msgid "Policy Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:319 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:306 msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 msgid "Refer to %sREADME%s for details" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:381 +#: 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:389 +#: 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:307 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:294 msgid "Remote addresses / domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:313 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:300 msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:276 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:374 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:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:377 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:615 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:584 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:609 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 msgid "Restarting %s service" 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:161 msgid "Rule Create option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:423 +#: 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:233 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:202 msgid "Running" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:362 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331 msgid "" "Running in dynamic routing tables mode. Consider installing netifd " "extensions or mwan4 for more efficient operation. See %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:80 +#: 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:175 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:162 msgid "Select Add for -A/add and Insert for -I/Insert." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:698 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:667 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:551 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "Service Errors" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206 -#: 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:193 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:204 msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:234 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:197 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:371 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:340 msgid "Service Warnings" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:401 +#: 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:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:565 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:559 msgid "Starting %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:202 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:189 msgid "" "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/pbr/overview.js:236 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:223 msgid "" "Starting (Uplink/WAN) ip rules priority used by the pbr service. High " "starting priority is used to avoid conflict with other services, this can be " @@ -606,106 +598,106 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:634 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:603 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:247 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:245 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:214 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:628 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 msgid "Stopping %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:79 +#: 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:86 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:81 msgid "Strictly enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:141 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:128 msgid "Supported Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:266 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:253 msgid "Supported Protocols" 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:65 msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:421 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:269 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:238 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 msgid "" "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 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:91 msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 msgid "The %s service failed to discover uplink gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:383 msgid "The %s service is currently disabled" msgstr "" -#: 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:87 msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:497 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 msgid "The '%s' schema requires curl, but it's not detected on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:329 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:298 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:332 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:301 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:535 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 msgid "Unknown error" msgstr "" @@ -713,51 +705,51 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:347 msgid "Unknown warning" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 msgid "Unsafe nft command in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:234 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:221 msgid "Uplink IP Rules Priority" 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:187 msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:359 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:328 msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:532 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 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:111 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:106 msgid "Use resolver set support for domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:72 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:67 msgid "Verbose output" msgstr "" @@ -765,41 +757,41 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:231 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:200 msgid "Version %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:223 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:210 msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:381 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:350 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:61 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:56 msgid "Web UI Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:328 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:315 msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:237 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 #: 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:235 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:204 #: 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:239 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:208 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 msgid "nft mode" msgstr "" diff --git a/root/usr/share/rpcd/acl.d/luci-app-pbr.json b/root/usr/share/rpcd/acl.d/luci-app-pbr.json index 73ec4a2..f88aa99 100644 --- a/root/usr/share/rpcd/acl.d/luci-app-pbr.json +++ b/root/usr/share/rpcd/acl.d/luci-app-pbr.json @@ -8,9 +8,6 @@ "getInitStatus", "getInterfaces", "getPlatformSupport" - ], - "service": [ - "list" ] }, "file": { diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr index 1c70902..cf429e7 100644 --- a/root/usr/share/rpcd/ucode/luci.pbr +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -16,7 +16,7 @@ import pbr from '/lib/pbr/pbr.uc'; import { stat } from 'fs'; const packageName = 'pbr'; // ucode-lsp disable -const rpcdCompat = 27; // ucode-lsp disable +const rpcdCompat = 28; // ucode-lsp disable // โ”€โ”€ rpcd Method Handlers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ From 48f4b57b9dc9b75ec9bf5d52c39e73efb6b87e96 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 21 Feb 2026 19:17:06 +0000 Subject: [PATCH 121/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 314203e..e20110f 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=13 +PKG_RELEASE:=15 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From e2ff77487f4d086f93db2bbf6b8b2b41e79dce48 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 22 Feb 2026 18:00:02 +0000 Subject: [PATCH 122/185] switch to pbr object; switch README anchors to kebab case --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 4 ++-- .../resources/view/pbr/overview.js | 20 +++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index e20110f..e6b32c8 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=15 +PKG_RELEASE:=17 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 5c40c54..572f290 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -348,7 +348,7 @@ var status = baseclass.extend({ } }); text += _("Warnings encountered, please check the %sREADME%s").format( - '', + '', "!
", ); var warningsText = E("div", { class: "cbi-value-description" }, text); @@ -528,7 +528,7 @@ var status = baseclass.extend({ } }); text += _("Errors encountered, please check the %sREADME%s").format( - '', + '', "!
", ); var errorsText = E("div", { class: "cbi-value-description" }, text); diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 6b2571b..1bcdde7 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -47,7 +47,7 @@ return view.extend({ "", '', + '#service-configuration-settings" target="_blank">', "", "

" ) @@ -73,7 +73,7 @@ return view.extend({ "strict_enforcement", _("Strict enforcement"), _("See the %sREADME%s for details.").format( - '', + '', "" ) ); @@ -95,7 +95,7 @@ return view.extend({ text += _( "Please check the %sREADME%s before changing this option." ).format( - '', + '', "" ); @@ -131,7 +131,7 @@ return view.extend({ "Can be useful if your OpenVPN tunnels have dev option other than tun* or tap* or specific use cases " + "of WireGuard servers. See the %sREADME%s for details." ).format( - '', + '', "" ) ); @@ -148,7 +148,7 @@ return view.extend({ "have a listen_port defined, are handled automatically, do not add those here." + "See the %sREADME%s for details." ).format( - '', + '', "" ) ); @@ -237,7 +237,7 @@ return view.extend({ _( "Adds 'ignore' to the list of interfaces for policies. See the %sREADME%s for details." ).format( - '', + '', "" ) ); @@ -264,7 +264,7 @@ return view.extend({ "addresses/devices/domains and ports can be space separated. Placeholders below represent just " + "the format/syntax and will not be used if fields are left blank. For more information on options, check the %sREADME%s." ).format( - '', + '', "" ) ); @@ -342,7 +342,7 @@ return view.extend({ "Name, local address and remote DNS fields are required. Multiple local " + "addresses/devices can be space separated. For more information on options, check the %sREADME%s." ).format( - '', + '', "" ) ); @@ -387,7 +387,7 @@ return view.extend({ _( "Set DSCP tags (in range between 1 and 63) for specific interfaces. See the %sREADME%s for details." ).format( - '', + '', "" ) ); @@ -410,7 +410,7 @@ return view.extend({ "Run the following user files after setting up but before restarting DNSMASQ. " + "See the %sREADME%s for details." ).format( - '', + '', "" ) ); From e2e9fd39fda942f6e0cd3fc45f5d5f5615ca8edd Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 22 Feb 2026 19:04:57 +0000 Subject: [PATCH 123/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e6b32c8..e6da530 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=17 +PKG_RELEASE:=19 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 0fa7a24962438366cece752830df58b3be431517 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 23 Feb 2026 18:40:04 +0000 Subject: [PATCH 124/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e6da530..2089d19 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=19 +PKG_RELEASE:=20 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 16b1605cfc065396b57163b770de580d85c9e77f Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 23 Feb 2026 20:41:18 +0000 Subject: [PATCH 125/185] update to use new ucode from principal package --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 2 +- root/usr/share/rpcd/ucode/luci.pbr | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 2089d19..b10ba41 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=20 +PKG_RELEASE:=23 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 572f290..6d4a1df 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 28; + return 30; }, get ReadmeCompat() { return "1.2.3"; diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr index cf429e7..cc4ae67 100644 --- a/root/usr/share/rpcd/ucode/luci.pbr +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -12,11 +12,11 @@ ubus call luci.pbr getInterfaces '{"name":"pbr"}' ubus call luci.pbr setInitAction '{"name":"pbr","action":"start"}' */ -import pbr from '/lib/pbr/pbr.uc'; +import create_pbr from '/lib/pbr/pbr.uc'; import { stat } from 'fs'; const packageName = 'pbr'; // ucode-lsp disable -const rpcdCompat = 28; // ucode-lsp disable +const rpcdCompat = 30; // ucode-lsp disable // โ”€โ”€ rpcd Method Handlers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ @@ -25,6 +25,7 @@ const methods = { args: { name: 'name' }, call: function(req) { let name = req.args?.name || packageName; + let pbr = create_pbr(); return pbr.get_init_list(name); } }, @@ -32,6 +33,7 @@ const methods = { args: { name: 'name' }, call: function(req) { let name = req.args?.name || packageName; + let pbr = create_pbr(); let result = pbr.get_init_status(name); if (result[name]) result[name].rpcdCompat = rpcdCompat; @@ -42,6 +44,7 @@ const methods = { args: { name: 'name' }, call: function(req) { let name = req.args?.name || packageName; + let pbr = create_pbr(); return pbr.get_supported_interfaces(name); } }, @@ -49,6 +52,7 @@ const methods = { args: { name: 'name' }, call: function(req) { let name = req.args?.name || packageName; + let pbr = create_pbr(); return pbr.get_platform_support(name); } }, From b2d5f6dd50ab20917dbcd58ff9ac919c14b92cae Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 23 Feb 2026 23:44:28 +0000 Subject: [PATCH 126/185] more native Gateways status output --- htdocs/luci-static/resources/pbr/status.js | 52 +++-- po/templates/pbr.pot | 226 ++++++++++----------- 2 files changed, 138 insertions(+), 140 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 6d4a1df..ed62317 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -44,28 +44,30 @@ var pkg = { : template.format(info || " ")) + "
" ); }, - buildGatewayText: function (gw) { + buildGatewayElements: function (gw) { const gateways = Array.isArray(gw) ? gw : Object.values(gw); - const lines = gateways.map((g) => { + const elements = []; + gateways.forEach(function (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; + if (!iface) return; + if (elements.length) elements.push(E("br")); 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); + if (g.device_ipv4 && g.device_ipv4 !== iface) parts.push(g.device_ipv4); + if (g.gateway_ipv4) parts.push(g.gateway_ipv4); + if (g.gateway_ipv6) { + if (g.device_ipv6 && g.device_ipv6 !== iface) + parts.push(g.device_ipv6); + parts.push(g.gateway_ipv6); + } + var line = parts.join("/"); + if (g.default) { + elements.push(line + " "); + elements.push(E("strong", {}, "โœ“")); + } else { + elements.push(line); } - let line = parts.join("/"); - if (default_gw) line += " โœ“"; - return line; }); - return lines.join("
"); + return elements; }, }; @@ -233,7 +235,7 @@ var status = baseclass.extend({ { class: "cbi-value-title" }, _("Service Gateways"), ); - var description = + var gatewaysDescr = E("div", { class: "cbi-value-description" }, _( "The %s indicates default gateway. See the %sREADME%s for details.", ).format( @@ -245,17 +247,13 @@ var status = baseclass.extend({ ) + "
" + "
" + - _("Please %sdonate%s to support development of this project.").format( + _( + "Please %sdonate%s to support development of this project.", + ).format( "", "", - ); - var gatewaysDescr = E( - "div", - { class: "cbi-value-description" }, - description, - ); - text = pkg.buildGatewayText(reply.gateways); - var gatewaysText = E("div", {}, text); + )); + var gatewaysText = E("div", {}, pkg.buildGatewayElements(reply.gateways)); var gatewaysField = E("div", { class: "cbi-value-field" }, [ gatewaysText, gatewaysDescr, diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 6c31e1d..f47b65a 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:281 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:372 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370 msgid "%s binary cannot be found" msgstr "" @@ -63,8 +63,8 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 msgid "Command failed: '%s'" msgstr "" @@ -72,7 +72,7 @@ msgstr "" msgid "Condensed output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:369 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 msgid "Config (%s) validation failure" msgstr "" @@ -84,7 +84,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:418 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -104,15 +104,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:641 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:639 msgid "Disable" msgstr "" @@ -122,7 +122,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:635 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:633 msgid "Disabling %s service" msgstr "" @@ -130,7 +130,7 @@ msgstr "" msgid "Display these protocols in protocol column in Web UI." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:305 msgid "" "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own " "confdir" @@ -144,11 +144,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:688 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:686 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:622 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:620 msgid "Enable" msgstr "" @@ -160,19 +160,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:616 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:614 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:530 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:528 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -182,36 +182,36 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:418 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 msgid "Failed to set up any gateway" msgstr "" @@ -239,16 +239,16 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:322 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:302 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -258,15 +258,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:277 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -274,26 +274,26 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:412 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 msgid "Interface mark for '%s' exceeds the fwmask value" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:273 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:271 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:295 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:293 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -306,7 +306,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -334,27 +334,27 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:325 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:323 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -362,7 +362,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:220 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:222 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 msgid "Not installed or not found" msgstr "" @@ -375,8 +375,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:696 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:251 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:694 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -384,24 +384,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:311 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 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:289 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:287 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:292 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:290 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:284 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:283 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:281 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -409,24 +409,24 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -439,7 +439,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:193 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:195 msgid "Policy Based Routing - Status" msgstr "" @@ -451,11 +451,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390 msgid "Refer to %sREADME%s for details" msgstr "" @@ -475,37 +475,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:276 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:274 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:374 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:372 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:377 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:375 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:584 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:582 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:576 msgid "Restarting %s service" msgstr "" @@ -519,11 +519,11 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:202 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:204 msgid "Running" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:329 msgid "" "Running in dynamic routing tables mode. Consider installing netifd " "extensions or mwan4 for more efficient operation. See %sREADME%s." @@ -537,11 +537,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:667 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:665 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:518 msgid "Service Errors" msgstr "" @@ -550,15 +550,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:234 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:236 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:197 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:199 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:340 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 msgid "Service Warnings" msgstr "" @@ -568,15 +568,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:565 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:563 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:559 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:557 msgid "Starting %s service" msgstr "" @@ -598,19 +598,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:603 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:601 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:218 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:214 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:595 msgid "Stopping %s service" msgstr "" @@ -634,15 +634,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:421 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:238 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:240 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -652,11 +652,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 msgid "The %s service failed to discover uplink gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:383 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:381 msgid "The %s service is currently disabled" msgstr "" @@ -664,40 +664,40 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 msgid "The '%s' schema requires curl, but it's not detected on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:298 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:296 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:401 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:301 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:299 msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:502 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:525 msgid "Unknown error" msgstr "" @@ -705,19 +705,19 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:347 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:345 msgid "Unknown warning" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 msgid "Unsafe nft command in custom user file '%s'" msgstr "" @@ -729,17 +729,17 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:328 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:326 msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -757,7 +757,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:200 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:202 msgid "Version %s" msgstr "" @@ -765,11 +765,11 @@ msgstr "" msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:318 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:350 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:348 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" @@ -781,17 +781,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:208 #: 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:204 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 #: 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:208 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 msgid "nft mode" msgstr "" From d41895be9cd04d2d8c3ef4ea4ad0b8d2ed7bb0ff Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 24 Feb 2026 23:47:52 +0000 Subject: [PATCH 127/185] add try-catch check in the overview include file --- .../resources/view/status/include/72_pbr.js | 92 +++++++++---------- 1 file changed, 41 insertions(+), 51 deletions(-) diff --git a/htdocs/luci-static/resources/view/status/include/72_pbr.js b/htdocs/luci-static/resources/view/status/include/72_pbr.js index 9d145ae..40bf926 100644 --- a/htdocs/luci-static/resources/view/status/include/72_pbr.js +++ b/htdocs/luci-static/resources/view/status/include/72_pbr.js @@ -14,63 +14,53 @@ return baseclass.extend({ }, render: function (data) { - var reply; - if (data[0] && data[0][pkg.Name]) { - reply = data[0][pkg.Name]; - } else { - reply = { - enabled: false, - running: false, - running_iptables: false, - running_nft: false, - running_nft_file: false, - version: null, - gateways: null, - errors: [], - warnings: [], - }; - } + try { + var reply = (data[0] && data[0][pkg.Name]) || {}; - var versionText, - statusText = "", - modeText = ""; - if (reply.version) { - versionText = reply.version; - if (reply.running) { - statusText = _("Active"); - if (reply.running_iptables) { - modeText = _("iptables mode"); - } else if (reply.running_nft_file) { - modeText = _("fw4 nft file mode"); - } else if (reply.running_nft) { - modeText = _("nft mode"); + var versionText, + statusText = "", + modeText = ""; + if (reply.version) { + versionText = reply.version; + if (reply.running) { + statusText = _("Active"); + if (reply.running_iptables) { + modeText = _("iptables mode"); + } else if (reply.running_nft_file) { + modeText = _("fw4 nft file mode"); + } else if (reply.running_nft) { + modeText = _("nft mode"); + } else { + modeText = _("unknown"); + } } else { - modeText = _("unknown"); + if (reply.enabled) { + statusText = _("Inactive"); + } else { + statusText = _("Inactive (Disabled)"); + } } } else { - if (reply.enabled) { - statusText = _("Inactive"); - } else { - statusText = _("Inactive (Disabled)"); - } + versionText = _("Not installed or not found"); } - } else { - versionText = _("Not installed or not found"); - } - var table = E("table", { class: "table", id: "pbr_status_table" }, [ - E("tr", { class: "tr table-titles" }, [ - E("th", { class: "th" }, _("Status")), - E("th", { class: "th" }, _("Version")), - E("th", { class: "th" }, _("Mode")), - ]), - E("tr", { class: "tr" }, [ - E("td", { class: "td" }, statusText), - E("td", { class: "td" }, versionText), - E("td", { class: "td" }, modeText), - ]), - ]); + var table = E("table", { class: "table", id: "pbr_status_table" }, [ + E("tr", { class: "tr table-titles" }, [ + E("th", { class: "th" }, _("Status")), + E("th", { class: "th" }, _("Version")), + E("th", { class: "th" }, _("Mode")), + ]), + E("tr", { class: "tr" }, [ + E("td", { class: "td" }, statusText), + E("td", { class: "td" }, versionText), + E("td", { class: "td" }, modeText), + ]), + ]); - return table; + return table; + } catch (e) { + return E("div", { class: "alert-message warning" }, + _("Unable to retrieve %s status").format("PBR")); + } }, }); From bf0456eff735b6909c1db5b8a8c724c7ab11afe1 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 25 Feb 2026 02:26:14 +0000 Subject: [PATCH 128/185] update pot --- po/templates/pbr.pot | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index f47b65a..904dbd5 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -17,7 +17,7 @@ msgid "" "caution!%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:40 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:26 msgid "Active" msgstr "" @@ -231,11 +231,11 @@ msgstr "" msgid "Ignored Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:52 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:38 msgid "Inactive" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:54 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:40 msgid "Inactive (Disabled)" msgstr "" @@ -310,7 +310,7 @@ msgstr "" msgid "Mismatched IP family between in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:65 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:51 msgid "Mode" msgstr "" @@ -363,7 +363,7 @@ msgid "No Change" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:222 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:58 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:44 msgid "Not installed or not found" msgstr "" @@ -594,7 +594,7 @@ msgid "" "changed by user." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:63 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:49 msgid "Status" msgstr "" @@ -684,6 +684,10 @@ msgstr "" msgid "The principal package (pbr) is outdated, please update it" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:63 +msgid "Unable to retrieve %s status" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:502 msgid "Unexpected exit or service termination: '%s'" @@ -753,7 +757,7 @@ msgstr "" msgid "Verbose output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:64 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:50 msgid "Version" msgstr "" @@ -782,20 +786,20 @@ msgid "all" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:208 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:44 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:30 msgid "fw4 nft file mode" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:42 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:28 msgid "iptables mode" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:46 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:32 msgid "nft mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:48 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:34 msgid "unknown" msgstr "" From 45810893ff56974953e6192f9423cd4819324640 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 25 Feb 2026 19:58:49 +0000 Subject: [PATCH 129/185] use native ucode calls instead of system calls and js linter fixes --- htdocs/luci-static/resources/pbr/status.js | 4 +-- .../resources/view/pbr/overview.js | 1 + .../resources/view/status/include/72_pbr.js | 1 + root/usr/share/rpcd/ucode/luci.pbr | 30 ++++++++++--------- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index ed62317..7a47f44 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -337,7 +337,7 @@ var status = baseclass.extend({ { class: "cbi-value-title" }, _("Service Warnings"), ); - var text = ""; + text = ""; reply.warnings.forEach((element) => { if (element.code && warningTable[element.code]) { text += pkg.formatMessage(element.info, warningTable[element.code]); @@ -517,7 +517,7 @@ var status = baseclass.extend({ { class: "cbi-value-title" }, _("Service Errors"), ); - var text = ""; + text = ""; reply.errors.forEach((element) => { if (element.code && errorTable[element.code]) { text += pkg.formatMessage(element.info, errorTable[element.code]); diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 1bcdde7..ca2b94b 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -6,6 +6,7 @@ "require rpc"; "require view"; "require pbr.status as pbr"; +/* globals pbr */ var pkg = pbr.pkg; diff --git a/htdocs/luci-static/resources/view/status/include/72_pbr.js b/htdocs/luci-static/resources/view/status/include/72_pbr.js index 40bf926..16fbde6 100644 --- a/htdocs/luci-static/resources/view/status/include/72_pbr.js +++ b/htdocs/luci-static/resources/view/status/include/72_pbr.js @@ -3,6 +3,7 @@ "require form"; "require baseclass"; "require pbr.status as pbr"; +/* globals pbr */ var pkg = pbr.pkg; diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr index cc4ae67..2bcc9e1 100644 --- a/root/usr/share/rpcd/ucode/luci.pbr +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -13,7 +13,8 @@ ubus call luci.pbr setInitAction '{"name":"pbr","action":"start"}' */ import create_pbr from '/lib/pbr/pbr.uc'; -import { stat } from 'fs'; +import { access } from 'fs'; +import { cursor } from 'uci'; const packageName = 'pbr'; // ucode-lsp disable const rpcdCompat = 30; // ucode-lsp disable @@ -62,27 +63,28 @@ const methods = { let name = req.args?.name || packageName; let action = req.args?.action; if (name != packageName) return { result: false }; - if (!stat('/etc/init.d/' + packageName)) + if (!access('/etc/init.d/' + packageName, 'x')) return { error: 'Init script not found!' }; - let cmd; + let result = false; switch (action) { case 'enable': - cmd = sprintf("/etc/init.d/%s enable && uci set %s.config.enabled=1 && uci commit %s", - packageName, packageName, packageName); - break; - case 'disable': - cmd = sprintf("/etc/init.d/%s disable && uci set %s.config.enabled=0 && uci commit %s", - packageName, packageName, packageName); + case 'disable': { + let val = (action === 'enable') ? '1' : '0'; + if (system(sprintf("/etc/init.d/%s %s >/dev/null 2>&1", packageName, action)) == 0) { + let uci_ctx = cursor(); + uci_ctx.load(packageName); + uci_ctx.set(packageName, 'config', 'enabled', val); + uci_ctx.commit(packageName); + result = true; + } break; + } case 'start': case 'stop': case 'reload': case 'restart': - cmd = sprintf("/etc/init.d/%s %s", packageName, action); + if (system(sprintf("/etc/init.d/%s %s >/dev/null 2>&1", packageName, action)) == 0) + result = true; break; } - - let result = false; - if (cmd && system(cmd + ' >/dev/null 2>&1') == 0) - result = true; return { result: result }; } }, From ec47f7b284776613a810332feeaff42ef43c40bc Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 25 Feb 2026 20:04:22 +0000 Subject: [PATCH 130/185] update pot --- po/templates/pbr.pot | 174 +++++++++++++++++++++---------------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 904dbd5..da8c667 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -10,36 +10,36 @@ msgstr "" msgid "%s binary cannot be found" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:43 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:44 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/status/include/72_pbr.js:26 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:27 msgid "Active" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:164 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:165 msgid "Add" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:236 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:237 msgid "Add Ignore Target" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:238 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:239 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:41 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:42 msgid "Advanced Configuration" 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:131 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 " @@ -47,7 +47,7 @@ msgid "" "servers. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:146 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:147 msgid "" "Allows to specify the list of interface names (lower case) to be ignored by " "the service. Can be useful for an OpenVPN server running on OpenWrt device. " @@ -55,11 +55,11 @@ msgid "" "automatically, do not add those here.See the %sREADME%s for details." 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:39 msgid "Basic Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:323 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:324 msgid "Chain" msgstr "" @@ -68,7 +68,7 @@ msgstr "" msgid "Command failed: '%s'" msgstr "" -#: 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:67 msgid "Condensed output" msgstr "" @@ -76,11 +76,11 @@ msgstr "" msgid "Config (%s) validation failure" msgstr "" -#: 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:64 msgid "Controls both system log and console output verbosity." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:409 msgid "Custom User File Includes" msgstr "" @@ -88,19 +88,19 @@ msgstr "" msgid "Custom user file '%s' not found or empty" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:340 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:341 msgid "DNS Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:400 msgid "DSCP Tag" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:387 msgid "DSCP Tagging" msgstr "" -#: 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:173 msgid "Default ICMP Interface" msgstr "" @@ -116,9 +116,9 @@ msgstr "" msgid "Disable" msgstr "" -#: 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:121 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:244 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:110 +#: 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:245 msgid "Disabled" msgstr "" @@ -126,7 +126,7 @@ msgstr "" msgid "Disabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:254 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:255 msgid "Display these protocols in protocol column in Web UI." msgstr "" @@ -136,11 +136,11 @@ msgid "" "confdir" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:111 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:112 msgid "Dnsmasq nft set" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:80 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:81 msgid "Do not enforce policies when their gateway is down" msgstr "" @@ -152,11 +152,11 @@ msgstr "" msgid "Enable" 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:245 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:276 -#: 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:421 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:123 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:246 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:277 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:355 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:422 msgid "Enabled" msgstr "" @@ -176,7 +176,7 @@ msgstr "" msgid "Errors encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:207 msgid "" "FW Mask used by the service. High mask is used to avoid conflict with SQM/" "QoS. Change with caution together with" @@ -215,7 +215,7 @@ msgstr "" msgid "Failed to set up any gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:173 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:174 msgid "Force the ICMP protocol interface." msgstr "" @@ -223,19 +223,19 @@ msgstr "" msgid "Grant UCI and file access for luci-app-pbr" msgstr "" -#: 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:120 msgid "IPv6 Support" 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:145 msgid "Ignored Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:38 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:39 msgid "Inactive" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:40 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:41 msgid "Inactive (Disabled)" msgstr "" @@ -254,7 +254,7 @@ msgid "" "support" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:165 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:166 msgid "Insert" msgstr "" @@ -270,7 +270,7 @@ msgstr "" msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:330 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:331 msgid "Interface" msgstr "" @@ -297,12 +297,12 @@ msgstr "" msgid "Invalid OpenVPN config for '%s' interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:282 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:361 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:283 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:362 msgid "Local addresses / devices" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:288 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:289 msgid "Local ports" msgstr "" @@ -310,16 +310,16 @@ msgstr "" msgid "Mismatched IP family between in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:51 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:52 msgid "Mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:280 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:358 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:281 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:359 msgid "Name" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:263 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:264 msgid "" "Name, interface and at least one other field are required. Multiple local " "and remote addresses/devices/domains and ports can be space separated. " @@ -327,7 +327,7 @@ msgid "" "fields are left blank. For more information on options, check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:342 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:343 msgid "" "Name, local address and remote DNS fields are required. Multiple local " "addresses/devices can be space separated. For more information on options, " @@ -358,20 +358,20 @@ msgstr "" msgid "Netifd setup: required option '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:175 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:176 msgid "No Change" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:222 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:44 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:45 msgid "Not installed or not found" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:62 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:63 msgid "Output verbosity" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:426 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:427 msgid "Path" msgstr "" @@ -380,7 +380,7 @@ msgstr "" msgid "Please %sdonate%s to support development of this project." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:96 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:97 msgid "Please check the %sREADME%s before changing this option." msgstr "" @@ -405,7 +405,7 @@ msgstr "" 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:261 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:262 msgid "Policies" msgstr "" @@ -431,11 +431,11 @@ msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:10 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:11 msgid "Policy Based Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:35 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:36 msgid "Policy Based Routing - Configuration" msgstr "" @@ -447,7 +447,7 @@ msgstr "" msgid "Policy Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:306 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:307 msgid "Protocol" msgstr "" @@ -459,19 +459,19 @@ msgstr "" msgid "Refer to %sREADME%s for details" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:368 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:369 msgid "Remote DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:376 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:377 msgid "Remote DNS Port" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:294 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:295 msgid "Remote addresses / domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:300 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:301 msgid "Remote ports" msgstr "" @@ -509,11 +509,11 @@ msgstr "" msgid "Restarting %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:161 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:162 msgid "Rule Create option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:411 msgid "" "Run the following user files after setting up but before restarting DNSMASQ. " "See the %sREADME%s for details." @@ -529,11 +529,11 @@ msgid "" "extensions or mwan4 for more efficient operation. See %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:75 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:76 msgid "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:162 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:163 msgid "Select Add for -A/add and Insert for -I/Insert." msgstr "" @@ -545,8 +545,8 @@ msgstr "" msgid "Service Errors" msgstr "" -#: 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:204 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:194 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:205 msgid "Service FW Mask" msgstr "" @@ -562,7 +562,7 @@ msgstr "" msgid "Service Warnings" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:388 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:389 msgid "" "Set DSCP tags (in range between 1 and 63) for specific interfaces. See the " "%sREADME%s for details." @@ -580,21 +580,21 @@ msgstr "" msgid "Starting %s service" msgstr "" -#: 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:190 msgid "" "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/pbr/overview.js:223 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:224 msgid "" "Starting (Uplink/WAN) ip rules priority used by the pbr service. High " "starting priority is used to avoid conflict with other services, this can be " "changed by user." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:49 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:50 msgid "Status" msgstr "" @@ -614,23 +614,23 @@ msgstr "" msgid "Stopping %s service" msgstr "" -#: 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:75 msgid "Strict enforcement" 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 msgid "Strictly enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:128 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:129 msgid "Supported Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:253 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:254 msgid "Supported Protocols" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:65 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:66 msgid "Suppress/No output" msgstr "" @@ -648,7 +648,7 @@ msgid "" "uplink_interface' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:91 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:92 msgid "The %s is not supported on this system." msgstr "" @@ -660,7 +660,7 @@ msgstr "" msgid "The %s service is currently disabled" 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:88 msgid "The %s support is unknown." msgstr "" @@ -684,7 +684,7 @@ msgstr "" msgid "The principal package (pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:63 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:64 msgid "Unable to retrieve %s status" msgstr "" @@ -725,11 +725,11 @@ msgstr "" msgid "Unsafe nft command in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:221 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:222 msgid "Uplink IP Rules Priority" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:187 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:188 msgid "Uplink Interface Table FW Mark" msgstr "" @@ -749,15 +749,15 @@ msgid "" "installed" 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:107 msgid "Use resolver set support for domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:67 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:68 msgid "Verbose output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:50 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:51 msgid "Version" msgstr "" @@ -765,7 +765,7 @@ msgstr "" msgid "Version %s" 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:211 msgid "WAN Table FW Mark" msgstr "" @@ -777,29 +777,29 @@ msgstr "" msgid "Warnings encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:56 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:57 msgid "Web UI Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:315 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:316 msgid "all" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:208 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:30 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:31 msgid "fw4 nft file mode" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:28 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:29 msgid "iptables mode" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:32 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:33 msgid "nft mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:34 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:35 msgid "unknown" msgstr "" From 03a1bfdff9ac7c6b02cde5850587367749194ac0 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 26 Feb 2026 19:59:29 +0000 Subject: [PATCH 131/185] ES linter fixes --- htdocs/luci-static/resources/pbr/status.js | 13 ------- .../resources/view/pbr/overview.js | 2 +- .../resources/view/status/include/72_pbr.js | 2 +- po/templates/pbr.pot | 37 ++++++++----------- 4 files changed, 18 insertions(+), 36 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 7a47f44..3841d72 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -498,19 +498,6 @@ var status = baseclass.extend({ errorUplinkDown: _( "Uplink/WAN interface is still down, increase value of 'procd_boot_trigger_delay' option", ), - errorUnexpectedExit: _( - "Unexpected exit or service termination: '%s'", - ), - errorNoDownloadWithSecureReload: _( - "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode", - ), - errorIncompatibleUserFile: _( - "Incompatible custom user file detected '%s'", - ), - errorTryFailed: _("Command failed: '%s'"), - errorMktempFileCreate: _( - "Failed to create temporary file with mktemp mask: '%s'", - ), }; var errorsTitle = E( "label", diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index ca2b94b..25eb531 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -6,7 +6,7 @@ "require rpc"; "require view"; "require pbr.status as pbr"; -/* globals pbr */ +/* global pbr */ var pkg = pbr.pkg; diff --git a/htdocs/luci-static/resources/view/status/include/72_pbr.js b/htdocs/luci-static/resources/view/status/include/72_pbr.js index 16fbde6..75dcca7 100644 --- a/htdocs/luci-static/resources/view/status/include/72_pbr.js +++ b/htdocs/luci-static/resources/view/status/include/72_pbr.js @@ -3,7 +3,7 @@ "require form"; "require baseclass"; "require pbr.status as pbr"; -/* globals pbr */ +/* global pbr */ var pkg = pbr.pkg; diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index da8c667..5157117 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -64,7 +64,6 @@ msgid "Chain" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 msgid "Command failed: '%s'" msgstr "" @@ -112,7 +111,7 @@ msgstr "" msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:639 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:626 msgid "Disable" msgstr "" @@ -122,7 +121,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:633 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:620 msgid "Disabling %s service" msgstr "" @@ -144,11 +143,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:686 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:673 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:620 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:607 msgid "Enable" msgstr "" @@ -160,7 +159,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:614 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:601 msgid "Enabling %s service" msgstr "" @@ -172,7 +171,7 @@ msgstr "" msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:528 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:515 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -183,7 +182,6 @@ msgid "" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" @@ -244,7 +242,6 @@ msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 msgid "Incompatible custom user file detected '%s'" msgstr "" @@ -376,7 +373,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:251 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:694 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:681 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -426,7 +423,6 @@ msgid "Policy '%s' has no source/destination parameters" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -501,11 +497,11 @@ 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:582 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:569 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:576 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:563 msgid "Restarting %s service" msgstr "" @@ -537,11 +533,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:665 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:652 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:518 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 msgid "Service Errors" msgstr "" @@ -572,11 +568,11 @@ msgstr "" msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:563 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:550 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:557 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:544 msgid "Starting %s service" msgstr "" @@ -598,7 +594,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:601 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:588 msgid "Stop" msgstr "" @@ -610,7 +606,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:595 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:582 msgid "Stopping %s service" msgstr "" @@ -689,7 +685,6 @@ msgid "Unable to retrieve %s status" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:502 msgid "Unexpected exit or service termination: '%s'" msgstr "" @@ -701,7 +696,7 @@ msgstr "" msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:525 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 msgid "Unknown error" msgstr "" From c08ca0f3bdbbe015e2bd6379e3cff6a5c74a0aae Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 27 Feb 2026 03:37:15 +0000 Subject: [PATCH 132/185] add eslinter to workflow --- .github/eslint.config.mjs | 119 +++++++++++++++++++++++++++++++++++ .github/workflows/eslint.yml | 47 ++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 .github/eslint.config.mjs create mode 100644 .github/workflows/eslint.yml diff --git a/.github/eslint.config.mjs b/.github/eslint.config.mjs new file mode 100644 index 0000000..d25e9cd --- /dev/null +++ b/.github/eslint.config.mjs @@ -0,0 +1,119 @@ +import { defineConfig, globalIgnores } from 'eslint/config'; +import globals from 'globals'; +import markdown from "@eslint/markdown"; +import json from '@eslint/json'; +import js from '@eslint/js'; + +export default defineConfig([ + globalIgnores([ + 'node_modules', + ]), + // Markdown + { + files: ["**/*.md"], + plugins: { + markdown, + }, + processor: "markdown/markdown", + }, + // applies only to JavaScript blocks inside of Markdown files + { + files: ["**/*.md/*.js"], + rules: { + strict: "off", + }, + }, + // JSON files + { + files: ['**/*.json'], + ignores: ['package-lock.json'], + plugins: { json }, + language: 'json/json', + extends: ['json/recommended'], + rules: { + 'json/no-duplicate-keys': 'error', + }, + }, + // JavaScript files + { + files: ['**/*.js'], + language: '@/js', + plugins: { js }, + extends: ['js/recommended'], + linterOptions: { + reportUnusedDisableDirectives: "off", + }, + languageOptions: { + sourceType: 'script', + ecmaVersion: 2026, + globals: { + ...globals.browser, + /* LuCI runtime / cbi exports */ + _: 'readonly', + N_: 'readonly', + L: 'readonly', + E: 'readonly', + TR: 'readonly', + cbi_d: 'readonly', + cbi_strings: 'readonly', + cbi_d_add: 'readonly', + cbi_d_check: 'readonly', + cbi_d_checkvalue: 'readonly', + cbi_d_update: 'readonly', + cbi_init: 'readonly', + cbi_update_table: 'readonly', + cbi_validate_form: 'readonly', + cbi_validate_field: 'readonly', + cbi_validate_named_section_add: 'readonly', + cbi_validate_reset: 'readonly', + cbi_row_swap: 'readonly', + cbi_tag_last: 'readonly', + cbi_submit: 'readonly', + cbi_dropdown_init: 'readonly', + isElem: 'readonly', + toElem: 'readonly', + matchesElem: 'readonly', + findParent: 'readonly', + sfh: 'readonly', + renderBadge: 'readonly', + /* modules */ + baseclass: 'readonly', + dom: 'readonly', + firewall: 'readonly', + fwtool: 'readonly', + form: 'readonly', + fs: 'readonly', + network: 'readonly', + nettools: 'readonly', + poll: 'readonly', + random: 'readonly', + request: 'readonly', + session: 'readonly', + rpc: 'readonly', + uci: 'readonly', + ui: 'readonly', + uqr: 'readonly', + validation: 'readonly', + view: 'readonly', + widgets: 'readonly', + /* dockerman */ + dm2: 'readonly', + jsapi: 'readonly', + }, + parserOptions: { + ecmaFeatures: { + globalReturn: true, + }, + }, + }, + rules: { + 'strict': 0, + 'no-prototype-builtins': 0, + 'no-empty': 0, + 'no-undef': 'warn', + 'no-unused-vars': ['off', { "caughtErrors": "none" }], + 'no-regex-spaces': 0, + 'no-control-regex': 0, + }, + }, +]); diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml new file mode 100644 index 0000000..3315da4 --- /dev/null +++ b/.github/workflows/eslint.yml @@ -0,0 +1,47 @@ +name: "ESLint" + +on: + push: + branches: ["main"] + paths: + - '**/*.js' + - '**/*.json' + - '**/*.md' + - '.github/eslint.config.mjs' + + pull_request: + branches: ["main"] + paths: + - '**/*.js' + - '**/*.json' + - '**/*.md' + - '.github/eslint.config.mjs' + +permissions: {} + +jobs: + eslint: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Check out repository + uses: actions/checkout@v6 + + - name: Set up Node.js + uses: actions/setup-node@v6 + with: + node-version: latest + + - name: Install ESLint + run: | + npm install --no-audit --no-fund --save-dev \ + eslint@9 \ + globals \ + @eslint/json@latest \ + @eslint/js@9 \ + @eslint/markdown \ + eslint-formatter-gha + + - name: Run ESLint + run: npx eslint --config .github/eslint.config.mjs . From 1e1fdd49ec7ec362bf9dd3b1eeb1ef6e60687324 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 1 Mar 2026 02:23:13 +0000 Subject: [PATCH 133/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b10ba41..7216d62 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=23 +PKG_RELEASE:=25 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From ebc89bdef1fe8183407fe8380cf834378ba86300 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 3 Mar 2026 02:18:07 +0000 Subject: [PATCH 134/185] safer wait for long pbr operations --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 56 ++++-- po/templates/pbr.pot | 216 ++++++++++----------- 3 files changed, 147 insertions(+), 127 deletions(-) diff --git a/Makefile b/Makefile index 7216d62..b4b94f0 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=25 +PKG_RELEASE:=27 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 3841d72..195a47a 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -103,31 +103,39 @@ var RPC = { }); }, setInitAction: function (name, action) { - _setInitAction(name, action).then( - function (result) { - this.emit("setInitAction", result); - }.bind(this), - ); + _setInitAction(name, action) + .then( + function (result) { + this.emit("setInitAction", { result: result, action: action }); + }.bind(this), + ) + .catch( + function (error) { + // Even if RPC call fails/times out, emit event to start polling + // This handles cases where the backend task starts but RPC times out + this.emit("setInitAction", { timeout: true, action: action }); + }.bind(this), + ); }, }; -// Poll service status until completion (for long-running operations like download) -var pollServiceStatus = function (callback) { +// Poll service status until the expected running state is reached. +// expectRunning: true for start/restart/reload, false for stop. +var pollServiceStatus = function (expectRunning, callback) { var maxAttempts = 300; // Max 5 minutes of polling var attempt = 0; var checkStatus = function () { attempt++; - // Use the RPC function directly from the module scope L.resolveDefault(getInitStatus(pkg.Name), {}) .then(function (statusData) { - var currentStatus = + var isRunning = statusData && statusData[pkg.Name] && statusData[pkg.Name].running; - // Check if completed or failed - if (currentStatus === true) { - callback(true, currentStatus); + // Check if the expected state has been reached + if (expectRunning ? isRunning === true : isRunning !== true) { + callback(true); } // Check if timed out else if (attempt >= maxAttempts) { @@ -135,7 +143,7 @@ var pollServiceStatus = function (callback) { } // Continue polling else { - setTimeout(checkStatus, 1000); // Check again in 1 second + setTimeout(checkStatus, 1000); } }) .catch(function (err) { @@ -148,7 +156,7 @@ var pollServiceStatus = function (callback) { }); }; - // Start polling after 2 seconds delay (give backend time to start the task) + // Start polling after a delay to give the backend time to start the task setTimeout(checkStatus, 3000); }; @@ -703,12 +711,24 @@ var status = baseclass.extend({ }); RPC.on("setInitAction", function (reply) { - // Don't immediately hide modal and reload - // Instead, poll status until the operation actually completes - pollServiceStatus(function () { + var action = reply && reply.action; + if (action === "start" || action === "restart" || action === "reload") { + // Long-running: poll until service is running + pollServiceStatus(true, function () { + ui.hideModal(); + location.reload(); + }); + } else if (action === "stop") { + // Poll until service has stopped + pollServiceStatus(false, function () { + ui.hideModal(); + location.reload(); + }); + } else { + // enable/disable are fast, just reload immediately ui.hideModal(); location.reload(); - }); + } }); return L.Class.extend({ diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 5157117..388c02a 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:287 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 msgid "%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:378 msgid "%s binary cannot be found" msgstr "" @@ -63,7 +63,7 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:466 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 msgid "Command failed: '%s'" msgstr "" @@ -71,7 +71,7 @@ msgstr "" msgid "Condensed output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:367 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:375 msgid "Config (%s) validation failure" msgstr "" @@ -83,7 +83,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:418 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -103,15 +103,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:473 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:481 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:626 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:634 msgid "Disable" msgstr "" @@ -121,7 +121,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:620 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:628 msgid "Disabling %s service" msgstr "" @@ -129,7 +129,7 @@ msgstr "" msgid "Display these protocols in protocol column in Web UI." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:305 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:313 msgid "" "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own " "confdir" @@ -143,11 +143,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:673 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:681 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:607 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:615 msgid "Enable" msgstr "" @@ -159,19 +159,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:601 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:609 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:428 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:515 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -181,35 +181,35 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:462 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:460 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 msgid "Failed to install fw4 nft file '%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:425 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Failed to set up any gateway" msgstr "" @@ -237,15 +237,15 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:320 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:328 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:302 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:310 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -255,15 +255,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:277 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:285 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -271,26 +271,26 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:418 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 msgid "Interface mark for '%s' exceeds the fwmask value" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:271 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 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:293 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:301 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:453 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -303,7 +303,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -331,27 +331,27 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:484 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:323 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -359,7 +359,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:222 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:45 msgid "Not installed or not found" msgstr "" @@ -372,8 +372,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:251 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:681 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:259 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:689 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -381,24 +381,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:317 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:287 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:295 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:290 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:298 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:284 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:292 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:281 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:289 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -406,23 +406,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:421 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:405 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:465 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -435,7 +435,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:195 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:203 msgid "Policy Based Routing - Status" msgstr "" @@ -447,11 +447,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:446 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 msgid "Refer to %sREADME%s for details" msgstr "" @@ -471,37 +471,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:475 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:274 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:282 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:372 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 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:375 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:383 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:569 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:577 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:563 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:571 msgid "Restarting %s service" msgstr "" @@ -515,11 +515,11 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:204 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:212 msgid "Running" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:329 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:337 msgid "" "Running in dynamic routing tables mode. Consider installing netifd " "extensions or mwan4 for more efficient operation. See %sREADME%s." @@ -533,11 +533,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:652 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:660 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:513 msgid "Service Errors" msgstr "" @@ -546,15 +546,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:236 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:199 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:346 msgid "Service Warnings" msgstr "" @@ -564,15 +564,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:550 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:544 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:552 msgid "Starting %s service" msgstr "" @@ -594,19 +594,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:588 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:218 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:226 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:224 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:582 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 msgid "Stopping %s service" msgstr "" @@ -630,15 +630,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:240 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -648,11 +648,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 msgid "The %s service failed to discover uplink gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:381 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 msgid "The %s service is currently disabled" msgstr "" @@ -660,23 +660,23 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:472 msgid "The '%s' schema requires curl, but it's not detected on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:296 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:299 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 msgid "The principal package (pbr) is outdated, please update it" msgstr "" @@ -684,19 +684,19 @@ msgstr "" msgid "Unable to retrieve %s status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:477 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "Unknown error" msgstr "" @@ -704,19 +704,19 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:345 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 msgid "Unknown warning" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 msgid "Unsafe nft command in custom user file '%s'" msgstr "" @@ -728,17 +728,17 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:326 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -756,7 +756,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:202 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210 msgid "Version %s" msgstr "" @@ -764,11 +764,11 @@ msgstr "" msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:318 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:326 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:348 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" @@ -780,17 +780,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:208 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:31 msgid "fw4 nft file mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:206 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:214 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:29 msgid "iptables mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:218 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:33 msgid "nft mode" msgstr "" From 21194435b4d4b1738ab118c6f07c45073b5eec40 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 3 Mar 2026 19:47:46 +0000 Subject: [PATCH 135/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b4b94f0..3c1d934 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=27 +PKG_RELEASE:=29 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 35ad6326d4aa71996be313d111f84f7c6587e13c Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 4 Mar 2026 00:57:32 +0000 Subject: [PATCH 136/185] bugfix: solve js console warnings/errors --- htdocs/luci-static/resources/pbr/status.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 195a47a..250b5b7 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -202,7 +202,7 @@ var status = baseclass.extend({ var text; var header = E("h2", {}, _("Policy Based Routing - Status")); var statusTitle = E( - "label", + "div", { class: "cbi-value-title" }, _("Service Status"), ); @@ -239,7 +239,7 @@ var status = baseclass.extend({ var gatewaysDiv = []; if (reply.gateways) { var gatewaysTitle = E( - "label", + "div", { class: "cbi-value-title" }, _("Service Gateways"), ); @@ -341,7 +341,7 @@ var status = baseclass.extend({ ), }; var warningsTitle = E( - "label", + "div", { class: "cbi-value-title" }, _("Service Warnings"), ); @@ -508,7 +508,7 @@ var status = baseclass.extend({ ), }; var errorsTitle = E( - "label", + "div", { class: "cbi-value-title" }, _("Service Errors"), ); @@ -655,7 +655,7 @@ var status = baseclass.extend({ } var buttonsTitle = E( - "label", + "div", { class: "cbi-value-title" }, _("Service Control"), ); @@ -676,7 +676,7 @@ var status = baseclass.extend({ : ""; var donateTitle = E( - "label", + "div", { class: "cbi-value-title" }, _("Donate to the Project"), ); From c4ac4545f129e21693a5a3363ed541b5f9a7becb Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 4 Mar 2026 01:31:03 +0000 Subject: [PATCH 137/185] fix status layout/formatting --- htdocs/luci-static/resources/pbr/status.js | 38 +++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 250b5b7..3960599 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -202,8 +202,8 @@ var status = baseclass.extend({ var text; var header = E("h2", {}, _("Policy Based Routing - Status")); var statusTitle = E( - "div", - { class: "cbi-value-title" }, + "label", + { class: "cbi-value-title", for: pkg.Name + "-status" }, _("Service Status"), ); if (reply.version) { @@ -229,7 +229,7 @@ var status = baseclass.extend({ } else { text = _("Not installed or not found"); } - var statusText = E("div", {}, text); + var statusText = E("output", { id: pkg.Name + "-status" }, text); var statusField = E("div", { class: "cbi-value-field" }, statusText); var statusDiv = E("div", { class: "cbi-value" }, [ statusTitle, @@ -239,8 +239,8 @@ var status = baseclass.extend({ var gatewaysDiv = []; if (reply.gateways) { var gatewaysTitle = E( - "div", - { class: "cbi-value-title" }, + "label", + { class: "cbi-value-title", for: pkg.Name + "-gateways" }, _("Service Gateways"), ); var gatewaysDescr = E("div", { class: "cbi-value-description" }, @@ -261,7 +261,7 @@ var status = baseclass.extend({ "", "", )); - var gatewaysText = E("div", {}, pkg.buildGatewayElements(reply.gateways)); + var gatewaysText = E("output", { id: pkg.Name + "-gateways" }, pkg.buildGatewayElements(reply.gateways)); var gatewaysField = E("div", { class: "cbi-value-field" }, [ gatewaysText, gatewaysDescr, @@ -341,8 +341,8 @@ var status = baseclass.extend({ ), }; var warningsTitle = E( - "div", - { class: "cbi-value-title" }, + "label", + { class: "cbi-value-title", for: pkg.Name + "-warnings" }, _("Service Warnings"), ); text = ""; @@ -357,7 +357,7 @@ var status = baseclass.extend({ '', "!
", ); - var warningsText = E("div", { class: "cbi-value-description" }, text); + var warningsText = E("output", { id: pkg.Name + "-warnings", class: "cbi-value-description" }, text); var warningsField = E( "div", { class: "cbi-value-field" }, @@ -508,8 +508,8 @@ var status = baseclass.extend({ ), }; var errorsTitle = E( - "div", - { class: "cbi-value-title" }, + "label", + { class: "cbi-value-title", for: pkg.Name + "-errors" }, _("Service Errors"), ); text = ""; @@ -524,7 +524,7 @@ var status = baseclass.extend({ '', "!
", ); - var errorsText = E("div", { class: "cbi-value-description" }, text); + var errorsText = E("output", { id: pkg.Name + "-errors", class: "cbi-value-description" }, text); var errorsField = E("div", { class: "cbi-value-field" }, errorsText); errorsDiv = E("div", { class: "cbi-value" }, [ errorsTitle, @@ -655,11 +655,11 @@ var status = baseclass.extend({ } var buttonsTitle = E( - "div", - { class: "cbi-value-title" }, + "label", + { class: "cbi-value-title", for: pkg.Name + "-buttons" }, _("Service Control"), ); - var buttonsText = E("div", {}, [ + var buttonsText = E("output", { id: pkg.Name + "-buttons" }, [ btn_start, btn_gap, btn_action, @@ -676,16 +676,16 @@ var status = baseclass.extend({ : ""; var donateTitle = E( - "div", - { class: "cbi-value-title" }, + "label", + { class: "cbi-value-title", for: pkg.Name + "-donate" }, _("Donate to the Project"), ); var donateText = E( "div", { class: "cbi-value-field" }, E( - "div", - { class: "cbi-value-description" }, + "output", + { id: pkg.Name + "-donate", class: "cbi-value-description" }, _("Please %sdonate%s to support development of this project.").format( "", "", From 1e2cb936de26f58d1f64c3e4589689d910117d39 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 6 Mar 2026 01:15:23 +0000 Subject: [PATCH 138/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3c1d934..1316cc1 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=29 +PKG_RELEASE:=31 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From fddb7daf0af27e9d5c66e0f1a29fedd9773a323b Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 8 Mar 2026 23:13:52 +0000 Subject: [PATCH 139/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1316cc1..8cbe6db 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=31 +PKG_RELEASE:=33 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From c09bbca49673a1d0ae44fe56a0bd6a09ae057bae Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 11 Mar 2026 01:22:36 +0000 Subject: [PATCH 140/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8cbe6db..4af2c4b 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=33 +PKG_RELEASE:=35 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From f9e33cbfcc91d1a6c1317e350c4493febf8cefeb Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 11 Mar 2026 18:14:21 +0000 Subject: [PATCH 141/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4af2c4b..95f7da5 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=35 +PKG_RELEASE:=37 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From f798f3b6d71f48499dae9830ef5a5f34505eeed7 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 13 Mar 2026 18:35:12 +0000 Subject: [PATCH 142/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 95f7da5..30e2a9e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=37 +PKG_RELEASE:=39 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 6054fd3e034c5fd65a0cc93ef5a15f93af96401d Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 15 Mar 2026 23:35:19 +0000 Subject: [PATCH 143/185] rework protocols support --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 2 +- .../resources/view/pbr/overview.js | 82 ++++++--- po/templates/pbr.pot | 157 +++++++++--------- root/usr/share/rpcd/ucode/luci.pbr | 2 +- 5 files changed, 141 insertions(+), 104 deletions(-) diff --git a/Makefile b/Makefile index 30e2a9e..d4bb3c6 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=39 +PKG_RELEASE:=43 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 3960599..26a3e04 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 30; + return 31; }, get ReadmeCompat() { return "1.2.3"; diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 25eb531..1113f2c 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -23,6 +23,7 @@ return view.extend({ var statusData = (data[0] && data[0][pkg.Name]) || {}; var reply = { interfaces: statusData.interfaces || ["wan"], + protocols: statusData.protocols || [], platform: statusData.platform || { nft_installed: false, adguardhome_installed: false, @@ -247,15 +248,6 @@ return view.extend({ o.default = "0"; o.optional = false; - o = s.taboption( - "tab_webui", - form.DynamicList, - "webui_supported_protocol", - _("Supported Protocols"), - _("Display these protocols in protocol column in Web UI.") - ); - o.optional = false; - s = m.section( form.GridSection, "policy", @@ -305,21 +297,69 @@ return view.extend({ o.default = ""; o = s.option(form.ListValue, "proto", _("Protocol")); - var proto = L.toArray( - L.uci.get(pkg.Name, "config", "webui_supported_protocol") - ); - if (!proto.length) { - proto = ["all", "tcp", "udp", "tcp udp", "icmp"]; - } - proto.forEach((element) => { - if (element === "all") { - o.value("", _("all")); - o.default = ""; - } else { - o.value(element.toLowerCase()); + o.value("", _("all")); + o.default = ""; + var popularProtos = ["tcp", "udp", "tcp udp", "icmp"]; + var hasPopular = false; + popularProtos.forEach(function (p) { + if (p === "tcp udp") { + if (reply.protocols.indexOf("tcp") !== -1 && reply.protocols.indexOf("udp") !== -1) { + o.value(p); + hasPopular = true; + } + } else if (reply.protocols.indexOf(p) !== -1) { + o.value(p); + hasPopular = true; + } + }); + var hasOther = false; + reply.protocols.forEach(function (p) { + if (popularProtos.indexOf(p) === -1) { + o.value(p); + hasOther = true; } }); o.rmempty = true; + if (hasPopular && hasOther) { + var _protoRenderWidget = o.renderWidget; + o.renderWidget = function () { + var node = _protoRenderWidget.apply(this, arguments); + var sel = node.querySelector ? node.querySelector("select") : null; + if (!sel && node.nodeName === "SELECT") sel = node; + if (sel) { + var lastOpt = null; + sel.querySelectorAll("option").forEach(function (opt) { + if (popularProtos.indexOf(opt.value) !== -1) + lastOpt = opt; + }); + if (lastOpt && lastOpt.nextElementSibling) { + sel.insertBefore( + E("option", { "disabled": "", "style": "text-align:center" }, + "โ”€โ”€ " + _("All Protocols") + " โ”€โ”€"), + lastOpt.nextSibling + ); + } + } + var ul = node.querySelector ? node.querySelector("ul") : null; + if (ul) { + var lastLi = null; + ul.querySelectorAll("li[data-value]").forEach(function (li) { + if (popularProtos.indexOf(li.getAttribute("data-value")) !== -1) + lastLi = li; + }); + if (lastLi && lastLi.nextElementSibling) { + lastLi.parentNode.insertBefore( + E("li", { + "unselectable": "", + "style": "text-align:center;opacity:0.6;font-size:90%" + }, "โ”€โ”€ " + _("All Protocols") + " โ”€โ”€"), + lastLi.nextSibling + ); + } + } + return node; + }; + } o = s.option(form.ListValue, "chain", _("Chain")); o.value("", "prerouting"); diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 388c02a..b5dc44d 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -10,7 +10,7 @@ msgstr "" msgid "%s binary cannot be 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:45 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 " @@ -21,25 +21,30 @@ msgstr "" msgid "Active" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:165 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:166 msgid "Add" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:237 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:238 msgid "Add Ignore Target" 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:240 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:42 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:43 msgid "Advanced Configuration" msgstr "" -#: 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:338 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:355 +msgid "All Protocols" +msgstr "" + +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:132 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 " @@ -47,7 +52,7 @@ msgid "" "servers. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:147 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:148 msgid "" "Allows to specify the list of interface names (lower case) to be ignored by " "the service. Can be useful for an OpenVPN server running on OpenWrt device. " @@ -55,11 +60,11 @@ msgid "" "automatically, do not add those here.See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:39 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:40 msgid "Basic Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:324 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:364 msgid "Chain" msgstr "" @@ -67,7 +72,7 @@ msgstr "" msgid "Command failed: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:67 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:68 msgid "Condensed output" msgstr "" @@ -75,11 +80,11 @@ msgstr "" msgid "Config (%s) validation failure" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:64 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:65 msgid "Controls both system log and console output verbosity." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:409 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:449 msgid "Custom User File Includes" msgstr "" @@ -87,19 +92,19 @@ msgstr "" msgid "Custom user file '%s' not found or empty" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:341 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:381 msgid "DNS Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:400 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:440 msgid "DSCP Tag" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:387 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:427 msgid "DSCP Tagging" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:173 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:174 msgid "Default ICMP Interface" msgstr "" @@ -115,9 +120,9 @@ msgstr "" msgid "Disable" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:110 -#: 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:245 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:111 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:123 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:246 msgid "Disabled" msgstr "" @@ -125,21 +130,17 @@ msgstr "" msgid "Disabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:255 -msgid "Display these protocols in protocol column in Web UI." -msgstr "" - #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:313 msgid "" "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own " "confdir" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:112 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:113 msgid "Dnsmasq nft set" 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 msgid "Do not enforce policies when their gateway is down" msgstr "" @@ -151,11 +152,11 @@ msgstr "" msgid "Enable" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:123 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:246 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:277 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:355 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:422 +#: 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:247 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:269 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:395 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:462 msgid "Enabled" msgstr "" @@ -175,7 +176,7 @@ msgstr "" msgid "Errors encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:207 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:208 msgid "" "FW Mask used by the service. High mask is used to avoid conflict with SQM/" "QoS. Change with caution together with" @@ -213,7 +214,7 @@ msgstr "" msgid "Failed to set up any gateway" 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:175 msgid "Force the ICMP protocol interface." msgstr "" @@ -221,11 +222,11 @@ msgstr "" msgid "Grant UCI and file access for luci-app-pbr" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:120 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:121 msgid "IPv6 Support" 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:146 msgid "Ignored Interfaces" msgstr "" @@ -251,7 +252,7 @@ msgid "" "support" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:166 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:167 msgid "Insert" msgstr "" @@ -267,7 +268,7 @@ msgstr "" msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:331 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:371 msgid "Interface" msgstr "" @@ -294,12 +295,12 @@ msgstr "" msgid "Invalid OpenVPN config for '%s' interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:283 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:362 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:275 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:402 msgid "Local addresses / devices" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:289 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:281 msgid "Local ports" msgstr "" @@ -311,12 +312,12 @@ msgstr "" msgid "Mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:281 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:359 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:273 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:399 msgid "Name" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:264 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:256 msgid "" "Name, interface and at least one other field are required. Multiple local " "and remote addresses/devices/domains and ports can be space separated. " @@ -324,7 +325,7 @@ msgid "" "fields are left blank. For more information on options, check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:343 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:383 msgid "" "Name, local address and remote DNS fields are required. Multiple local " "addresses/devices can be space separated. For more information on options, " @@ -355,7 +356,7 @@ msgstr "" msgid "Netifd setup: required option '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:176 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:177 msgid "No Change" msgstr "" @@ -364,11 +365,11 @@ msgstr "" msgid "Not installed or not found" msgstr "" -#: 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:64 msgid "Output verbosity" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:467 msgid "Path" msgstr "" @@ -377,7 +378,7 @@ msgstr "" msgid "Please %sdonate%s to support development of this project." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:97 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:98 msgid "Please check the %sREADME%s before changing this option." msgstr "" @@ -402,7 +403,7 @@ msgstr "" 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:262 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:254 msgid "Policies" msgstr "" @@ -431,7 +432,7 @@ msgstr "" msgid "Policy Based Routing" 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:37 msgid "Policy Based Routing - Configuration" msgstr "" @@ -443,7 +444,7 @@ msgstr "" msgid "Policy Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:307 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:299 msgid "Protocol" msgstr "" @@ -455,19 +456,19 @@ msgstr "" msgid "Refer to %sREADME%s for details" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:369 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:409 msgid "Remote DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:377 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:417 msgid "Remote DNS Port" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:295 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:287 msgid "Remote addresses / domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:301 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:293 msgid "Remote ports" msgstr "" @@ -505,11 +506,11 @@ msgstr "" msgid "Restarting %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:162 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:163 msgid "Rule Create option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:451 msgid "" "Run the following user files after setting up but before restarting DNSMASQ. " "See the %sREADME%s for details." @@ -525,11 +526,11 @@ msgid "" "extensions or mwan4 for more efficient operation. See %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:76 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:77 msgid "See the %sREADME%s for details." 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:164 msgid "Select Add for -A/add and Insert for -I/Insert." msgstr "" @@ -541,8 +542,8 @@ msgstr "" msgid "Service Errors" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:194 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:205 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:195 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206 msgid "Service FW Mask" msgstr "" @@ -558,7 +559,7 @@ msgstr "" msgid "Service Warnings" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:389 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:429 msgid "" "Set DSCP tags (in range between 1 and 63) for specific interfaces. See the " "%sREADME%s for details." @@ -576,14 +577,14 @@ msgstr "" msgid "Starting %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:190 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:191 msgid "" "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/pbr/overview.js:224 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:225 msgid "" "Starting (Uplink/WAN) ip rules priority used by the pbr service. High " "starting priority is used to avoid conflict with other services, this can be " @@ -610,23 +611,19 @@ msgstr "" msgid "Stopping %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:75 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:76 msgid "Strict enforcement" msgstr "" -#: 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:83 msgid "Strictly enforce policies when their gateway is down" msgstr "" -#: 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:130 msgid "Supported Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:254 -msgid "Supported Protocols" -msgstr "" - -#: 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:67 msgid "Suppress/No output" msgstr "" @@ -644,7 +641,7 @@ msgid "" "uplink_interface' option" msgstr "" -#: 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:93 msgid "The %s is not supported on this system." msgstr "" @@ -656,7 +653,7 @@ msgstr "" msgid "The %s service is currently disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:88 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:89 msgid "The %s support is unknown." msgstr "" @@ -720,11 +717,11 @@ msgstr "" msgid "Unsafe nft command in custom user file '%s'" 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:223 msgid "Uplink IP Rules Priority" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:188 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:189 msgid "Uplink Interface Table FW Mark" msgstr "" @@ -744,11 +741,11 @@ msgid "" "installed" 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:108 msgid "Use resolver set support for domains" 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:69 msgid "Verbose output" msgstr "" @@ -760,7 +757,7 @@ msgstr "" msgid "Version %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:211 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:212 msgid "WAN Table FW Mark" msgstr "" @@ -772,11 +769,11 @@ msgstr "" msgid "Warnings encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:57 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:58 msgid "Web UI Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:316 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:300 msgid "all" msgstr "" diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr index 2bcc9e1..610b4b0 100644 --- a/root/usr/share/rpcd/ucode/luci.pbr +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -17,7 +17,7 @@ import { access } from 'fs'; import { cursor } from 'uci'; const packageName = 'pbr'; // ucode-lsp disable -const rpcdCompat = 30; // ucode-lsp disable +const rpcdCompat = 31; // ucode-lsp disable // โ”€โ”€ rpcd Method Handlers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ From 07d6140d597060abf46eb29597c9c6a21d9f832e Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 16 Mar 2026 01:20:23 +0000 Subject: [PATCH 144/185] drop webui_show_ignore_target --- Makefile | 2 +- .../resources/view/pbr/overview.js | 19 --- po/templates/pbr.pot | 146 ++++++++---------- 3 files changed, 66 insertions(+), 101 deletions(-) diff --git a/Makefile b/Makefile index d4bb3c6..019d32e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=43 +PKG_RELEASE:=45 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 1113f2c..3189547 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -55,8 +55,6 @@ return view.extend({ ) ); - s.tab("tab_webui", _("Web UI Configuration")); - o = s.taboption( "tab_basic", form.ListValue, @@ -231,23 +229,6 @@ return view.extend({ o.datatype = "uinteger"; o.default = "30000"; - o = s.taboption( - "tab_webui", - form.ListValue, - "webui_show_ignore_target", - _("Add Ignore Target"), - _( - "Adds 'ignore' to the list of interfaces for policies. See the %sREADME%s for details." - ).format( - '', - "" - ) - ); - o.value("0", _("Disabled")); - o.value("1", _("Enabled")); - o.default = "0"; - o.optional = false; - s = m.section( form.GridSection, "policy", diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index b5dc44d..f316f31 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -21,30 +21,20 @@ msgstr "" msgid "Active" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:166 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:164 msgid "Add" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:238 -msgid "Add Ignore Target" -msgstr "" - -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:240 -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:43 msgid "Advanced Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:338 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:355 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:319 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:336 msgid "All Protocols" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:132 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:130 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 " @@ -52,7 +42,7 @@ msgid "" "servers. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:148 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:146 msgid "" "Allows to specify the list of interface names (lower case) to be ignored by " "the service. Can be useful for an OpenVPN server running on OpenWrt device. " @@ -64,7 +54,7 @@ msgstr "" msgid "Basic Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:364 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:345 msgid "Chain" msgstr "" @@ -72,7 +62,7 @@ msgstr "" msgid "Command failed: '%s'" 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:66 msgid "Condensed output" msgstr "" @@ -80,11 +70,11 @@ msgstr "" msgid "Config (%s) validation failure" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:65 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:63 msgid "Controls both system log and console output verbosity." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:449 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:430 msgid "Custom User File Includes" msgstr "" @@ -92,19 +82,19 @@ msgstr "" msgid "Custom user file '%s' not found or empty" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:381 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:362 msgid "DNS Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:440 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:421 msgid "DSCP Tag" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:408 msgid "DSCP Tagging" 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:172 msgid "Default ICMP Interface" msgstr "" @@ -120,9 +110,8 @@ msgstr "" msgid "Disable" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:111 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:123 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:246 +#: 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:121 msgid "Disabled" msgstr "" @@ -136,11 +125,11 @@ msgid "" "confdir" msgstr "" -#: 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:111 msgid "Dnsmasq nft set" msgstr "" -#: 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:80 msgid "Do not enforce policies when their gateway is down" msgstr "" @@ -152,11 +141,10 @@ msgstr "" msgid "Enable" 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:247 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:269 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:395 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:462 +#: 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:250 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:376 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:443 msgid "Enabled" msgstr "" @@ -176,7 +164,7 @@ msgstr "" msgid "Errors encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:208 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206 msgid "" "FW Mask used by the service. High mask is used to avoid conflict with SQM/" "QoS. Change with caution together with" @@ -214,7 +202,7 @@ msgstr "" msgid "Failed to set up any gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:175 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:173 msgid "Force the ICMP protocol interface." msgstr "" @@ -222,11 +210,11 @@ msgstr "" msgid "Grant UCI and file access for luci-app-pbr" 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:119 msgid "IPv6 Support" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:146 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:144 msgid "Ignored Interfaces" msgstr "" @@ -252,7 +240,7 @@ msgid "" "support" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:167 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:165 msgid "Insert" msgstr "" @@ -268,7 +256,7 @@ msgstr "" msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:371 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:352 msgid "Interface" msgstr "" @@ -295,12 +283,12 @@ msgstr "" msgid "Invalid OpenVPN config for '%s' interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:275 -#: 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:256 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:383 msgid "Local addresses / devices" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:281 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:262 msgid "Local ports" msgstr "" @@ -312,12 +300,12 @@ msgstr "" msgid "Mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:273 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:254 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:380 msgid "Name" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:256 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:237 msgid "" "Name, interface and at least one other field are required. Multiple local " "and remote addresses/devices/domains and ports can be space separated. " @@ -325,7 +313,7 @@ msgid "" "fields are left blank. For more information on options, check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:383 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:364 msgid "" "Name, local address and remote DNS fields are required. Multiple local " "addresses/devices can be space separated. For more information on options, " @@ -356,7 +344,7 @@ msgstr "" msgid "Netifd setup: required option '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:177 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:175 msgid "No Change" msgstr "" @@ -365,11 +353,11 @@ msgstr "" msgid "Not installed or not found" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:64 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:62 msgid "Output verbosity" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:467 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:448 msgid "Path" msgstr "" @@ -378,7 +366,7 @@ msgstr "" msgid "Please %sdonate%s to support development of this project." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:98 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:96 msgid "Please check the %sREADME%s before changing this option." msgstr "" @@ -403,7 +391,7 @@ msgstr "" 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:254 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:235 msgid "Policies" msgstr "" @@ -444,7 +432,7 @@ msgstr "" msgid "Policy Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:299 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:280 msgid "Protocol" msgstr "" @@ -456,19 +444,19 @@ msgstr "" msgid "Refer to %sREADME%s for details" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:409 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:390 msgid "Remote DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:417 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:398 msgid "Remote DNS Port" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:287 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:268 msgid "Remote addresses / domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:293 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:274 msgid "Remote ports" msgstr "" @@ -506,11 +494,11 @@ msgstr "" msgid "Restarting %s service" 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:161 msgid "Rule Create option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:432 msgid "" "Run the following user files after setting up but before restarting DNSMASQ. " "See the %sREADME%s for details." @@ -526,11 +514,11 @@ msgid "" "extensions or mwan4 for more efficient operation. See %sREADME%s." 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:75 msgid "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:164 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:162 msgid "Select Add for -A/add and Insert for -I/Insert." msgstr "" @@ -542,8 +530,8 @@ msgstr "" msgid "Service Errors" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:195 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206 +#: 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:204 msgid "Service FW Mask" msgstr "" @@ -559,7 +547,7 @@ msgstr "" msgid "Service Warnings" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:429 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:410 msgid "" "Set DSCP tags (in range between 1 and 63) for specific interfaces. See the " "%sREADME%s for details." @@ -577,14 +565,14 @@ msgstr "" msgid "Starting %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:191 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:189 msgid "" "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/pbr/overview.js:225 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:223 msgid "" "Starting (Uplink/WAN) ip rules priority used by the pbr service. High " "starting priority is used to avoid conflict with other services, this can be " @@ -611,19 +599,19 @@ msgstr "" msgid "Stopping %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:76 +#: 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:83 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:81 msgid "Strictly enforce policies when their gateway is down" 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:128 msgid "Supported Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:67 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:65 msgid "Suppress/No output" msgstr "" @@ -641,7 +629,7 @@ msgid "" "uplink_interface' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:93 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:91 msgid "The %s is not supported on this system." msgstr "" @@ -653,7 +641,7 @@ msgstr "" msgid "The %s service is currently disabled" 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:87 msgid "The %s support is unknown." msgstr "" @@ -717,11 +705,11 @@ msgstr "" msgid "Unsafe nft command in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:223 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:221 msgid "Uplink IP Rules Priority" msgstr "" -#: 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:187 msgid "Uplink Interface Table FW Mark" msgstr "" @@ -741,11 +729,11 @@ msgid "" "installed" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:108 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:106 msgid "Use resolver set support for domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:69 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:67 msgid "Verbose output" msgstr "" @@ -757,7 +745,7 @@ msgstr "" msgid "Version %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:212 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:210 msgid "WAN Table FW Mark" msgstr "" @@ -769,11 +757,7 @@ msgstr "" msgid "Warnings encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:58 -msgid "Web UI Configuration" -msgstr "" - -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:300 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:281 msgid "all" msgstr "" From 4f02c46ef773abba9a873fb78705bfd78ebde129 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 16 Mar 2026 19:18:20 +0000 Subject: [PATCH 145/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 019d32e..1ba5ad5 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=45 +PKG_RELEASE:=47 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 9581d63f6156290c96445dbf8f59fda51ebc9d78 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 17 Mar 2026 22:42:22 +0000 Subject: [PATCH 146/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1ba5ad5..07da354 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=47 +PKG_RELEASE:=49 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 849e3cd4d9bbe58e6297f730bd0d16b09957729e Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 13 Apr 2026 17:41:11 +0000 Subject: [PATCH 147/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 07da354..653b46d 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=49 +PKG_RELEASE:=51 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 7cc75017c1abecc007044c1b143e9f9a7b4162fb Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 13 Apr 2026 20:56:13 +0000 Subject: [PATCH 148/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 653b46d..ab685a2 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=51 +PKG_RELEASE:=53 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 0dcb71418df92cf0b96875bd4456bb9797bb3f43 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 13 Apr 2026 23:29:14 +0000 Subject: [PATCH 149/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ab685a2..eb993ed 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=53 +PKG_RELEASE:=55 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From e16833b6f32906b78d6cfd5c069be65c925643eb Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 21 Apr 2026 18:32:08 +0000 Subject: [PATCH 150/185] fix: lowercase supported/ignore interfaces --- .../resources/view/pbr/overview.js | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 3189547..8a9d485 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -136,6 +136,19 @@ return view.extend({ ) ); o.optional = false; + o.write = function (section_id, formvalue) { + if (Array.isArray(formvalue)) + formvalue = formvalue.map(function (v) { + return String(v).toLowerCase(); + }); + else if (formvalue != null) + formvalue = String(formvalue).toLowerCase(); + return form.DynamicList.prototype.write.call( + this, + section_id, + formvalue + ); + }; o = s.taboption( "tab_advanced", @@ -153,6 +166,19 @@ return view.extend({ ) ); o.optional = false; + o.write = function (section_id, formvalue) { + if (Array.isArray(formvalue)) + formvalue = formvalue.map(function (v) { + return String(v).toLowerCase(); + }); + else if (formvalue != null) + formvalue = String(formvalue).toLowerCase(); + return form.DynamicList.prototype.write.call( + this, + section_id, + formvalue + ); + }; o = s.taboption( "tab_advanced", From fc32361aa07e4ff281ab30216291ec0848c8337a Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 21 Apr 2026 18:56:48 +0000 Subject: [PATCH 151/185] Revert "fix: lowercase supported/ignore interfaces" This reverts commit e16833b6f32906b78d6cfd5c069be65c925643eb. --- .../resources/view/pbr/overview.js | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 8a9d485..3189547 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -136,19 +136,6 @@ return view.extend({ ) ); o.optional = false; - o.write = function (section_id, formvalue) { - if (Array.isArray(formvalue)) - formvalue = formvalue.map(function (v) { - return String(v).toLowerCase(); - }); - else if (formvalue != null) - formvalue = String(formvalue).toLowerCase(); - return form.DynamicList.prototype.write.call( - this, - section_id, - formvalue - ); - }; o = s.taboption( "tab_advanced", @@ -166,19 +153,6 @@ return view.extend({ ) ); o.optional = false; - o.write = function (section_id, formvalue) { - if (Array.isArray(formvalue)) - formvalue = formvalue.map(function (v) { - return String(v).toLowerCase(); - }); - else if (formvalue != null) - formvalue = String(formvalue).toLowerCase(); - return form.DynamicList.prototype.write.call( - this, - section_id, - formvalue - ); - }; o = s.taboption( "tab_advanced", From 73de0d8c5ca2e248b67cbd9f5ae103baa8daf55e Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 21 Apr 2026 18:58:06 +0000 Subject: [PATCH 152/185] fix: remove lowercase wording from interface options --- htdocs/luci-static/resources/view/pbr/overview.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 3189547..90d795f 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -127,7 +127,7 @@ return view.extend({ "supported_interface", _("Supported Interfaces"), _( - "Allows to specify the list of interface names (in lower case) to be explicitly supported by the service. " + + "Allows to specify the list of interface names to be explicitly supported by the service. " + "Can be useful if your OpenVPN tunnels have dev option other than tun* or tap* or specific use cases " + "of WireGuard servers. See the %sREADME%s for details." ).format( @@ -143,7 +143,7 @@ return view.extend({ "ignored_interface", _("Ignored Interfaces"), _( - "Allows to specify the list of interface names (lower case) to be ignored by the service. " + + "Allows to specify the list of interface names to be ignored by the service. " + "Can be useful for an OpenVPN server running on OpenWrt device. WireGuard servers, which " + "have a listen_port defined, are handled automatically, do not add those here." + "See the %sREADME%s for details." From 473a9577d8896c5b32241eff4f38b8fd0f434335 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 21 Apr 2026 19:00:49 +0000 Subject: [PATCH 153/185] updated pot --- po/templates/pbr.pot | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index f316f31..3e27444 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -36,18 +36,18 @@ msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:130 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* or specific use cases of WireGuard " -"servers. See the %sREADME%s for details." +"Allows to specify the list of interface names to be explicitly supported by " +"the service. Can be useful if your OpenVPN tunnels have dev option other " +"than tun* or tap* or specific use cases of WireGuard servers. See the " +"%sREADME%s for details." msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:146 msgid "" -"Allows to specify the list of interface names (lower case) to be ignored by " -"the service. Can be useful for an OpenVPN server running on OpenWrt device. " -"WireGuard servers, which have a listen_port defined, are handled " -"automatically, do not add those here.See the %sREADME%s for details." +"Allows to specify the list of interface names to be ignored by the service. " +"Can be useful for an OpenVPN server running on OpenWrt device. WireGuard " +"servers, which have a listen_port defined, are handled automatically, do not " +"add those here.See the %sREADME%s for details." msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:40 From a5564331337cecd3b3d176b979aae96b79009c99 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 6 May 2026 19:56:15 +0000 Subject: [PATCH 154/185] add errorInterfaceRoutingUnknownGateway, bump compat to 32 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit errorInterfaceRoutingUnknownGateway was emitted by pbr but missing from the errorTable in status.js โ€” users saw "Unknown error" instead of the actual diagnostic. Add the entry alongside its sibling errorInterfaceRoutingUnknownDevType and the matching .pot msgid. Bump LuciCompat and rpcdCompat to 32 in lockstep with pbr. Co-Authored-By: Claude Opus 4.7 (1M context) --- htdocs/luci-static/resources/pbr/status.js | 5 ++++- po/templates/pbr.pot | 4 ++++ root/usr/share/rpcd/ucode/luci.pbr | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 26a3e04..82c564d 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 31; + return 32; }, get ReadmeCompat() { return "1.2.3"; @@ -484,6 +484,9 @@ var status = baseclass.extend({ errorInterfaceRoutingUnknownDevType: _( "Unknown IPv6 Link type for device '%s'", ), + errorInterfaceRoutingUnknownGateway: _( + "Unknown Gateway for device '%s'", + ), errorMktempFileCreate: _( "Failed to create temporary file with mktemp mask: '%s'", ), diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 3e27444..3faed27 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -677,6 +677,10 @@ msgstr "" msgid "Unknown IPv6 Link type for device '%s'" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 +msgid "Unknown Gateway for device '%s'" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 msgid "Unknown entry in policy '%s'" msgstr "" diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr index 610b4b0..10b9eb6 100644 --- a/root/usr/share/rpcd/ucode/luci.pbr +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -17,7 +17,7 @@ import { access } from 'fs'; import { cursor } from 'uci'; const packageName = 'pbr'; // ucode-lsp disable -const rpcdCompat = 31; // ucode-lsp disable +const rpcdCompat = 32; // ucode-lsp disable // โ”€โ”€ rpcd Method Handlers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ From 3e49b5b1b53f1d68636b5306e65be4224d7e1c60 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 6 May 2026 19:58:34 +0000 Subject: [PATCH 155/185] version bump --- Makefile | 2 +- po/templates/pbr.pot | 56 ++++++++++++++++++++++---------------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Makefile b/Makefile index eb993ed..0937600 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=55 +PKG_RELEASE:=57 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 3faed27..3d90445 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -106,7 +106,7 @@ msgstr "" msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:634 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:637 msgid "Disable" msgstr "" @@ -115,7 +115,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:628 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:631 msgid "Disabling %s service" msgstr "" @@ -133,11 +133,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:681 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:684 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:615 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:618 msgid "Enable" msgstr "" @@ -148,7 +148,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:609 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:612 msgid "Enabling %s service" msgstr "" @@ -156,11 +156,11 @@ msgstr "" msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:490 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -170,7 +170,7 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:491 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" @@ -320,19 +320,19 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" @@ -340,7 +340,7 @@ msgstr "" msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -362,7 +362,7 @@ msgid "Path" msgstr "" #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:259 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:689 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:692 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -486,11 +486,11 @@ 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:577 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:580 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:571 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:574 msgid "Restarting %s service" msgstr "" @@ -522,11 +522,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:660 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:663 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:513 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:516 msgid "Service Errors" msgstr "" @@ -557,11 +557,11 @@ msgstr "" msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:558 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:561 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:552 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:555 msgid "Starting %s service" msgstr "" @@ -583,7 +583,7 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:596 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:599 msgid "Stop" msgstr "" @@ -595,7 +595,7 @@ msgstr "" msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:590 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:593 msgid "Stopping %s service" msgstr "" @@ -673,19 +673,19 @@ msgstr "" msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 -msgid "Unknown IPv6 Link type for device '%s'" -msgstr "" - #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 msgid "Unknown Gateway for device '%s'" msgstr "" +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 +msgid "Unknown IPv6 Link type for device '%s'" +msgstr "" + #: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 msgid "Unknown error" msgstr "" @@ -721,7 +721,7 @@ msgstr "" msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" From 31b6ff2664dbba1145637ee4b6868f7ef0f0b300 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 10 May 2026 16:31:37 +0000 Subject: [PATCH 156/185] mwan4 integration --- Makefile | 2 +- htdocs/luci-static/resources/pbr/status.js | 8 +- .../resources/view/pbr/overview.js | 7 +- po/templates/pbr.pot | 356 +++++++++--------- root/usr/share/rpcd/ucode/luci.pbr | 2 +- 5 files changed, 190 insertions(+), 185 deletions(-) diff --git a/Makefile b/Makefile index 0937600..84ab306 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=57 +PKG_RELEASE:=59 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 82c564d..9dd9c84 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 32; + return 33; }, get ReadmeCompat() { return "1.2.3"; @@ -51,7 +51,11 @@ var pkg = { const iface = g.name; if (!iface) return; if (elements.length) elements.push(E("br")); - const parts = [iface]; + // Prefer the labeled form (e.g. "mwan4:wan", "netifd:wan") sent by + // the principal app; fall back to the canonical iface name for + // older principal-app versions that don't emit `label`. + const display = g.label || iface; + const parts = [display]; if (g.device_ipv4 && g.device_ipv4 !== iface) parts.push(g.device_ipv4); if (g.gateway_ipv4) parts.push(g.gateway_ipv4); if (g.gateway_ipv6) { diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 90d795f..88aa5fc 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -23,6 +23,7 @@ return view.extend({ var statusData = (data[0] && data[0][pkg.Name]) || {}; var reply = { interfaces: statusData.interfaces || ["wan"], + interface_labels: statusData.interface_labels || {}, protocols: statusData.protocols || [], platform: statusData.platform || { nft_installed: false, @@ -175,7 +176,7 @@ return view.extend({ o.value("", _("No Change")); reply.interfaces.forEach((element) => { if (element.toLowerCase() !== "ignore") { - o.value(element); + o.value(element, reply.interface_labels[element] || element); } }); o.rmempty = true; @@ -351,7 +352,7 @@ return view.extend({ o = s.option(form.ListValue, "interface", _("Interface")); reply.interfaces.forEach((element) => { - o.value(element); + o.value(element, reply.interface_labels[element] || element); }); o.datatype = "network"; o.rmempty = false; @@ -392,7 +393,7 @@ return view.extend({ o.rmempty = false; o.datatype = "list(or(cidr,host,network,ipaddr))"; reply.interfaces.forEach((element) => { - element === "ignore" || o.value(element); + element === "ignore" || o.value(element, reply.interface_labels[element] || element); }); o = s.option(form.Value, "dest_dns_port", _("Remote DNS Port")); diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 3d90445..16b83c2 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,16 +1,16 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:287 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:423 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:291 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 msgid "%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:378 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:382 msgid "%s binary cannot be found" 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:46 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 " @@ -21,20 +21,20 @@ msgstr "" msgid "Active" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:164 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:165 msgid "Add" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:43 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:44 msgid "Advanced Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:319 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:336 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:320 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:337 msgid "All Protocols" 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:131 msgid "" "Allows to specify the list of interface names to be explicitly supported by " "the service. Can be useful if your OpenVPN tunnels have dev option other " @@ -42,7 +42,7 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:146 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:147 msgid "" "Allows to specify the list of interface names to be ignored by the service. " "Can be useful for an OpenVPN server running on OpenWrt device. WireGuard " @@ -50,159 +50,159 @@ msgid "" "add those here.See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:40 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:41 msgid "Basic Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:345 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:346 msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:478 msgid "Command failed: '%s'" msgstr "" -#: 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:67 msgid "Condensed output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:375 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:379 msgid "Config (%s) validation failure" msgstr "" -#: 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:64 msgid "Controls both system log and console output verbosity." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:430 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:431 msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:426 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 msgid "Custom user file '%s' not found or empty" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:362 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:363 msgid "DNS Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:421 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:422 msgid "DSCP Tag" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:409 msgid "DSCP Tagging" msgstr "" -#: 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:173 msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:481 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:637 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:641 msgid "Disable" msgstr "" -#: 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:121 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:110 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:122 msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:631 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:635 msgid "Disabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:313 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:317 msgid "" "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own " "confdir" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:111 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:112 msgid "Dnsmasq nft set" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:80 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:81 msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:684 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:688 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:618 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:622 msgid "Enable" 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:250 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:376 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:443 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:123 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:251 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:377 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:444 msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:612 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:616 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:428 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:497 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:526 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:530 msgid "Errors encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:206 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:207 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:491 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:470 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:468 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:472 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:467 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:459 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:428 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 msgid "Failed to set up any gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:173 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:174 msgid "Force the ICMP protocol interface." msgstr "" @@ -210,11 +210,11 @@ msgstr "" msgid "Grant UCI and file access for luci-app-pbr" msgstr "" -#: 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:120 msgid "IPv6 Support" 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:145 msgid "Ignored Interfaces" msgstr "" @@ -226,73 +226,73 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:328 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:332 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:310 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:314 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:165 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:166 msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:285 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:289 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:352 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:353 msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:418 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:457 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 msgid "Interface mark for '%s' exceeds the fwmask value" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:279 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:283 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:301 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:305 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:465 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:256 -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:383 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:257 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:384 msgid "Local addresses / devices" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:262 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:263 msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -300,12 +300,12 @@ msgstr "" msgid "Mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:254 -#: 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:255 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:381 msgid "Name" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:237 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:238 msgid "" "Name, interface and at least one other field are required. Multiple local " "and remote addresses/devices/domains and ports can be space separated. " @@ -313,105 +313,105 @@ msgid "" "fields are left blank. For more information on options, check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:364 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:365 msgid "" "Name, local address and remote DNS fields are required. Multiple local " "addresses/devices can be space separated. For more information on options, " "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:502 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:504 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:507 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:511 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:331 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:335 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:501 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 msgid "Netifd setup: required option '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:175 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:176 msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:234 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:45 msgid "Not installed or not found" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:62 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:63 msgid "Output verbosity" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:448 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:449 msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:259 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:692 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:263 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:696 msgid "Please %sdonate%s to support development of this project." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:96 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:97 msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:317 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:321 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:295 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:299 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for 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:302 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:292 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:296 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:289 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:293 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:235 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:236 msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:421 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:416 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:413 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:465 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -420,11 +420,11 @@ msgstr "" msgid "Policy Based Routing" 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:38 msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:203 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207 msgid "Policy Based Routing - Status" msgstr "" @@ -432,147 +432,147 @@ msgstr "" msgid "Policy Routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:280 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:281 msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:398 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 msgid "Refer to %sREADME%s for details" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:390 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:391 msgid "Remote DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:398 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:399 msgid "Remote DNS Port" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:268 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:269 msgid "Remote addresses / domains" msgstr "" -#: 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:275 msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 msgid "Resolver '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:386 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:390 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:282 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:380 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 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:383 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:387 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:580 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:584 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:574 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 msgid "Restarting %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:161 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:162 msgid "Rule Create option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:433 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:212 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216 msgid "Running" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:337 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:341 msgid "" "Running in dynamic routing tables mode. Consider installing netifd " "extensions or mwan4 for more efficient operation. See %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:75 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:76 msgid "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:162 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:163 msgid "Select Add for -A/add and Insert for -I/Insert." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:663 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:667 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:516 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 msgid "Service Errors" msgstr "" -#: 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:204 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:194 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:205 msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:244 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:346 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:350 msgid "Service Warnings" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:411 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:435 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:561 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:565 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:555 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:559 msgid "Starting %s service" msgstr "" -#: 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:190 msgid "" "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/pbr/overview.js:223 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:224 msgid "" "Starting (Uplink/WAN) ip rules priority used by the pbr service. High " "starting priority is used to avoid conflict with other services, this can be " @@ -583,85 +583,85 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:599 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:603 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:226 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:224 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:593 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 msgid "Stopping %s service" msgstr "" -#: 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:75 msgid "Strict enforcement" 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 msgid "Strictly enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:128 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:129 msgid "Supported Interfaces" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:65 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:66 msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:252 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:395 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 msgid "" "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:91 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:92 msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 msgid "The %s service failed to discover uplink gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:389 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 msgid "The %s service is currently disabled" 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:88 msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:472 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 msgid "The '%s' schema requires curl, but it's not detected on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:308 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:404 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:407 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:307 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:311 msgid "The principal package (pbr) is outdated, please update it" msgstr "" @@ -669,23 +669,23 @@ msgstr "" msgid "Unable to retrieve %s status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:410 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:488 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 msgid "Unknown Gateway for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:456 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:523 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 msgid "Unknown error" msgstr "" @@ -693,51 +693,51 @@ msgstr "" msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:353 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:357 msgid "Unknown warning" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:479 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 msgid "Unsafe nft command in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:221 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:222 msgid "Uplink IP Rules Priority" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:187 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:188 msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 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:106 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:107 msgid "Use resolver set support for domains" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:67 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:68 msgid "Verbose output" msgstr "" @@ -745,37 +745,37 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:210 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:214 msgid "Version %s" 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:211 msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:326 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:356 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:360 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:281 +#: applications/luci-app-pbr/htdocs/luci-static/resources/view/pbr/overview.js:282 msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:220 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:31 msgid "fw4 nft file mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:214 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:218 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:29 msgid "iptables mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:218 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:222 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:33 msgid "nft mode" msgstr "" diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr index 10b9eb6..34233ba 100644 --- a/root/usr/share/rpcd/ucode/luci.pbr +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -17,7 +17,7 @@ import { access } from 'fs'; import { cursor } from 'uci'; const packageName = 'pbr'; // ucode-lsp disable -const rpcdCompat = 32; // ucode-lsp disable +const rpcdCompat = 33; // ucode-lsp disable // โ”€โ”€ rpcd Method Handlers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ From a8cd20364958b27857d1c77bc00a498738d4ae5f Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 13 May 2026 18:43:03 +0000 Subject: [PATCH 157/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 84ab306..5e58542 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=59 +PKG_RELEASE:=61 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 8b6333e8766e71bdf660470296ec7864182d16fa Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 16 May 2026 02:26:02 +0000 Subject: [PATCH 158/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5e58542..2ec8f09 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=61 +PKG_RELEASE:=63 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 936b2c5f42de64350e8309a78a7e73e588b10b99 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 26 May 2026 17:23:28 +0000 Subject: [PATCH 159/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2ec8f09..8ace767 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=63 +PKG_RELEASE:=65 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From c23f8ff2123c3d47057351ad99f232f8a8a82e93 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 26 May 2026 21:09:29 +0000 Subject: [PATCH 160/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8ace767..c46f656 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=65 +PKG_RELEASE:=67 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 4ee1cd7fe39f997b6645f6021518ef1b9d06de19 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 11 Jun 2026 02:42:51 +0000 Subject: [PATCH 161/185] change URLs to mossdef.org --- README.md | 4 ++-- htdocs/luci-static/resources/pbr/status.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8733e8a..b06e9fc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # LuCI App for pbr [![OpenWrt](https://img.shields.io/badge/OpenWrt-Compatible-blueviolet)](https://openwrt.org) -[![Web UI](https://img.shields.io/badge/Web_UI-Available-blue)](https://docs.openwrt.melmac.ca/pbr/) +[![Web UI](https://img.shields.io/badge/Web_UI-Available-blue)](https://docs.mossdef.org/pbr/) [![License](https://img.shields.io/badge/License-GPL--3.0-lightgrey)](https://github.com/stangri/luci-app-pbr/blob/master/LICENSE) LuCI interface for the `pbr` (policy-based routing) package. @@ -16,4 +16,4 @@ Provides a visual way to manage traffic policies for routing over specific WAN o - Integrated with OpenWrtโ€™s service management **Full documentation:** -[https://docs.openwrt.melmac.ca/pbr/](https://docs.openwrt.melmac.ca/pbr/) +[https://docs.mossdef.org/pbr/](https://docs.mossdef.org/pbr/) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 9dd9c84..1aa6485 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -18,7 +18,7 @@ var pkg = { }, get URL() { return ( - "https://docs.openwrt.melmac.ca/" + + "https://docs.mossdef.org/" + pkg.Name + "/" + (pkg.ReadmeCompat ? pkg.ReadmeCompat + "/" : "") @@ -26,7 +26,7 @@ var pkg = { }, get DonateURL() { return ( - "https://docs.openwrt.melmac.ca/" + + "https://docs.mossdef.org/" + pkg.Name + "/" + (pkg.ReadmeCompat ? pkg.ReadmeCompat + "/" : "") + From 893413b24b7d86004b78bfa67c02b0a17a79c091 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 26 Jun 2026 08:16:17 +0000 Subject: [PATCH 162/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c46f656..7a4a826 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=67 +PKG_RELEASE:=69 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From faf05b01bf91df10c28d26ac86475959e13c4312 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 29 Jun 2026 03:16:02 +0000 Subject: [PATCH 163/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7a4a826..395515c 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=69 +PKG_RELEASE:=71 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From 4a59b46d610d00fb0c9c4da3ffa731d38437c5b8 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Mon, 29 Jun 2026 18:18:01 +0000 Subject: [PATCH 164/185] update workflow --- .github/workflows/openwrt-release.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index f444b3c..64b89bd 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -12,6 +12,7 @@ jobs: runs-on: ubuntu-latest env: REPO_APK_KEY: ${{ secrets.REPO_APK_KEY }} + PKG_NAME: ${{ github.event.repository.name }} strategy: fail-fast: false @@ -50,10 +51,7 @@ jobs: steps: - name: ๐Ÿงพ Checkout repo - uses: actions/checkout@v4 - - - name: ๐Ÿ“› Set PKG_NAME from repo - run: echo "PKG_NAME=${{ github.event.repository.name }}" >> "$GITHUB_ENV" + uses: actions/checkout@v5 - name: ๐Ÿงฐ Set up melmac feed structure run: | @@ -144,7 +142,7 @@ jobs: steps: - name: ๐Ÿงพ Checkout repo - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: ๐Ÿ” Extract version and release from Makefile id: version From 4a4fd4e77aeb6dff2309efed1e457bed6b5e3610 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 2 Jul 2026 01:21:57 +0000 Subject: [PATCH 165/185] Pin SDK to stable point releases (25.12.5 / 24.10.7) The SDK image tracked the rolling -SNAPSHOT branch, whose mirror tarballs rotate and occasionally arrive truncated -> sha256 mismatch and a red build. Map the release-line label (matrix.version) to a fixed stable point release for the SDK image only; artifact filenames and the sync_repo.sh label are unchanged. --- .github/workflows/openwrt-release.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index 64b89bd..21829b0 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -76,11 +76,18 @@ jobs: - name: ๐Ÿงฎ Compute ARCH run: | - if [ "${{ matrix.version }}" = "snapshots" ]; then - echo "ARCH=${{ matrix.target }}-SNAPSHOT" >> "$GITHUB_ENV" - else - echo "ARCH=${{ matrix.target }}-${{ matrix.version }}" >> "$GITHUB_ENV" - fi + # matrix.version is the release-line LABEL baked into artifact filenames + # (sync_repo.sh matches *_openwrt-25.12_*), NOT the SDK image tag. Pin the + # SDK to a specific STABLE point release so builds are reproducible and + # immune to -SNAPSHOT mirror churn (rotated/truncated tarballs -> + # sha256 mismatch). Bump these when a new point release ships. + case "${{ matrix.version }}" in + openwrt-25.12) SDK_VERSION="25.12.5" ;; + openwrt-24.10) SDK_VERSION="24.10.7" ;; + snapshots) SDK_VERSION="SNAPSHOT" ;; + *) SDK_VERSION="${{ matrix.version }}" ;; + esac + echo "ARCH=${{ matrix.target }}-${SDK_VERSION}" >> "$GITHUB_ENV" - name: ๐Ÿ—๏ธ Build with OpenWrt SDK uses: openwrt/gh-action-sdk@v8 From 7eebc8b96345c23956a880e258e412292c107b5c Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 2 Jul 2026 22:21:59 +0000 Subject: [PATCH 166/185] Prune stale release assets after publishing Add a release-job step that deletes assets on the tag which the current build did not produce, so a dropped arch/release-line stops lingering on the release (and stops being re-published by sync_repo.sh, which pulls from releases). Gated on a fully green build and a non-empty keep set so a transient failure can't wipe good binaries. --- .github/workflows/openwrt-release.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index 21829b0..2a2c2ce 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -177,3 +177,24 @@ jobs: prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: ๐Ÿงน Prune stale release assets + # Delete assets on the tag that THIS build did not produce, so an arch or + # release line you stopped building no longer lingers on the release (and + # no longer gets re-published by sync_repo.sh, which pulls from releases). + # Gated on a fully green build + a non-empty keep set so a transient arch + # failure or an empty build can never wipe a still-good binary. + if: needs.build.result == 'success' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG: v${{ steps.version.outputs.version }} + run: | + keep=$(find release-assets -type f \( -name '*.ipk' -o -name '*.apk' \) \ + -exec basename {} \; | sort -u) + [ -n "$keep" ] || { echo "no packages built โ€” skipping prune"; exit 0; } + gh release view "$TAG" --json assets --jq '.assets[].name' | while read -r a; do + case "$a" in *.ipk|*.apk) ;; *) continue ;; esac + printf '%s\n' "$keep" | grep -qxF -- "$a" || { + echo "pruning stale asset: $a" + gh release delete-asset "$TAG" "$a" --yes + } + done From 4c885e93029c6599c098be7968096d812f61dcdf Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 4 Jul 2026 16:47:45 +0000 Subject: [PATCH 167/185] Keep apk 'r' release prefix in built asset filenames The rename step used bare ${PKG_RELEASE}, so the release asset was pkg--5.apk while the SDK/local build produces pkg--r5.apk. Compute a per-ext release token (apk -> r${PKG_RELEASE}, opkg unchanged) so 25.12 apk filenames keep the 'r', matching the local build and dev.mossdef.org. --- .github/workflows/openwrt-release.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index 2a2c2ce..f469dbc 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -120,12 +120,14 @@ jobs: PKG_VERSION=$(grep -E '^PKG_VERSION *:?=' Makefile | head -n1 | cut -d= -f2 | tr -d '[:space:]') PKG_RELEASE=$(grep -E '^PKG_RELEASE *:?=' Makefile | head -n1 | cut -d= -f2 | tr -d '[:space:]') for ext in ipk apk; do + # apk keeps OpenWrt's 'r' release prefix (โ€ฆ-r5.apk); opkg does not + case "$ext" in apk) REL="r${PKG_RELEASE}" ;; *) REL="${PKG_RELEASE}" ;; esac for f in $(find bin/packages -type f -path "*/melmac/*.${ext}"); do dir=$(dirname "$f") if [ -n "${{ matrix.suffix }}" ]; then - mv -v "$f" "$dir/${PKG_NAME}-${PKG_VERSION}-${PKG_RELEASE}_${{ matrix.version }}_${{ matrix.suffix }}.${ext}" + mv -v "$f" "$dir/${PKG_NAME}-${PKG_VERSION}-${REL}_${{ matrix.version }}_${{ matrix.suffix }}.${ext}" else - mv -v "$f" "$dir/${PKG_NAME}-${PKG_VERSION}-${PKG_RELEASE}_${{ matrix.version }}_${{ matrix.target }}.${ext}" + mv -v "$f" "$dir/${PKG_NAME}-${PKG_VERSION}-${REL}_${{ matrix.version }}_${{ matrix.target }}.${ext}" fi done done From 408080b10aa56145a84581feb6ea0df156e1cf8f Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 4 Jul 2026 16:56:50 +0000 Subject: [PATCH 168/185] Notify repo.mossdef.org on release (event-driven sync) Add a release-job step that fires repository_dispatch to repo.mossdef.org so a new release publishes immediately instead of waiting for the hourly poll. Non-fatal when SYNC_DISPATCH_TOKEN is absent. --- .github/workflows/openwrt-release.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index f469dbc..b73616d 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -200,3 +200,13 @@ jobs: gh release delete-asset "$TAG" "$a" --yes } done + - name: ๐Ÿ”” Notify repo.mossdef.org + # Event-driven sync: ping the repo so it publishes this release immediately + # instead of waiting for its hourly poll. Non-fatal if the token is absent. + if: needs.build.result == 'success' + env: + GH_TOKEN: ${{ secrets.SYNC_DISPATCH_TOKEN }} + run: | + gh api -X POST /repos/mossdef-org/repo.mossdef.org/dispatches \ + -f event_type=package-released \ + || echo "dispatch failed โ€” repo.mossdef.org still syncs on its hourly schedule" From de61d2d002983538ecef2179c8321514b850829a Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 10 Jul 2026 21:54:21 +0000 Subject: [PATCH 169/185] HTML-escape untrusted scalar values --- htdocs/luci-static/resources/pbr/status.js | 25 ++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 1aa6485..3b26f67 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -36,6 +36,15 @@ var pkg = { isVersionMismatch: function (luci, pkg, rpcd) { return luci !== pkg || pkg !== rpcd || luci !== rpcd; }, + // HTML-escape an untrusted scalar value with LuCI's %h format specifier so + // config-derived text reflected into status messages cannot inject markup + // when appended via innerHTML by E()/dom.create. Trusted array infos built + // in this file (e.g. anchor tags) are passed through unchanged. + escapeInfo: function (info) { + return Array.isArray(info) + ? info + : info != null && info !== "" ? "%h".format(info) : info; + }, formatMessage: function (info, template) { if (!template) return _("Unknown message") + "
"; return ( @@ -178,8 +187,12 @@ var status = baseclass.extend({ packageCompat: reply.packageCompat || 0, rpcdCompat: reply.rpcdCompat || 0, gateways: reply.gatewaysList || [], - errors: reply.errors || [], - warnings: reply.warnings || [], + errors: (reply.errors || []).map(function (e) { + return Object.assign({}, e, { info: pkg.escapeInfo(e.info) }); + }), + warnings: (reply.warnings || []).map(function (e) { + return Object.assign({}, e, { info: pkg.escapeInfo(e.info) }); + }), }; if ( @@ -284,7 +297,7 @@ var status = baseclass.extend({ ), warningResolverNotSupported: _( "Resolver set (%s) is not supported on this system.", - ).format(L.uci.get(pkg.Name, "config", "resolver_set")), + ).format(pkg.escapeInfo(L.uci.get(pkg.Name, "config", "resolver_set"))), warningAGHVersionTooLow: _( "Installed AdGuardHome (%s) doesn't support 'ipset_file' option.", ), @@ -382,13 +395,13 @@ var status = baseclass.extend({ errorNoIptables: _("%s binary cannot be found").format("iptables"), errorNoIpset: _( "Resolver set support (%s) requires ipset, but ipset binary cannot be found", - ).format(L.uci.get(pkg.Name, "config", "resolver_set")), + ).format(pkg.escapeInfo(L.uci.get(pkg.Name, "config", "resolver_set"))), errorNoNft: _( "Resolver set support (%s) requires nftables, but nft binary cannot be found", - ).format(L.uci.get(pkg.Name, "config", "resolver_set")), + ).format(pkg.escapeInfo(L.uci.get(pkg.Name, "config", "resolver_set"))), errorResolverNotSupported: _( "Resolver set (%s) is not supported on this system", - ).format(L.uci.get(pkg.Name, "config", "resolver_set")), + ).format(pkg.escapeInfo(L.uci.get(pkg.Name, "config", "resolver_set"))), errorServiceDisabled: _( "The %s service is currently disabled", ).format(pkg.Name), From 789593c788b1ffc1ab1bdc2680f40ac3018a3729 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Fri, 10 Jul 2026 22:31:05 +0000 Subject: [PATCH 170/185] limit ACL scope --- root/usr/share/rpcd/acl.d/luci-app-pbr.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/root/usr/share/rpcd/acl.d/luci-app-pbr.json b/root/usr/share/rpcd/acl.d/luci-app-pbr.json index f88aa99..8f59717 100644 --- a/root/usr/share/rpcd/acl.d/luci-app-pbr.json +++ b/root/usr/share/rpcd/acl.d/luci-app-pbr.json @@ -4,10 +4,7 @@ "read": { "ubus": { "luci.pbr": [ - "getInitList", - "getInitStatus", - "getInterfaces", - "getPlatformSupport" + "getInitStatus" ] }, "file": { From 655cf61ac0e20f766d220b554d4bdcd4907f6957 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 11 Jul 2026 00:13:12 +0000 Subject: [PATCH 171/185] update pot --- po/templates/pbr.pot | 220 +++++++++++++++++++++---------------------- 1 file changed, 110 insertions(+), 110 deletions(-) diff --git a/po/templates/pbr.pot b/po/templates/pbr.pot index 16b83c2..9e05ae3 100644 --- a/po/templates/pbr.pot +++ b/po/templates/pbr.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:291 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:304 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:440 msgid "%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:395 msgid "%s binary cannot be found" msgstr "" @@ -58,7 +58,7 @@ msgstr "" msgid "Chain" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:478 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:491 msgid "Command failed: '%s'" msgstr "" @@ -66,7 +66,7 @@ msgstr "" msgid "Condensed output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:379 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:392 msgid "Config (%s) validation failure" msgstr "" @@ -78,7 +78,7 @@ msgstr "" msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:443 msgid "Custom user file '%s' not found or empty" msgstr "" @@ -98,15 +98,15 @@ msgstr "" msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:486 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 msgid "Default fw4 chain '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:498 msgid "Default fw4 table '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:641 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:654 msgid "Disable" msgstr "" @@ -115,11 +115,11 @@ msgstr "" msgid "Disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:635 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:648 msgid "Disabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:317 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330 msgid "" "Dnsmasq instance (%s) targeted in settings, but it doesn't have its own " "confdir" @@ -133,11 +133,11 @@ msgstr "" msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:688 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:701 msgid "Donate to the Project" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:622 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:635 msgid "Enable" msgstr "" @@ -148,19 +148,19 @@ msgstr "" msgid "Enabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:616 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:629 msgid "Enabling %s service" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 msgid "Error running custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:497 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:510 msgid "Errors encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:530 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:543 msgid "Errors encountered, please check the %sREADME%s" msgstr "" @@ -170,35 +170,35 @@ msgid "" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:495 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 msgid "Failed to create temporary file with mktemp mask: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 msgid "Failed to download '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:472 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:485 msgid "Failed to download '%s', HTTPS is not supported" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:467 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 msgid "Failed to install fw4 nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:429 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 msgid "Failed to reload '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:463 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 msgid "Failed to resolve '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:428 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:441 msgid "Failed to set up '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:436 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:449 msgid "Failed to set up any gateway" msgstr "" @@ -226,15 +226,15 @@ msgstr "" msgid "Inactive (Disabled)" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:332 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:345 msgid "Incompatible DHCP Option 6 for interface %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:480 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:493 msgid "Incompatible custom user file detected '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:314 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:327 msgid "" "Incompatible nft calls detected in user include file, disabling fw4 nft file " "support" @@ -244,15 +244,15 @@ msgstr "" msgid "Insert" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:454 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:467 msgid "Insertion failed for IPv4 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:451 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:464 msgid "Insertion failed for both IPv4 and IPv6 for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:289 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:302 msgid "Installed AdGuardHome (%s) doesn't support 'ipset_file' option." msgstr "" @@ -260,26 +260,26 @@ msgstr "" msgid "Interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:422 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:435 msgid "Interface '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:474 msgid "Interface mark for '%s' exceeds the fwmask value" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:283 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:296 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:305 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:318 msgid "Invalid OpenVPN config for %s interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:465 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:478 msgid "Invalid OpenVPN config for '%s' interface" msgstr "" @@ -292,7 +292,7 @@ msgstr "" msgid "Local ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:445 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 msgid "Mismatched IP family between in policy '%s'" msgstr "" @@ -320,27 +320,27 @@ msgid "" "check the %sREADME%s." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:502 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:515 msgid "Netifd setup: failed to delete fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:499 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:512 msgid "Netifd setup: failed to install fw4 netifd nft file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:508 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:521 msgid "Netifd setup: invalid value of netifd_interface_default option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:511 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:524 msgid "Netifd setup: invalid value of netifd_interface_default6 option '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:335 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:348 msgid "Netifd setup: option netifd_interface_local is missing, assuming '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:518 msgid "Netifd setup: required option '%s' is missing" msgstr "" @@ -348,7 +348,7 @@ msgstr "" msgid "No Change" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:234 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:247 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:45 msgid "Not installed or not found" msgstr "" @@ -361,8 +361,8 @@ msgstr "" msgid "Path" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:263 -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:696 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:276 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:709 msgid "Please %sdonate%s to support development of this project." msgstr "" @@ -370,24 +370,24 @@ msgstr "" msgid "Please check the %sREADME%s before changing this option." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:321 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:334 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:299 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:312 msgid "Please unset 'chain' or set 'chain' to 'PREROUTING' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:302 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:315 msgid "Please unset 'chain' or set 'chain' to 'prerouting' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:296 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:309 msgid "Please unset 'proto' or set 'proto' to 'all' for policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:293 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:306 msgid "Please unset 'src_addr', 'src_port' and 'dest_port' for policy '%s'" msgstr "" @@ -395,23 +395,23 @@ msgstr "" msgid "Policies" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:425 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:438 msgid "Policy '%s' has an unknown interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:420 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:433 msgid "Policy '%s' has no assigned DNS" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:419 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:432 msgid "Policy '%s' has no assigned interface" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:417 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:430 msgid "Policy '%s' has no source/destination parameters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:482 msgid "" "Policy '%s' refers to URL which can't be downloaded in 'secure_reload' mode" msgstr "" @@ -424,7 +424,7 @@ msgstr "" msgid "Policy Based Routing - Configuration" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:207 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:220 msgid "Policy Based Routing - Status" msgstr "" @@ -436,11 +436,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:458 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:471 msgid "Received empty tid/mark or interface name when setting up routing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:402 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:415 msgid "Refer to %sREADME%s for details" msgstr "" @@ -460,37 +460,37 @@ msgstr "" msgid "Remote ports" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:487 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:500 msgid "Required binary '%s' is missing" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:437 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:450 msgid "Resolver '%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:403 msgid "Resolver set (%s) is not supported on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:286 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:299 msgid "Resolver set (%s) is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:384 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:397 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:387 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:400 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:584 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 msgid "Restart" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:591 msgid "Restarting %s service" msgstr "" @@ -504,11 +504,11 @@ msgid "" "See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:216 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:229 msgid "Running" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:341 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:354 msgid "" "Running in dynamic routing tables mode. Consider installing netifd " "extensions or mwan4 for more efficient operation. See %sREADME%s." @@ -522,11 +522,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:667 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:680 msgid "Service Control" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:520 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:533 msgid "Service Errors" msgstr "" @@ -535,15 +535,15 @@ msgstr "" msgid "Service FW Mask" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:248 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:261 msgid "Service Gateways" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:211 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:224 msgid "Service Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:350 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:363 msgid "Service Warnings" msgstr "" @@ -553,15 +553,15 @@ msgid "" "%sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:439 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:452 msgid "Skipping IPv6 policy '%s' as IPv6 support is disabled" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:565 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:578 msgid "Start" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:559 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:572 msgid "Starting %s service" msgstr "" @@ -583,19 +583,19 @@ msgstr "" msgid "Status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:603 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:616 msgid "Stop" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:230 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:243 msgid "Stopped (Disabled)." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:228 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:241 msgid "Stopped." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:597 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:610 msgid "Stopping %s service" msgstr "" @@ -615,15 +615,15 @@ msgstr "" msgid "Suppress/No output" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:431 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:444 msgid "Syntax error in custom user file '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:252 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:265 msgid "The %s indicates default gateway. See the %sREADME%s for details." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:399 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:412 msgid "" "The %s interface not found, you need to set the 'pbr.config." "uplink_interface' option" @@ -633,11 +633,11 @@ msgstr "" msgid "The %s is not supported on this system." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:396 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:409 msgid "The %s service failed to discover uplink gateway" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:393 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:406 msgid "The %s service is currently disabled" msgstr "" @@ -645,23 +645,23 @@ msgstr "" msgid "The %s support is unknown." msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:476 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 msgid "The '%s' schema requires curl, but it's not detected on this system" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:308 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:321 msgid "The WebUI application (luci-app-pbr) is outdated, please update it" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:408 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:421 msgid "The ipset name '%s' is longer than allowed 31 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:411 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:424 msgid "The nft set name '%s' is longer than allowed 255 characters" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:311 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:324 msgid "The principal package (pbr) is outdated, please update it" msgstr "" @@ -669,43 +669,43 @@ msgstr "" msgid "Unable to retrieve %s status" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:414 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:427 msgid "Unexpected exit or service termination: '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:492 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:505 msgid "Unknown Gateway for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:489 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:502 msgid "Unknown IPv6 Link type for device '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:456 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:469 msgid "Unknown entry in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:540 msgid "Unknown error" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:40 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:49 msgid "Unknown message" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:442 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:455 msgid "Unknown packet mark for interface '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:448 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:461 msgid "Unknown protocol in policy '%s'" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:357 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:370 msgid "Unknown warning" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:483 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:496 msgid "Unsafe nft command in custom user file '%s'" msgstr "" @@ -717,17 +717,17 @@ msgstr "" msgid "Uplink Interface Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:338 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:351 msgid "Uplink/WAN interface is still down, going back to boot mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:514 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:527 msgid "" "Uplink/WAN interface is still down, increase value of " "'procd_boot_trigger_delay' option" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:434 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:447 msgid "" "Use of 'curl' is detected in custom user file '%s', but 'curl' isn't " "installed" @@ -745,7 +745,7 @@ msgstr "" msgid "Version" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:214 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:227 msgid "Version %s" msgstr "" @@ -753,11 +753,11 @@ msgstr "" msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:330 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:343 msgid "Warnings encountered, please check %s" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:360 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:373 msgid "Warnings encountered, please check the %sREADME%s" msgstr "" @@ -765,17 +765,17 @@ msgstr "" msgid "all" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:220 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:233 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:31 msgid "fw4 nft file mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:218 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:231 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:29 msgid "iptables mode" msgstr "" -#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:222 +#: applications/luci-app-pbr/htdocs/luci-static/resources/pbr/status.js:235 #: applications/luci-app-pbr/htdocs/luci-static/resources/view/status/include/72_pbr.js:33 msgid "nft mode" msgstr "" From cf5187539ab1d602733b4992774d5b86da93d0c3 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Tue, 14 Jul 2026 19:44:52 +0000 Subject: [PATCH 172/185] harden ACL --- root/usr/share/rpcd/acl.d/luci-app-pbr.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/root/usr/share/rpcd/acl.d/luci-app-pbr.json b/root/usr/share/rpcd/acl.d/luci-app-pbr.json index 8f59717..4247c57 100644 --- a/root/usr/share/rpcd/acl.d/luci-app-pbr.json +++ b/root/usr/share/rpcd/acl.d/luci-app-pbr.json @@ -7,14 +7,6 @@ "getInitStatus" ] }, - "file": { - "/usr/share/nftables.d/ruleset-post/30-pbr.nft": [ - "read" - ], - "/var/run/pbr.nft": [ - "read" - ] - }, "uci": [ "pbr" ] From 13a895febb9cf18c46a2c8c9c5fb9eb911ed810f Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 16 Jul 2026 04:45:59 +0000 Subject: [PATCH 173/185] version bump --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 395515c..2ccc537 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin PKG_VERSION:=1.2.3 -PKG_RELEASE:=71 +PKG_RELEASE:=73 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ From aac1cfd2df8fb07fb40a2e77859021d6407c494f Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Thu, 16 Jul 2026 20:24:55 +0000 Subject: [PATCH 174/185] Add Erik Conijn to package maintainers --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2ccc537..9c553b5 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later -PKG_MAINTAINER:=Stan Grishin +PKG_MAINTAINER:=Stan Grishin , Erik Conijn PKG_VERSION:=1.2.3 PKG_RELEASE:=73 From 9150c214e3ff2eb41c88b2b074d0420b1c6661de Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 18 Jul 2026 02:06:04 +0000 Subject: [PATCH 175/185] CI: bump GitHub Actions to Node 24 runtimes Node 20 is deprecated on GitHub-hosted runners. Bump the affected actions to their current Node 24 majors (upload-artifact v7, download-artifact v8, setup-node v5). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/openwrt-release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openwrt-release.yml b/.github/workflows/openwrt-release.yml index b73616d..8453670 100644 --- a/.github/workflows/openwrt-release.yml +++ b/.github/workflows/openwrt-release.yml @@ -133,7 +133,7 @@ jobs: done - name: ๐Ÿ“ฆ Upload artifact for ${{ matrix.target }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: ${{ env.PKG_NAME }}-${{ matrix.target }}-${{ matrix.version }} path: | @@ -163,7 +163,7 @@ jobs: echo "version=$COMBINED_VERSION" >> "$GITHUB_OUTPUT" - name: โฌ‡๏ธ Download all build artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ./release-assets From d58160a9d24abe1f36caa155ffea1713a5c736c1 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sun, 19 Jul 2026 00:31:00 +0000 Subject: [PATCH 176/185] update LUCI_URL --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9c553b5..bbba2bb 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ PKG_VERSION:=1.2.3 PKG_RELEASE:=73 LUCI_TITLE:=Policy Based Routing Service Web UI -LUCI_URL:=https://github.com/mossdef-org/luci-app-pbr/ +LUCI_URL:=https://docs.mossdef.org/pbr/ LUCI_DESCRIPTION:=Provides Web UI for Policy Based Routing Service. LUCI_DEPENDS:=+luci-base +jsonfilter +rpcd-mod-ucode +pbr From 06e34c53ba520794fb3c567346fcf755756abe02 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Wed, 22 Jul 2026 11:02:38 +0200 Subject: [PATCH 177/185] luci-app-pbr-1.2.3: status: always display gateway placeholders Always render the IPv4 gateway (falling back to "0.0.0.0" when absent) and, when IPv6 is enabled, always render the IPv6 gateway segment (falling back to "::0"), instead of omitting the segment entirely when no gateway is present. Mirrors the backend's disp_gw_suffix() behavior in pbr.uc so the status page and the init-script/log output stay consistent. Signed-off-by: Erik Conijn --- htdocs/luci-static/resources/pbr/status.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 3b26f67..3b30139 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -55,6 +55,7 @@ var pkg = { }, buildGatewayElements: function (gw) { const gateways = Array.isArray(gw) ? gw : Object.values(gw); + const ipv6Enabled = L.uci.get(pkg.Name, "config", "ipv6_enabled") === "1"; const elements = []; gateways.forEach(function (g) { const iface = g.name; @@ -66,11 +67,10 @@ var pkg = { const display = g.label || iface; const parts = [display]; if (g.device_ipv4 && g.device_ipv4 !== iface) parts.push(g.device_ipv4); - if (g.gateway_ipv4) parts.push(g.gateway_ipv4); - if (g.gateway_ipv6) { - if (g.device_ipv6 && g.device_ipv6 !== iface) - parts.push(g.device_ipv6); - parts.push(g.gateway_ipv6); + parts.push(g.gateway_ipv4 || "0.0.0.0"); + if (ipv6Enabled) { + if (g.device_ipv6 && g.device_ipv6 !== iface) parts.push(g.device_ipv6); + parts.push(g.gateway_ipv6 || "::0"); } var line = parts.join("/"); if (g.default) { From d99782a41e3dd7caf18b5cdca1ebd2c88718e5c8 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Fri, 24 Jul 2026 07:34:18 +0200 Subject: [PATCH 178/185] luci-app-pbr-1.2.3: bump compat to 34, add gateway warning strings (#28) Companion change to the pbr-side commit that downgrades unknown gateway detection from an error to a warning (warningInterfaceRoutingUnknownGateway4 / warningInterfaceRoutingUnknownGateway6, replacing errorInterfaceRoutingUnknownGateway). As with pbr, this same error was already turned into a warning once before in 1.2.2, so this change is largely reapplying/completing that on the LuCI side to match the current pbr package. - status.js: bump LuciCompat to 34; add warningInterfaceRoutingUnknownGateway4/6 message strings to warningTable; remove errorInterfaceRoutingUnknownGateway from errorTable. - luci.pbr: bump rpcdCompat to 34. Keeps LuciCompat, packageCompat, and rpcdCompat in sync at 34 so no spurious warningInternalVersionMismatch is shown once both PRs are installed together. Signed-off-by: Erik Conijn --- htdocs/luci-static/resources/pbr/status.js | 11 +++++++---- root/usr/share/rpcd/ucode/luci.pbr | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/luci-static/resources/pbr/status.js b/htdocs/luci-static/resources/pbr/status.js index 3b30139..10d91e3 100644 --- a/htdocs/luci-static/resources/pbr/status.js +++ b/htdocs/luci-static/resources/pbr/status.js @@ -11,7 +11,7 @@ var pkg = { return "pbr"; }, get LuciCompat() { - return 33; + return 34; }, get ReadmeCompat() { return "1.2.3"; @@ -356,6 +356,12 @@ var status = baseclass.extend({ '', "", ), + warningInterfaceRoutingUnknownGateway4: _( + "Unknown IPv4 gateway for '%s'", + ), + warningInterfaceRoutingUnknownGateway6: _( + "Unknown IPv6 gateway for '%s'", + ), }; var warningsTitle = E( "label", @@ -501,9 +507,6 @@ var status = baseclass.extend({ errorInterfaceRoutingUnknownDevType: _( "Unknown IPv6 Link type for device '%s'", ), - errorInterfaceRoutingUnknownGateway: _( - "Unknown Gateway for device '%s'", - ), errorMktempFileCreate: _( "Failed to create temporary file with mktemp mask: '%s'", ), diff --git a/root/usr/share/rpcd/ucode/luci.pbr b/root/usr/share/rpcd/ucode/luci.pbr index 34233ba..f09a711 100644 --- a/root/usr/share/rpcd/ucode/luci.pbr +++ b/root/usr/share/rpcd/ucode/luci.pbr @@ -17,7 +17,7 @@ import { access } from 'fs'; import { cursor } from 'uci'; const packageName = 'pbr'; // ucode-lsp disable -const rpcdCompat = 33; // ucode-lsp disable +const rpcdCompat = 34; // ucode-lsp disable // โ”€โ”€ rpcd Method Handlers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ From 4f9d79206b61b448dc391462d011a22e89b7f8ff Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Mon, 27 Jul 2026 08:00:52 +0200 Subject: [PATCH 179/185] luci-app-pbr: add uplink_interface/uplink_interface6 advanced options (#29) Expose uplink_interface and uplink_interface6 as per-service config overrides on the Advanced tab, letting the user force the default IPv4/IPv6 uplink interface used by the service. These map directly to the UCI config_schema entries in config.uc; pbr.uc derives cfg.uplink_interface4 from cfg.uplink_interface internally at load time and already uses it throughout split-uplink table selection and status reporting. - form.Value combobox: suggests known interfaces from reply.interfaces (pbr's supported/detected list) but also accepts a custom interface name not currently reported by pbr - datatype "network" for validation - defaults: "wan" for uplink_interface, "wan6" for uplink_interface6 - uplink_interface6 only shown when ipv6_enabled is set Signed-off-by: Erik Conijn --- .../resources/view/pbr/overview.js | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 88aa5fc..82bfd51 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -181,6 +181,45 @@ return view.extend({ }); o.rmempty = true; + o = s.taboption( + "tab_advanced", + form.Value, + "uplink_interface", + _("Default Uplink Interface (IPv4)"), + _("Force the default IPv4 uplink interface used by the service. " + + "Select from the list of known interfaces or enter a custom interface name.") + ); + if (Array.isArray(reply.interfaces)) { + reply.interfaces.forEach((element) => { + if (element.toLowerCase() !== "ignore") { + o.value(element, reply.interface_labels[element] || element); + } + }); + } + o.datatype = "network"; + o.default = "wan"; + o.rmempty = true; + + o = s.taboption( + "tab_advanced", + form.Value, + "uplink_interface6", + _("Default Uplink Interface (IPv6)"), + _("Force the default IPv6 uplink interface used by the service. " + + "Select from the list of known interfaces or enter a custom interface name.") + ); + if (Array.isArray(reply.interfaces)) { + reply.interfaces.forEach((element) => { + if (element.toLowerCase() !== "ignore") { + o.value(element, reply.interface_labels[element] || element); + } + }); + } + o.datatype = "network"; + o.default = "wan6"; + o.rmempty = true; + o.depends("ipv6_enabled", "1"); + o = s.taboption( "tab_advanced", form.Value, From 15deec4deebea314d1033660c4619f774a7dcc46 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Mon, 27 Jul 2026 08:47:22 +0200 Subject: [PATCH 180/185] Bump package release version from 73 to 75 version bump so that we can start testing recent changes Signed-off-by: Erik Conijn --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index bbba2bb..9757eb8 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin , Erik Conijn PKG_VERSION:=1.2.3 -PKG_RELEASE:=73 +PKG_RELEASE:=75 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://docs.mossdef.org/pbr/ From 32ea5fa5d2f4c692709e418b2b77056a80a5dcc5 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Wed, 29 Jul 2026 08:01:38 +0200 Subject: [PATCH 181/185] Increment package release version from 75 to 77 Signed-off-by: Erik Conijn --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9757eb8..32ea8f2 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin , Erik Conijn PKG_VERSION:=1.2.3 -PKG_RELEASE:=75 +PKG_RELEASE:=77 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://docs.mossdef.org/pbr/ From 7140c4dfb78515729d9aa0d754484bca8672194c Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Mon, 3 Aug 2026 15:11:57 +0200 Subject: [PATCH 182/185] Update PKG_RELEASE to 79 Bump package release version from 77 to 79. Signed-off-by: Erik Conijn --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 32ea8f2..0badcdd 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ PKG_NAME:=luci-app-pbr PKG_LICENSE:=AGPL-3.0-or-later PKG_MAINTAINER:=Stan Grishin , Erik Conijn PKG_VERSION:=1.2.3 -PKG_RELEASE:=77 +PKG_RELEASE:=79 LUCI_TITLE:=Policy Based Routing Service Web UI LUCI_URL:=https://docs.mossdef.org/pbr/ From d46d21ad9b16d9a1499d35ac990d7ea877214642 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Mon, 3 Aug 2026 15:35:36 +0200 Subject: [PATCH 183/185] luci-app-pbr-1.2.3: force-write uplink_interface/uplink_interface6 defaults (#31) Add forcewrite to uplink_interface and uplink_interface6 so the default value ("wan"/"wan6") is always persisted to UCI on save, instead of being silently skipped because the form value already equals the default and LuCI treats that as "no change." rmempty stays enabled, so an explicitly cleared field still removes the option rather than writing an empty string. Signed-off-by: Erik Conijn --- htdocs/luci-static/resources/view/pbr/overview.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 82bfd51..3063340 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -199,6 +199,7 @@ return view.extend({ o.datatype = "network"; o.default = "wan"; o.rmempty = true; + o.forcewrite = true; o = s.taboption( "tab_advanced", @@ -218,6 +219,7 @@ return view.extend({ o.datatype = "network"; o.default = "wan6"; o.rmempty = true; + o.forcewrite = true; o.depends("ipv6_enabled", "1"); o = s.taboption( From 057d1f3a772c4618f937da06042a23da2706a15a Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Mon, 10 Aug 2026 07:18:57 +0200 Subject: [PATCH 184/185] luci-app-pbr-1.2.3: adapt to luci-base default-vs-write UCI change REQUIRES luci-base commit 974b5864e05ef30f38149389f15583c08bdd4eda ("luci-base: form: do not write values equal to the default"). That commit changed CBIAbstractValue.parse() in modules/luci-base/htdocs/luci-static/resources/form.js to: if (fval == null || fval == '' || (fval == this.default && (this.optional || this.rmempty))) { ... remove() ... } else if (this.forcewrite || !isEqual(cval, fval)) { ... write() ... } An option whose form value equals its declared o.default is now REMOVED from UCI rather than written, whenever optional or rmempty is true. Both rmempty (true) and the removal clause are on by default, so this silently applies to nearly every option that does not explicitly opt out. It also makes o.forcewrite = true dead code in precisely the case it is usually added for: forcewrite lives in the else-if branch, which the new first condition now short-circuits. Changes here: * resolver_set: rmempty = false. This is the only functional fix. pbr's backend treats an absent resolver_set as disabled (files/lib/pbr/platform.uc: resolver_set_supported is true when the value is empty or 'none'), while LuCI declares a default of 'dnsmasq.nftset' on capable devices. This is not merely a default failing to be written. pbr ships resolver_set 'dnsmasq.nftset' in files/etc/config/pbr, and files/etc/uci-defaults/90-pbr force-sets it on every install and upgrade (nftset when dnsmasq supports it, 'none' otherwise), so the option is present in practice on every device. After 974b5864 the first Save of the overview page therefore DELETES that provisioned value, and because 90-pbr only re-runs on package upgrade, nft set handling stays off until then: the UI keeps showing nft set support enabled while pbr runs with it off and domain policies fall back to one-time resolveip lookups. An explicit o.default = 'none' base is set as well: it is inert while rmempty and optional are both false, but it documents the fallback on devices without nft set support and keeps the option correct if rmempty is ever restored. * uplink_interface / uplink_interface6: rmempty = false, and the now-dead forcewrite = true removed. pbr falls back to wan/wan6 when these are absent, so this is visibility only -- the declared defaults are written to /etc/config/pbr so users can see and edit them. Note that uplink_interface6 is still removed when ipv6_enabled is false; that is the inactive-depends() path (else if (!this.retain) remove()), which is unconditional and unrelated to rmempty. Safe on older branches that do not have 974b5864: the upstream change is a single added clause, so on old form.js these options behave exactly as before. resolver_set is a ListValue with no blank choice, so rmempty = false is never reached; and the dropped forcewrite only ever forced a rewrite of an already-identical value, since an absent option has cval == null and is written on the inequality check anyway. The one visible difference on any branch is that the uplink_interface fields can no longer be cleared to blank, which is intended. No config churn on up- or downgrade. Wider impact -- this luci-base change can break more than pbr: * Any app that declares o.default and depends on that value actually reaching /etc/config now gets nothing written. If the package's own fallback differs from the LuCI default, the UI and the running service silently disagree. That is exactly the resolver_set case above, and it is invisible until something misbehaves at runtime. * Any existing o.forcewrite = true added to force a default into the config is now a no-op. The correct replacement is rmempty = false, since cfgvalue() returns null for an absent option. * rmempty = false additionally makes the field mandatory, so it is not a drop-in fix for free-text form.Value fields where a blank entry used to be legitimate. Fields with optional = true need optional cleared as well, since optional arms the same removal clause independently. Other pbr views, and other LuCI apps generally, likely need the same audit. Thanks to @pesa1234 for bringing this to our attention and for reviewing the resolver_set analysis. The equivalent fix for 1.2.2 is openwrt/luci PR #8927 ("luci-app-pbr: preserve resolver_set selection"); that version carries three resolver branches instead of one, but the fix is the same: https://github.com/openwrt/luci/pull/8927#discussion_r3744952779 Co-Authored-By: Claude Opus 5 --- htdocs/luci-static/resources/view/pbr/overview.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/luci-static/resources/view/pbr/overview.js b/htdocs/luci-static/resources/view/pbr/overview.js index 3063340..aba5d86 100644 --- a/htdocs/luci-static/resources/view/pbr/overview.js +++ b/htdocs/luci-static/resources/view/pbr/overview.js @@ -108,10 +108,12 @@ return view.extend({ text ); o.value("none", _("Disabled")); + o.default = "none"; if (reply.platform.dnsmasq_nftset_support) { o.value("dnsmasq.nftset", _("Dnsmasq nft set")); o.default = "dnsmasq.nftset"; } + o.rmempty = false; o = s.taboption( "tab_basic", @@ -198,8 +200,7 @@ return view.extend({ } o.datatype = "network"; o.default = "wan"; - o.rmempty = true; - o.forcewrite = true; + o.rmempty = false; o = s.taboption( "tab_advanced", @@ -218,8 +219,7 @@ return view.extend({ } o.datatype = "network"; o.default = "wan6"; - o.rmempty = true; - o.forcewrite = true; + o.rmempty = false; o.depends("ipv6_enabled", "1"); o = s.taboption( From 943647d5645cfb9d9ba6a5529f5233f99f9f9039 Mon Sep 17 00:00:00 2001 From: Erik Conijn Date: Mon, 10 Aug 2026 07:49:59 +0200 Subject: [PATCH 185/185] luci-app-pbr-1.2.3: keep resolver_set when nft set support is undetected The resolver_set select only offers the dnsmasq.nftset choice when reply.platform.dnsmasq_nftset_support is true. That flag comes from files/lib/pbr/platform.uc, which leaves dnsmasq_nftset_supported at false unless dnsmasq is installed and its compile-time options can be probed, so detection fails transiently on a device where dnsmasq is missing, has just been removed, or is not yet running when the page loads. In that state the stored value is not among the choices. UISelect.render() marks an