diff --git a/.claude/HISTORY.md b/.claude/HISTORY.md index deeb73e6..d1ca32b5 100644 --- a/.claude/HISTORY.md +++ b/.claude/HISTORY.md @@ -1,6 +1,46 @@ # SecuBox UI & Theme History -_Last updated: 2026-03-26 (Wiki Documentation)_ +_Last updated: 2026-03-27 (HAProxy Generate Bug Fix)_ + +0. **HAProxy Config Generation Bug Fix (2026-03-27)** + - **Root cause**: Nested `config_foreach` calls in `_generate_backend()` corrupted UCI iteration state + - **Symptoms**: Server lines appearing in wrong sections (userlist, global), backends before defaults + - **Fix in `haproxyctl`**: + - Pre-collect all server sections into temp file before iterating backends + - Removed nested `config_foreach _check_server_sections server` and `config_foreach _add_server_to_backend server` + - Server data now read from temp file using grep + while loop + - Double-buffering pattern prevents output interleaving + - **Files modified**: `package/secubox/secubox-app-haproxy/files/usr/sbin/haproxyctl` + - **Testing**: Config validates cleanly, HAProxy restarts successfully + +0. **Master-Link OpenWRT Client (2026-03-26)** + - **New package**: `luci-app-masterlink` - Mesh enrollment client for OpenWRT + - **RPCD handler** (`/usr/libexec/rpcd/luci.masterlink`): + - `status`: Current mesh membership (enabled, role, master_ip, fingerprint) + - `join`: Join mesh with master_ip and token + - `leave`: Leave current mesh + - `info`: Local node info (fingerprint, hostname, IP, model) + - `verify`: Verify master before joining + - **CLI tool** (`/usr/bin/sbx-mesh-join`): + - Supports URL parsing: `sbx-mesh-join 'http://ip:7331/master-link/?token=xxx'` + - Supports direct args: `sbx-mesh-join 192.168.1.1 abc123token` + - Auto-generates node fingerprint from MAC address + - Saves config to UCI on success + - **LuCI interface** (`/view/masterlink/join.js`): + - Status display (connected/pending/disconnected) + - Invite URL/token input with Verify and Join buttons + - Leave mesh button when connected + - CLI help section + - **UCI config** (`/etc/config/masterlink`): + - Settings: enabled, role, status, master_ip, master_fingerprint, depth, joined_at + - **Files created**: Makefile, RPCD handler, menu.json, ACL, JS view, CLI tool, UCI config + +0. **LuCI Screenshot Capture (2026-03-26)** + - **Puppeteer script** (`scripts/screenshot-capture.js`) for automated LuCI screenshots + - Form-based authentication with temporary password + - Captures 92 modules to `docs/screenshots/router/` + - Screenshots show actual module content (varying file sizes 55KB-203KB) + - Support for single module or full capture 0. **Comprehensive Wiki Documentation (2026-03-26)** - **Wiki structure** created at `docs/wiki/`: diff --git a/docs/screenshots/router/admin.png b/docs/screenshots/router/admin.png new file mode 100644 index 00000000..d5bed948 Binary files /dev/null and b/docs/screenshots/router/admin.png differ diff --git a/docs/screenshots/router/ai-gateway.png b/docs/screenshots/router/ai-gateway.png new file mode 100644 index 00000000..7d007994 Binary files /dev/null and b/docs/screenshots/router/ai-gateway.png differ diff --git a/docs/screenshots/router/ai-insights.png b/docs/screenshots/router/ai-insights.png new file mode 100644 index 00000000..b324db37 Binary files /dev/null and b/docs/screenshots/router/ai-insights.png differ diff --git a/docs/screenshots/router/anomaly.png b/docs/screenshots/router/anomaly.png new file mode 100644 index 00000000..bfe3fcba Binary files /dev/null and b/docs/screenshots/router/anomaly.png differ diff --git a/docs/screenshots/router/auth.png b/docs/screenshots/router/auth.png new file mode 100644 index 00000000..6a00d637 Binary files /dev/null and b/docs/screenshots/router/auth.png differ diff --git a/docs/screenshots/router/avatar-tap.png b/docs/screenshots/router/avatar-tap.png new file mode 100644 index 00000000..8ce1d46c Binary files /dev/null and b/docs/screenshots/router/avatar-tap.png differ diff --git a/docs/screenshots/router/backup.png b/docs/screenshots/router/backup.png new file mode 100644 index 00000000..0a801984 Binary files /dev/null and b/docs/screenshots/router/backup.png differ diff --git a/docs/screenshots/router/bandwidth.png b/docs/screenshots/router/bandwidth.png new file mode 100644 index 00000000..28800864 Binary files /dev/null and b/docs/screenshots/router/bandwidth.png differ diff --git a/docs/screenshots/router/cdn.png b/docs/screenshots/router/cdn.png new file mode 100644 index 00000000..4d3390cf Binary files /dev/null and b/docs/screenshots/router/cdn.png differ diff --git a/docs/screenshots/router/clients.png b/docs/screenshots/router/clients.png new file mode 100644 index 00000000..aa7db5a8 Binary files /dev/null and b/docs/screenshots/router/clients.png differ diff --git a/docs/screenshots/router/cloner.png b/docs/screenshots/router/cloner.png new file mode 100644 index 00000000..5e167789 Binary files /dev/null and b/docs/screenshots/router/cloner.png differ diff --git a/docs/screenshots/router/config-advisor.png b/docs/screenshots/router/config-advisor.png new file mode 100644 index 00000000..b3ca3cfe Binary files /dev/null and b/docs/screenshots/router/config-advisor.png differ diff --git a/docs/screenshots/router/config-vault.png b/docs/screenshots/router/config-vault.png new file mode 100644 index 00000000..1779b0f6 Binary files /dev/null and b/docs/screenshots/router/config-vault.png differ diff --git a/docs/screenshots/router/cookies.png b/docs/screenshots/router/cookies.png new file mode 100644 index 00000000..a3caa878 Binary files /dev/null and b/docs/screenshots/router/cookies.png differ diff --git a/docs/screenshots/router/crowdsec.png b/docs/screenshots/router/crowdsec.png new file mode 100644 index 00000000..ba63c250 Binary files /dev/null and b/docs/screenshots/router/crowdsec.png differ diff --git a/docs/screenshots/router/cve.png b/docs/screenshots/router/cve.png new file mode 100644 index 00000000..30a4d7e0 Binary files /dev/null and b/docs/screenshots/router/cve.png differ diff --git a/docs/screenshots/router/cyberfeed.png b/docs/screenshots/router/cyberfeed.png new file mode 100644 index 00000000..104b073f Binary files /dev/null and b/docs/screenshots/router/cyberfeed.png differ diff --git a/docs/screenshots/router/device-intel.png b/docs/screenshots/router/device-intel.png new file mode 100644 index 00000000..2679299a Binary files /dev/null and b/docs/screenshots/router/device-intel.png differ diff --git a/docs/screenshots/router/dns-provider.png b/docs/screenshots/router/dns-provider.png new file mode 100644 index 00000000..4cec32f2 Binary files /dev/null and b/docs/screenshots/router/dns-provider.png differ diff --git a/docs/screenshots/router/dns.png b/docs/screenshots/router/dns.png new file mode 100644 index 00000000..34106632 Binary files /dev/null and b/docs/screenshots/router/dns.png differ diff --git a/docs/screenshots/router/dnsguard.png b/docs/screenshots/router/dnsguard.png new file mode 100644 index 00000000..0a050b1e Binary files /dev/null and b/docs/screenshots/router/dnsguard.png differ diff --git a/docs/screenshots/router/domoticz.png b/docs/screenshots/router/domoticz.png new file mode 100644 index 00000000..adbda444 Binary files /dev/null and b/docs/screenshots/router/domoticz.png differ diff --git a/docs/screenshots/router/dpi-dual.png b/docs/screenshots/router/dpi-dual.png new file mode 100644 index 00000000..be0c4a13 Binary files /dev/null and b/docs/screenshots/router/dpi-dual.png differ diff --git a/docs/screenshots/router/dpi.png b/docs/screenshots/router/dpi.png new file mode 100644 index 00000000..697b7659 Binary files /dev/null and b/docs/screenshots/router/dpi.png differ diff --git a/docs/screenshots/router/droplet.png b/docs/screenshots/router/droplet.png new file mode 100644 index 00000000..c6814d7b Binary files /dev/null and b/docs/screenshots/router/droplet.png differ diff --git a/docs/screenshots/router/exposure.png b/docs/screenshots/router/exposure.png new file mode 100644 index 00000000..ed0b5497 Binary files /dev/null and b/docs/screenshots/router/exposure.png differ diff --git a/docs/screenshots/router/gitea.png b/docs/screenshots/router/gitea.png new file mode 100644 index 00000000..b2b88ae3 Binary files /dev/null and b/docs/screenshots/router/gitea.png differ diff --git a/docs/screenshots/router/glances.png b/docs/screenshots/router/glances.png new file mode 100644 index 00000000..593b9589 Binary files /dev/null and b/docs/screenshots/router/glances.png differ diff --git a/docs/screenshots/router/haproxy.png b/docs/screenshots/router/haproxy.png new file mode 100644 index 00000000..d47032aa Binary files /dev/null and b/docs/screenshots/router/haproxy.png differ diff --git a/docs/screenshots/router/hexo.png b/docs/screenshots/router/hexo.png new file mode 100644 index 00000000..48eb1c7d Binary files /dev/null and b/docs/screenshots/router/hexo.png differ diff --git a/docs/screenshots/router/hub.png b/docs/screenshots/router/hub.png new file mode 100644 index 00000000..bcb2cb40 Binary files /dev/null and b/docs/screenshots/router/hub.png differ diff --git a/docs/screenshots/router/interceptor.png b/docs/screenshots/router/interceptor.png new file mode 100644 index 00000000..cbe1c02d Binary files /dev/null and b/docs/screenshots/router/interceptor.png differ diff --git a/docs/screenshots/router/iot.png b/docs/screenshots/router/iot.png new file mode 100644 index 00000000..4f0aee3f Binary files /dev/null and b/docs/screenshots/router/iot.png differ diff --git a/docs/screenshots/router/ipblocklist.png b/docs/screenshots/router/ipblocklist.png new file mode 100644 index 00000000..ff6d2d4e Binary files /dev/null and b/docs/screenshots/router/ipblocklist.png differ diff --git a/docs/screenshots/router/jabber.png b/docs/screenshots/router/jabber.png new file mode 100644 index 00000000..f3236656 Binary files /dev/null and b/docs/screenshots/router/jabber.png differ diff --git a/docs/screenshots/router/jellyfin.png b/docs/screenshots/router/jellyfin.png new file mode 100644 index 00000000..225a2341 Binary files /dev/null and b/docs/screenshots/router/jellyfin.png differ diff --git a/docs/screenshots/router/jitsi.png b/docs/screenshots/router/jitsi.png new file mode 100644 index 00000000..117a1d9d Binary files /dev/null and b/docs/screenshots/router/jitsi.png differ diff --git a/docs/screenshots/router/lan-flows.png b/docs/screenshots/router/lan-flows.png new file mode 100644 index 00000000..fe114de5 Binary files /dev/null and b/docs/screenshots/router/lan-flows.png differ diff --git a/docs/screenshots/router/localai.png b/docs/screenshots/router/localai.png new file mode 100644 index 00000000..d8831799 Binary files /dev/null and b/docs/screenshots/router/localai.png differ diff --git a/docs/screenshots/router/localrecall.png b/docs/screenshots/router/localrecall.png new file mode 100644 index 00000000..1a94cc37 Binary files /dev/null and b/docs/screenshots/router/localrecall.png differ diff --git a/docs/screenshots/router/login.png b/docs/screenshots/router/login.png new file mode 100644 index 00000000..2f2311d2 Binary files /dev/null and b/docs/screenshots/router/login.png differ diff --git a/docs/screenshots/router/lyrion.png b/docs/screenshots/router/lyrion.png new file mode 100644 index 00000000..70e62cb4 Binary files /dev/null and b/docs/screenshots/router/lyrion.png differ diff --git a/docs/screenshots/router/mac.png b/docs/screenshots/router/mac.png new file mode 100644 index 00000000..c1d3930c Binary files /dev/null and b/docs/screenshots/router/mac.png differ diff --git a/docs/screenshots/router/magicmirror.png b/docs/screenshots/router/magicmirror.png new file mode 100644 index 00000000..ee429c6d Binary files /dev/null and b/docs/screenshots/router/magicmirror.png differ diff --git a/docs/screenshots/router/mailserver.png b/docs/screenshots/router/mailserver.png new file mode 100644 index 00000000..1df198dc Binary files /dev/null and b/docs/screenshots/router/mailserver.png differ diff --git a/docs/screenshots/router/master-link.png b/docs/screenshots/router/master-link.png new file mode 100644 index 00000000..10d090eb Binary files /dev/null and b/docs/screenshots/router/master-link.png differ diff --git a/docs/screenshots/router/matrix.png b/docs/screenshots/router/matrix.png new file mode 100644 index 00000000..006e27e1 Binary files /dev/null and b/docs/screenshots/router/matrix.png differ diff --git a/docs/screenshots/router/mediaflow.png b/docs/screenshots/router/mediaflow.png new file mode 100644 index 00000000..c77aea5f Binary files /dev/null and b/docs/screenshots/router/mediaflow.png differ diff --git a/docs/screenshots/router/mesh.png b/docs/screenshots/router/mesh.png new file mode 100644 index 00000000..fc660a70 Binary files /dev/null and b/docs/screenshots/router/mesh.png differ diff --git a/docs/screenshots/router/meshname.png b/docs/screenshots/router/meshname.png new file mode 100644 index 00000000..705afce2 Binary files /dev/null and b/docs/screenshots/router/meshname.png differ diff --git a/docs/screenshots/router/metablogizer.png b/docs/screenshots/router/metablogizer.png new file mode 100644 index 00000000..7b51cecb Binary files /dev/null and b/docs/screenshots/router/metablogizer.png differ diff --git a/docs/screenshots/router/metacatalog.png b/docs/screenshots/router/metacatalog.png new file mode 100644 index 00000000..b3ea4585 Binary files /dev/null and b/docs/screenshots/router/metacatalog.png differ diff --git a/docs/screenshots/router/metrics.png b/docs/screenshots/router/metrics.png new file mode 100644 index 00000000..88f3acdd Binary files /dev/null and b/docs/screenshots/router/metrics.png differ diff --git a/docs/screenshots/router/mirror.png b/docs/screenshots/router/mirror.png new file mode 100644 index 00000000..5b6adef6 Binary files /dev/null and b/docs/screenshots/router/mirror.png differ diff --git a/docs/screenshots/router/mqtt.png b/docs/screenshots/router/mqtt.png new file mode 100644 index 00000000..e5337e91 Binary files /dev/null and b/docs/screenshots/router/mqtt.png differ diff --git a/docs/screenshots/router/netdata.png b/docs/screenshots/router/netdata.png new file mode 100644 index 00000000..411c26de Binary files /dev/null and b/docs/screenshots/router/netdata.png differ diff --git a/docs/screenshots/router/netdiag.png b/docs/screenshots/router/netdiag.png new file mode 100644 index 00000000..770963b6 Binary files /dev/null and b/docs/screenshots/router/netdiag.png differ diff --git a/docs/screenshots/router/netmodes.png b/docs/screenshots/router/netmodes.png new file mode 100644 index 00000000..785ebf2e Binary files /dev/null and b/docs/screenshots/router/netmodes.png differ diff --git a/docs/screenshots/router/nextcloud.png b/docs/screenshots/router/nextcloud.png new file mode 100644 index 00000000..0267084b Binary files /dev/null and b/docs/screenshots/router/nextcloud.png differ diff --git a/docs/screenshots/router/ollama.png b/docs/screenshots/router/ollama.png new file mode 100644 index 00000000..a7a61c72 Binary files /dev/null and b/docs/screenshots/router/ollama.png differ diff --git a/docs/screenshots/router/p2p.png b/docs/screenshots/router/p2p.png new file mode 100644 index 00000000..b35de0e4 Binary files /dev/null and b/docs/screenshots/router/p2p.png differ diff --git a/docs/screenshots/router/peertube.png b/docs/screenshots/router/peertube.png new file mode 100644 index 00000000..26d4a30b Binary files /dev/null and b/docs/screenshots/router/peertube.png differ diff --git a/docs/screenshots/router/photoprism.png b/docs/screenshots/router/photoprism.png new file mode 100644 index 00000000..911a1ce8 Binary files /dev/null and b/docs/screenshots/router/photoprism.png differ diff --git a/docs/screenshots/router/portal.png b/docs/screenshots/router/portal.png new file mode 100644 index 00000000..13b1434b Binary files /dev/null and b/docs/screenshots/router/portal.png differ diff --git a/docs/screenshots/router/reporter.png b/docs/screenshots/router/reporter.png new file mode 100644 index 00000000..b7e6f59e Binary files /dev/null and b/docs/screenshots/router/reporter.png differ diff --git a/docs/screenshots/router/rezapp.png b/docs/screenshots/router/rezapp.png new file mode 100644 index 00000000..af70db78 Binary files /dev/null and b/docs/screenshots/router/rezapp.png differ diff --git a/docs/screenshots/router/routes.png b/docs/screenshots/router/routes.png new file mode 100644 index 00000000..62e418bc Binary files /dev/null and b/docs/screenshots/router/routes.png differ diff --git a/docs/screenshots/router/rtty.png b/docs/screenshots/router/rtty.png new file mode 100644 index 00000000..585e4d78 Binary files /dev/null and b/docs/screenshots/router/rtty.png differ diff --git a/docs/screenshots/router/settings.png b/docs/screenshots/router/settings.png new file mode 100644 index 00000000..1eb763fc Binary files /dev/null and b/docs/screenshots/router/settings.png differ diff --git a/docs/screenshots/router/simplex.png b/docs/screenshots/router/simplex.png new file mode 100644 index 00000000..d3eea55e Binary files /dev/null and b/docs/screenshots/router/simplex.png differ diff --git a/docs/screenshots/router/smtp.png b/docs/screenshots/router/smtp.png new file mode 100644 index 00000000..2b928950 Binary files /dev/null and b/docs/screenshots/router/smtp.png differ diff --git a/docs/screenshots/router/streamforge.png b/docs/screenshots/router/streamforge.png new file mode 100644 index 00000000..f9c59452 Binary files /dev/null and b/docs/screenshots/router/streamforge.png differ diff --git a/docs/screenshots/router/streamlit.png b/docs/screenshots/router/streamlit.png new file mode 100644 index 00000000..ecc48c83 Binary files /dev/null and b/docs/screenshots/router/streamlit.png differ diff --git a/docs/screenshots/router/theme.png b/docs/screenshots/router/theme.png new file mode 100644 index 00000000..6b806613 Binary files /dev/null and b/docs/screenshots/router/theme.png differ diff --git a/docs/screenshots/router/threat-analyst.png b/docs/screenshots/router/threat-analyst.png new file mode 100644 index 00000000..98aa96fb Binary files /dev/null and b/docs/screenshots/router/threat-analyst.png differ diff --git a/docs/screenshots/router/threats.png b/docs/screenshots/router/threats.png new file mode 100644 index 00000000..9cd94e12 Binary files /dev/null and b/docs/screenshots/router/threats.png differ diff --git a/docs/screenshots/router/tor-services.png b/docs/screenshots/router/tor-services.png new file mode 100644 index 00000000..2a016475 Binary files /dev/null and b/docs/screenshots/router/tor-services.png differ diff --git a/docs/screenshots/router/tor.png b/docs/screenshots/router/tor.png new file mode 100644 index 00000000..2e78ce0a Binary files /dev/null and b/docs/screenshots/router/tor.png differ diff --git a/docs/screenshots/router/torrent.png b/docs/screenshots/router/torrent.png new file mode 100644 index 00000000..06f6ae8d Binary files /dev/null and b/docs/screenshots/router/torrent.png differ diff --git a/docs/screenshots/router/traffic.png b/docs/screenshots/router/traffic.png new file mode 100644 index 00000000..c329023a Binary files /dev/null and b/docs/screenshots/router/traffic.png differ diff --git a/docs/screenshots/router/turn.png b/docs/screenshots/router/turn.png new file mode 100644 index 00000000..e4ecb1a2 Binary files /dev/null and b/docs/screenshots/router/turn.png differ diff --git a/docs/screenshots/router/tweaks.png b/docs/screenshots/router/tweaks.png new file mode 100644 index 00000000..1320cd33 Binary files /dev/null and b/docs/screenshots/router/tweaks.png differ diff --git a/docs/screenshots/router/users.png b/docs/screenshots/router/users.png new file mode 100644 index 00000000..5f9fac89 Binary files /dev/null and b/docs/screenshots/router/users.png differ diff --git a/docs/screenshots/router/vhost.png b/docs/screenshots/router/vhost.png new file mode 100644 index 00000000..22bdea62 Binary files /dev/null and b/docs/screenshots/router/vhost.png differ diff --git a/docs/screenshots/router/voip.png b/docs/screenshots/router/voip.png new file mode 100644 index 00000000..ad09a37e Binary files /dev/null and b/docs/screenshots/router/voip.png differ diff --git a/docs/screenshots/router/vortex-dns.png b/docs/screenshots/router/vortex-dns.png new file mode 100644 index 00000000..b6f86b89 Binary files /dev/null and b/docs/screenshots/router/vortex-dns.png differ diff --git a/docs/screenshots/router/waf.png b/docs/screenshots/router/waf.png new file mode 100644 index 00000000..9bc6dbe4 Binary files /dev/null and b/docs/screenshots/router/waf.png differ diff --git a/docs/screenshots/router/watchdog.png b/docs/screenshots/router/watchdog.png new file mode 100644 index 00000000..5bb69283 Binary files /dev/null and b/docs/screenshots/router/watchdog.png differ diff --git a/docs/screenshots/router/webradio.png b/docs/screenshots/router/webradio.png new file mode 100644 index 00000000..0c6370b7 Binary files /dev/null and b/docs/screenshots/router/webradio.png differ diff --git a/docs/screenshots/router/wireguard.png b/docs/screenshots/router/wireguard.png new file mode 100644 index 00000000..91862dce Binary files /dev/null and b/docs/screenshots/router/wireguard.png differ diff --git a/docs/screenshots/router/zigbee.png b/docs/screenshots/router/zigbee.png new file mode 100644 index 00000000..9ac67f32 Binary files /dev/null and b/docs/screenshots/router/zigbee.png differ diff --git a/docs/screenshots/router/zkp.png b/docs/screenshots/router/zkp.png new file mode 100644 index 00000000..02fcf62a Binary files /dev/null and b/docs/screenshots/router/zkp.png differ