mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-26 22:22:52 +08:00
luci-app-fwlive
LuCI Firewall Live View — client-side JS view polling ubus fwlive poll (firewall-only log lines), with rule labels via fwlive rules, optional reverse DNS via fwlive resolve, and opt-in WAN zone logging via enable_wan_logging / disable_wan_logging.
Package layout (OpenWrt / LuCI conventions)
| Path | Role |
|---|---|
Makefile |
LUCI_TITLE, LUCI_DEPENDS, includes luci.mk |
htdocs/luci-static/resources/view/status/fwlive.js |
LuCI view (view.extend) |
htdocs/luci-static/resources/fwlive/log.js |
Parser/filter module (mirror of repo core/fwlive-log.js) |
htdocs/luci-static/resources/fwlive/proto.js |
Protocol filter pair (select + custom field; typed custom wins) |
htdocs/luci-static/resources/fwlive/constants.js |
Shared view constants (baseclass.extend module) |
htdocs/luci-static/resources/fwlive/css.js |
Inline stylesheet string (styleText for E('style', …)) |
htdocs/luci-static/resources/fwlive/tint.js |
Row-tint paint helpers (baseclass.extend module) |
htdocs/luci-static/resources/fwlive/links.js |
Link-builder helpers (pure + filter-aware; no host) |
htdocs/luci-static/resources/fwlive/chips.js |
Filter-chip DOM renderer (renderFilterChips) |
htdocs/luci-static/resources/fwlive/logging.js |
Logging toolbar and empty-state DOM renderers |
htdocs/luci-static/resources/fwlive/table.js |
Table thead/rows DOM renderer (renderThead, renderRows) |
htdocs/luci-static/resources/fwlive/buffer.js |
Ring-buffer apply/merge helpers (pause ingest + resume merge) |
htdocs/luci-static/resources/fwlive/poll-coordinator.js |
Request coalescing, visibility, cadence, and disposal |
htdocs/luci-static/resources/fwlive/render-policy.js |
Pure weak-device display-cap and render-cost decisions |
htdocs/luci-static/resources/fwlive/render-scheduler.js |
Epoch-safe frame coalescing and render token-bucket state |
htdocs/luci-static/resources/fwlive/hostname.js |
Hostname cache LRU + failure TTL helpers |
root/usr/share/luci/menu.d/*.json |
Menu entry (admin/status/fwlive) |
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-adaptive-cap.sh |
Layer 1 adaptive poll cap (sourced by rpcd/fwlive) |
root/usr/libexec/fwlive-logging.sh |
WAN zone logging helpers |
root/lib/upgrade/keep.d/luci-app-fwlive |
Keep /etc/fwlive/ across sysupgrade |
/etc/fwlive/wan-log-baseline |
Written on first Enable logging (and best-effort on already-on enable); prerm restores it on uninstall. Restore is skipped (file kept; fwlive syslog only) when there is no WAN zone, the lock is unavailable, firewall changes are pending, the commit does not verify, reload fails, or the value after reload does not match the baseline. 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) |
root/usr/libexec/fwlive-is-firewall-event.awk |
Generated standalone classifier from CLASSIFY_SPEC; loaded by fwlive-is-firewall-event.sh |
po/templates/luci-app-fwlive.pot |
i18n template (English msgid scaffolding) |
No luasrc/ — modern JS-only app.
Dependencies
luci-base,logd,jsonfilter,coreutils-timeout(declared inLUCI_DEPENDS;rpcdvialuci-base)- Optional reverse DNS uses BusyBox
nslookup(stock image; not a package depend) - No hard
firewall4dependency - Menu depends on ACL only (no
fsAND ofnft+iptables— that hid the entry on stock fw3 and fw4) - Runtime backend detection selects fw4/nft on supported 23.05+ images; log lines tagged iptables still classify. OpenWrt 21.02 / 22.03 are unsupported
Maintenance
The development home is lucas-albers-lz4/fwlive.
The copy in openwrt/luci is a snapshot.
For which tree wins, when we re-cut, generated files, and why we do not use PKG_SOURCE, see
Maintenance model.
Documentation
- Users:
../../docs/user/installation.md - Developers:
../../docs/developer/README.md