From 3a72ec966161f59fe829195361b99d699f392b24 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 23 Sep 2026 12:10:28 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=B8=20Sync=202026-09-23=2012:10:28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- luci-app-fwlive/Makefile | 2 +- luci-app-fwlive/README.md | 2 +- .../htdocs/luci-static/resources/fwlive/log.js | 4 ++-- luci-app-fwlive/root/usr/libexec/fwlive-logging.sh | 6 ++++++ luci-app-fwlive/root/usr/libexec/rpcd/fwlive | 8 +++++++- luci-theme-argon/Makefile | 2 +- luci-theme-argon/htdocs/luci-static/argon/css/cascade.css | 2 +- .../ucode/template/themes/argon/footer_login.ut | 6 ++++++ 8 files changed, 25 insertions(+), 7 deletions(-) diff --git a/luci-app-fwlive/Makefile b/luci-app-fwlive/Makefile index 126bb4de7..99e388620 100644 --- a/luci-app-fwlive/Makefile +++ b/luci-app-fwlive/Makefile @@ -12,7 +12,7 @@ LUCI_DEPENDS:=+luci-base +logd +jsonfilter LUCI_PKGARCH:=all PKG_VERSION:=0.1.45 -PKG_RELEASE:=33 +PKG_RELEASE:=34 # Reproducible build: honor SOURCE_DATE_EPOCH from the build environment (set by docker-sdk.sh / CI). ifdef SOURCE_DATE_EPOCH diff --git a/luci-app-fwlive/README.md b/luci-app-fwlive/README.md index 7697cc602..7e2d08a33 100644 --- a/luci-app-fwlive/README.md +++ b/luci-app-fwlive/README.md @@ -25,7 +25,7 @@ LuCI **Firewall Live View** — client-side JS view polling `ubus fwlive poll` ( | `root/usr/share/rpcd/acl.d/*.json` | ubus ACL (read + write for logging enable/disable) | | `root/usr/libexec/rpcd/fwlive` | rpcd plugin (`rules`, `poll`, `resolve`, `logging_status`, `enable_wan_logging`, `disable_wan_logging`) | | `root/usr/libexec/fwlive-logging.sh` | WAN zone logging helpers | -| `/etc/fwlive/wan-log-baseline` | Written on first **Enable logging**; restored on uninstall (`prerm`) | +| `/etc/fwlive/wan-log-baseline` | Written on first **Enable logging**; restored on uninstall (`prerm`). Disable of a pre-existing/foreign log bit is not snapshotted, so uninstall will not restore that bit. | | `root/usr/libexec/fwlive-log-filter.sh` | Server-side firewall-only filter (`isFirewallEvent` parity) | | `root/usr/libexec/fwlive-is-firewall-event.sh` | Shared filter logic (sourced by filter + tests) | | `po/templates/luci-app-fwlive.pot` | i18n template (English msgid scaffolding) | diff --git a/luci-app-fwlive/htdocs/luci-static/resources/fwlive/log.js b/luci-app-fwlive/htdocs/luci-static/resources/fwlive/log.js index 20d5df04c..4edef030f 100644 --- a/luci-app-fwlive/htdocs/luci-static/resources/fwlive/log.js +++ b/luci-app-fwlive/htdocs/luci-static/resources/fwlive/log.js @@ -333,8 +333,8 @@ return baseclass.extend({ /* @fwlive-codegen:luci-preserve-end */ isFirewallEvent: function (entry) { - const msg = this.normalizeNetfilterMessage((entry && entry.msg) || ''); - if (!msg.trim()) return false; + const msg = this.normalizeNetfilterMessage((entry && entry.msg) || '').trim(); + if (!msg) return false; if (this.NON_FIREWALL_PREFIX.test(msg)) return false; diff --git a/luci-app-fwlive/root/usr/libexec/fwlive-logging.sh b/luci-app-fwlive/root/usr/libexec/fwlive-logging.sh index 15f7d5a55..421a2bf32 100755 --- a/luci-app-fwlive/root/usr/libexec/fwlive-logging.sh +++ b/luci-app-fwlive/root/usr/libexec/fwlive-logging.sh @@ -388,6 +388,8 @@ wan_log_baseline_path() { # Snapshot firewall..log once before the first enable changes UCI. # Empty file means the option was unset. Skipped when baseline already exists. +# Disable does not snapshot: a pre-existing/foreign log bit is an operator +# request to turn logging off; uninstall must not put that bit back. maybe_snapshot_wan_log_baseline() { zone="$1" path="$(wan_log_baseline_path)" @@ -964,6 +966,10 @@ disable_wan_logging() { return 0 fi + # Enable-only baseline: do not snapshot here. A pre-existing/foreign + # log bit is an operator request to turn logging off; uninstall must + # not restore that bit. + target=$(wan_filter_log_clear_value "$current") if ! commit_wan_log_change "$zone" "$zone_json" "$target"; then release_wan_log_lock diff --git a/luci-app-fwlive/root/usr/libexec/rpcd/fwlive b/luci-app-fwlive/root/usr/libexec/rpcd/fwlive index 7af34d3d8..ed0e0953b 100755 --- a/luci-app-fwlive/root/usr/libexec/rpcd/fwlive +++ b/luci-app-fwlive/root/usr/libexec/rpcd/fwlive @@ -583,8 +583,14 @@ resolve_addresses() { eval "$_json_code" || exit 1 if ! json_select addresses 2>/dev/null; then exit 0; fi idx=1 + # json_get_type false ends the array. A non-string element is skipped + # so later strings still resolve; skipped types are not truncated. # shellcheck disable=SC2154 - while json_get_type atype "$idx" && [ "$atype" = string ]; do + while json_get_type atype "$idx"; do + if [ "$atype" != string ]; then + idx=$((idx + 1)) + continue + fi json_get_var ip "$idx" || exit 1 # Preserve JSON element boundaries in the newline transport. # Invalid addresses (including embedded newlines) never leave it. diff --git a/luci-theme-argon/Makefile b/luci-theme-argon/Makefile index 7b9d7c42f..d8459cfc4 100644 --- a/luci-theme-argon/Makefile +++ b/luci-theme-argon/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Argon Theme LUCI_DEPENDS:=+USE_APK:wget-any +!USE_APK:wget +jsonfilter PKG_VERSION:=2.4.7 -PKG_RELEASE:=16 +PKG_RELEASE:=17 CONFIG_LUCI_CSSTIDY:= diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css b/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css index c7052dbc8..47037a9ca 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css +++ b/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css @@ -734,7 +734,7 @@ select[multiple="multiple"] { } .login-page .login-container { z-index: 10; - margin: 0 auto; + margin-left: 5%; display: flex; height: 100vh; width: 26rem; diff --git a/luci-theme-argon/ucode/template/themes/argon/footer_login.ut b/luci-theme-argon/ucode/template/themes/argon/footer_login.ut index 7dd5e14fe..e82cd32d6 100644 --- a/luci-theme-argon/ucode/template/themes/argon/footer_login.ut +++ b/luci-theme-argon/ucode/template/themes/argon/footer_login.ut @@ -40,6 +40,12 @@ } } }); + const loginContainer = document.querySelector( + 'div[class="login-container"][style*="backdrop-filter: blur(0px)"]' + ); + if (loginContainer) { + loginContainer.style.margin = '0 auto'; + }