diff --git a/.claude/HISTORY.md b/.claude/HISTORY.md index ce55cf05..1fcc7447 100644 --- a/.claude/HISTORY.md +++ b/.claude/HISTORY.md @@ -1,6 +1,6 @@ # SecuBox UI & Theme History -_Last updated: 2026-02-28_ +_Last updated: 2026-02-28 (HAProxy Portal 503 Fix)_ 1. **Unified Dashboard Refresh (2025-12-20)** - Dashboard received the "sh-page-header" layout, hero stats, and SecuNav top tabs. @@ -3932,3 +3932,65 @@ git checkout HEAD -- index.html - Federation enabled with trusted servers (matrix.org) - Registration via token: `n5MCOgUH9bmfM7I5uCWfA` - E2E cross-signing supported + +54. **Yggdrasil Extended Peer Discovery (2026-02-28)** + - **Feature:** Automatic peer discovery and trust-verified auto-peering for Yggdrasil mesh + - **New Package:** `secubox-app-yggdrasil-discovery` + - **CLI Tool:** `yggctl` with 15+ commands: + - `yggctl self` - Show node's Yggdrasil info (IPv6, pubkey, hostname) + - `yggctl peers` - Show current Yggdrasil peers + - `yggctl announce` - Announce node to mesh via gossip + - `yggctl discover` - List discovered SecuBox nodes + - `yggctl auto-connect` - Connect to trusted discovered peers + - `yggctl bootstrap {list|add|remove|connect}` - Manage bootstrap peers + - `yggctl status` - Show discovery status and stats + - `yggctl enable/disable` - Toggle auto-discovery + - **Gossip Integration:** + - Added `yggdrasil_peer` message type to mirrornet gossip protocol + - `gossip_announce_yggdrasil()` helper function + - Gossip handler at `/usr/lib/yggdrasil-discovery/gossip-handler.sh` + - **Trust Verification:** + - Master-link fingerprint verification for auto-peering + - ZKP fingerprint support + - Reputation score threshold (default: 50) + - Configurable via `require_trust` and `min_trust_score` options + - **Auto-Peering:** + - Automatic connection to trusted discovered peers + - Yggdrasil IPv6 range validation (200::/7) + - Duplicate peer prevention + - **UCI Configuration:** + - `yggdrasil-discovery.main` - enabled, auto_announce, auto_peer, require_trust + - `yggdrasil-discovery.bootstrap` - list of bootstrap peer URIs + - **Daemon:** + - Periodic announcement daemon (`daemon.sh`) + - Configurable announce interval (default: 300s) + +55. **Tor Shield opkg Bug Fix (2026-02-28)** + - **Root Cause:** DNS queries for package repositories went through Tor DNS, which is slow/unreliable + - **Symptom:** `opkg update` failed with "wget returned 4" when Tor Shield was active + - **Fix:** Added dnsmasq bypass for excluded domains + - **Implementation:** + - `setup_dnsmasq_bypass()` generates `/tmp/dnsmasq.d/tor-shield-bypass.conf` + - Excluded domains resolve directly via upstream DNS (WAN DNS or fallback to 1.1.1.1) + - `cleanup_dnsmasq_bypass()` removes config on Tor Shield stop + - **Default Exclusions:** + - OpenWrt repos: `downloads.openwrt.org`, `openwrt.org`, `mirror.leaseweb.com` + - NTP servers: `pool.ntp.org`, `time.google.com`, `time.cloudflare.com` + - Let's Encrypt ACME: `acme-v02.api.letsencrypt.org` + - DNS provider APIs: `api.gandi.net`, `api.ovh.com`, `api.cloudflare.com` + - Security feeds: `services.nvd.nist.gov`, `cve.mitre.org` + - Two-level bypass: dnsmasq (DNS resolution) + iptables (traffic routing) + +56. **HAProxy Portal 503 Fix (2026-02-28)** + - **Root Cause:** Vhost for `192.168.255.1` had malformed backend: `backend='--backend'` + - **Symptom:** Portal returned "503 End of Internet" when accessing `https://192.168.255.1` + - **Investigation:** + - LuCI worked directly on port 8081, HAProxy container was stopped + - Container exit logs showed: `unable to find required use_backend: '--backend'` + - The `haproxyctl vhost add` command parsing incorrectly captured `--backend` as literal value + - **Fix:** + - Corrected UCI: `uci set haproxy.vhost_192_168_255_1.backend='luci_default'` + - Disabled ACME (certs can't be issued for IP addresses): `acme='0'` + - Regenerated HAProxy config: `haproxyctl generate` + - Restarted container: `lxc-start -n haproxy` + - Portal now returns 200 and redirects to LuCI diff --git a/.claude/TODO.md b/.claude/TODO.md index ec514dc9..a372c6e9 100644 --- a/.claude/TODO.md +++ b/.claude/TODO.md @@ -196,7 +196,7 @@ All cloud providers are **opt-in**. Offline resilience: local tier always active - [x] Yggdrasil overlay — Done 2026-02-26 (bidirectional IPv6, SSH, LAN multicast discovery) - [x] Meshname DNS — Done 2026-02-28 (decentralized .ygg resolution via gossip + dnsmasq) -- [ ] Extended peer discovery +- [x] Extended peer discovery — Done 2026-02-28 (yggctl CLI, gossip-based peer announcements, trust-verified auto-peering) ### Certifications Ciblees @@ -215,11 +215,13 @@ All cloud providers are **opt-in**. Offline resilience: local tier always active ## Deferred / Backlog -### Tor Shield / opkg Bug +### ~~Tor Shield / opkg Bug~~ — RESOLVED (2026-02-28) -- opkg downloads fail (`wget returned 4`) when Tor Shield is active. -- Direct `wget` to full URL works — likely DNS/routing interference. -- Investigate: opkg proxy settings, Tor split-routing exclusions for package repos. +- ~~opkg downloads fail (`wget returned 4`) when Tor Shield is active.~~ +- **Root cause**: DNS queries for package repos went through Tor DNS, which is slow/unreliable +- **Fix**: Added dnsmasq bypass for excluded domains (`/tmp/dnsmasq.d/tor-shield-bypass.conf`) +- Excluded domains now resolve directly via upstream DNS, bypassing Tor +- Default exclusions include: openwrt.org, pool.ntp.org, letsencrypt.org, DNS provider APIs ### v2 Long-term diff --git a/.claude/WIP.md b/.claude/WIP.md index 0205bd3d..0779eee6 100644 --- a/.claude/WIP.md +++ b/.claude/WIP.md @@ -1,6 +1,6 @@ # Work In Progress (Claude) -_Last updated: 2026-02-25 (Factory Dashboard LuCI)_ +_Last updated: 2026-02-28 (HAProxy Portal Fix)_ > **Architecture Reference**: SecuBox Fanzine v3 — Les 4 Couches @@ -62,6 +62,39 @@ _Last updated: 2026-02-25 (Factory Dashboard LuCI)_ - Gossip-based exposure config sync via secubox-p2p - Created `luci-app-vortex-dns` dashboard +### Just Completed (2026-02-28) + +- **Yggdrasil Extended Peer Discovery** — DONE (2026-02-28) + - Created `secubox-app-yggdrasil-discovery` package for mesh peer discovery + - **yggctl CLI** with commands: status, self, peers, announce, discover, bootstrap + - Gossip protocol integration via mirrornet `yggdrasil_peer` message type + - Auto-peering with trust verification (master-link fingerprint) + - Daemon for periodic announcements (configurable interval) + - UCI config: enabled, auto_announce, announce_interval, auto_peer, require_trust, min_trust_score + - Bootstrap peers list for initial network connectivity + - Tested on C3BOX: yggctl showing correct IPv6 and peer stats + - Files: Makefile, init script, UCI config, core.sh, daemon.sh, gossip-handler.sh, yggctl CLI + - Completes v1.1+ Extended Mesh roadmap (all 3 items done) + +- **tdahbdss Routing Fix** — DONE (2026-02-28) + - AdGuard Home hijacked port 8989 (MetaBlogizer's port) + - Changed AdGuard config from port 8989 to 3000 + - MetaBlogizer routes restored + +- **Tor Shield opkg Bug Fix** — DONE (2026-02-28) + - Root cause: DNS queries for package repos went through Tor DNS (slow/unreliable) + - Fix: Added dnsmasq bypass for excluded domains + - `setup_dnsmasq_bypass()` generates `/tmp/dnsmasq.d/tor-shield-bypass.conf` + - Excluded domains resolve directly via upstream DNS, bypassing Tor + - Default exclusions: openwrt.org, pool.ntp.org, letsencrypt.org, DNS provider APIs + - `cleanup_dnsmasq_bypass()` removes config on Tor Shield stop + +- **HAProxy Portal 503 Fix** — DONE (2026-02-28) + - Root cause: Vhost for 192.168.255.1 had malformed backend: `backend='--backend'` + - Container exit: `unable to find required use_backend: '--backend'` + - Fix: Corrected UCI to `backend='luci_default'`, disabled ACME, regenerated config + - Portal now returns 200 and redirects to LuCI + ### Just Completed (2026-02-27) - **OpenClaw AI Assistant LuCI Package** — DONE (2026-02-27) @@ -1088,14 +1121,24 @@ Implementing 3 evolutions inspired by SysWarden patterns: ### Next Up — Couche 1 +**v1.1+ Extended Mesh — COMPLETE (2026-02-28)** + 1. ~~**Multi-Node Mesh Testing**~~ — DONE (2026-02-26) - - ~~Deploy second SecuBox node to test real peer-to-peer sync~~ - - ~~Validate bidirectional threat intelligence sharing~~ - ZKP, blockchain sync, and threat intel propagation all validated -2. **WAF Auto-Ban Tuning** (if needed) +2. ~~**Yggdrasil Extended Peer Discovery**~~ — DONE (2026-02-28) + - `secubox-app-yggdrasil-discovery` + `yggctl` CLI + - Gossip-based peer announcements, trust-verified auto-peering + +3. **WAF Auto-Ban Tuning** (optional, as-needed) - Sensitivity threshold adjustment based on production traffic +**Backlog / Deferred:** +- ~~Tor Shield / opkg bug~~ — FIXED (2026-02-28) - dnsmasq bypass for excluded domains +- Nextcloud self-hosted cloud storage (v2) +- SSMTP / mail host / MX record management (v2) +- Reverse MWAN WireGuard peers (v2) + --- ## Couche 2 — AI Gateway @@ -1285,7 +1328,7 @@ Required components: ## Known Bugs (Deferred) -- **Tor Shield / opkg conflict**: opkg downloads fail (`wget returned 4`) when Tor Shield is active. Likely DNS/routing interference. +- ~~**Tor Shield / opkg conflict**~~: FIXED (2026-02-28) - Added dnsmasq bypass for excluded domains --- diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 1ed1ed9c..2cef90b0 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -482,7 +482,10 @@ "Bash(pip show:*)", "Bash(uvx:*)", "Bash(claude mcp add:*)", - "WebFetch(domain:openclaw.ai)" + "WebFetch(domain:openclaw.ai)", + "Bash(SSH_AUTH_SOCK=/run/user/1000/keyring/ssh ssh:*)", + "Bash(unset:*)", + "Bash(SSH_ASKPASS=\"\" DISPLAY=\"\" SSH_AUTH_SOCK=/run/user/1000/keyring/ssh ssh:*)" ] } } diff --git a/package/secubox/luci-app-nextcloud/htdocs/luci-static/resources/view/nextcloud/overview.js b/package/secubox/luci-app-nextcloud/htdocs/luci-static/resources/view/nextcloud/overview.js index b77aa8fe..9971029a 100644 --- a/package/secubox/luci-app-nextcloud/htdocs/luci-static/resources/view/nextcloud/overview.js +++ b/package/secubox/luci-app-nextcloud/htdocs/luci-static/resources/view/nextcloud/overview.js @@ -69,7 +69,7 @@ var callRestore = rpc.declare({ var callListBackups = rpc.declare({ object: 'luci.nextcloud', method: 'list_backups', - expect: { backups: [] } + expect: {} }); var callSSLEnable = rpc.declare({ @@ -113,7 +113,7 @@ var callUninstall = rpc.declare({ var callListUsers = rpc.declare({ object: 'luci.nextcloud', method: 'list_users', - expect: { users: [] } + expect: {} }); var callResetPassword = rpc.declare({ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages b/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages index 2b02dbbd..05c6a2b9 100644 --- a/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages +++ b/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages @@ -23,7 +23,7 @@ Architecture: all Installed-Size: 71680 Description: Comprehensive authentication and session management with captive portal, OAuth2/OIDC integration, voucher system, and time-based access control Filename: luci-app-auth-guardian_0.4.0-r3_all.ipk -Size: 12393 +Size: 12397 Package: luci-app-backup Version: 1.0.0-r1 @@ -35,7 +35,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI Backup Manager Filename: luci-app-backup_1.0.0-r1_all.ipk -Size: 4537 +Size: 4534 Package: luci-app-bandwidth-manager Version: 0.5.0-r2 @@ -59,7 +59,7 @@ Architecture: all Installed-Size: 122880 Description: Dashboard for managing local CDN caching proxy on OpenWrt Filename: luci-app-cdn-cache_0.5.0-r3_all.ipk -Size: 24255 +Size: 24254 Package: luci-app-client-guardian Version: 0.4.0-r7 @@ -71,7 +71,7 @@ Architecture: all Installed-Size: 276480 Description: Network Access Control with client monitoring, zone management, captive portal, parental controls, and SMS/email alerts Filename: luci-app-client-guardian_0.4.0-r7_all.ipk -Size: 52685 +Size: 52686 Package: luci-app-cloner Version: 1.0.0-r1 @@ -82,7 +82,7 @@ Architecture: all Installed-Size: 102400 Description: SecuBox cloning station for building and deploying clone images Filename: luci-app-cloner_1.0.0-r1_all.ipk -Size: 19433 +Size: 19434 Package: luci-app-config-advisor Version: 1.0.0-r1 @@ -94,7 +94,7 @@ Architecture: all Installed-Size: 51200 Description: ANSSI CSPN compliance checking and security configuration advisor Filename: luci-app-config-advisor_1.0.0-r1_all.ipk -Size: 8859 +Size: 8861 Package: luci-app-cookie-tracker Version: 1.0.0-r1 @@ -105,7 +105,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI Cookie Tracker Dashboard Filename: luci-app-cookie-tracker_1.0.0-r1_all.ipk -Size: 5658 +Size: 5660 Package: luci-app-crowdsec-dashboard Version: 0.8.0-r1 @@ -117,7 +117,7 @@ Architecture: all Installed-Size: 225280 Description: Real-time security monitoring dashboard for CrowdSec on OpenWrt Filename: luci-app-crowdsec-dashboard_0.8.0-r1_all.ipk -Size: 43022 +Size: 43023 Package: luci-app-cve-triage Version: 1.0.0-r1 @@ -129,7 +129,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI CVE Triage Dashboard Filename: luci-app-cve-triage_1.0.0-r1_all.ipk -Size: 5946 +Size: 5945 Package: luci-app-cyberfeed Version: 0.1.1-r1 @@ -141,7 +141,7 @@ Architecture: all Installed-Size: 71680 Description: Cyberpunk-themed RSS feed aggregator dashboard with social media support Filename: luci-app-cyberfeed_0.1.1-r1_all.ipk -Size: 12885 +Size: 12887 Package: luci-app-device-intel Version: 1.0.0-r1 @@ -153,7 +153,7 @@ Architecture: all Installed-Size: 71680 Description: LuCI SecuBox Device Intelligence Filename: luci-app-device-intel_1.0.0-r1_all.ipk -Size: 12052 +Size: 12049 Package: luci-app-dnsguard Version: 1.1.0-r1 @@ -172,7 +172,7 @@ Description: SecuBox DNS Guard provides privacy-focused DNS management with AI- - Real-time alerts and blocklist management - Domain analysis with LocalAI integration Filename: luci-app-dnsguard_1.1.0-r1_all.ipk -Size: 12445 +Size: 12448 Package: luci-app-dns-provider Version: 1.0.0-r1 @@ -184,7 +184,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI DNS Provider Manager Filename: luci-app-dns-provider_1.0.0-r1_all.ipk -Size: 7168 +Size: 7175 Package: luci-app-domoticz Version: 1.0.0-r1 @@ -196,7 +196,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI Domoticz Home Automation Configuration Filename: luci-app-domoticz_1.0.0-r1_all.ipk -Size: 7125 +Size: 7122 Package: luci-app-exposure Version: 1.0.0-r3 @@ -208,7 +208,7 @@ Architecture: all Installed-Size: 71680 Description: LuCI SecuBox Service Exposure Manager Filename: luci-app-exposure_1.0.0-r3_all.ipk -Size: 11697 +Size: 11700 Package: luci-app-gitea Version: 1.0.0-r2 @@ -220,7 +220,7 @@ Architecture: all Installed-Size: 92160 Description: Modern dashboard for Gitea Platform management on OpenWrt Filename: luci-app-gitea_1.0.0-r2_all.ipk -Size: 16621 +Size: 16622 Package: luci-app-glances Version: 1.0.0-r2 @@ -232,7 +232,7 @@ Architecture: all Installed-Size: 51200 Description: Modern dashboard for Glances system monitoring with SecuBox theme Filename: luci-app-glances_1.0.0-r2_all.ipk -Size: 7018 +Size: 7016 Package: luci-app-gotosocial Version: 0.1.0-r1 @@ -256,7 +256,7 @@ Architecture: all Installed-Size: 225280 Description: Web interface for managing HAProxy load balancer with vhosts, SSL certificates, and backend routing Filename: luci-app-haproxy_1.0.0-r8_all.ipk -Size: 35338 +Size: 35340 Package: luci-app-hexojs Version: 1.0.0-r3 @@ -304,7 +304,7 @@ Architecture: all Installed-Size: 61440 Description: LuCI Jabber/XMPP Server (Prosody) Filename: luci-app-jabber_0_all.ipk -Size: 9307 +Size: 9308 Package: luci-app-jellyfin Version: 1.0.0-r1 @@ -316,7 +316,7 @@ Architecture: all Installed-Size: 51200 Description: LuCI Jellyfin Media Server Configuration Filename: luci-app-jellyfin_1.0.0-r1_all.ipk -Size: 10484 +Size: 10485 Package: luci-app-jitsi Version: 1.0.0-r1 @@ -328,7 +328,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI Jitsi Meet Configuration Filename: luci-app-jitsi_1.0.0-r1_all.ipk -Size: 5177 +Size: 5180 Package: luci-app-ksm-manager Version: 0.4.0-r2 @@ -340,7 +340,7 @@ Architecture: all Installed-Size: 112640 Description: Centralized cryptographic key management with hardware security module (HSM) support for Nitrokey and YubiKey devices. Provides secure key storage, certificate management, SSH key handling, and secret storage with audit logging. Filename: luci-app-ksm-manager_0.4.0-r2_all.ipk -Size: 18777 +Size: 18783 Package: luci-app-localai Version: 0.1.0-r15 @@ -352,7 +352,7 @@ Architecture: all Installed-Size: 71680 Description: Modern dashboard for LocalAI LLM management on OpenWrt Filename: luci-app-localai_0.1.0-r15_all.ipk -Size: 13318 +Size: 13321 Package: luci-app-localrecall Version: 1.0.0-r1 @@ -364,7 +364,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI LocalRecall AI Memory Dashboard Filename: luci-app-localrecall_1.0.0-r1_all.ipk -Size: 8416 +Size: 8423 Package: luci-app-lyrion Version: 1.0.0-r1 @@ -376,7 +376,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI support for Lyrion Music Server Filename: luci-app-lyrion_1.0.0-r1_all.ipk -Size: 6833 +Size: 6841 Package: luci-app-mac-guardian Version: 0.5.0-r1 @@ -388,7 +388,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI MAC Guardian - WiFi MAC Security Monitor Filename: luci-app-mac-guardian_0.5.0-r1_all.ipk -Size: 6662 +Size: 6669 Package: luci-app-magicmirror2 Version: 0.4.0-r6 @@ -400,7 +400,7 @@ Architecture: all Installed-Size: 71680 Description: Modern dashboard for MagicMirror2 smart display platform with module manager and SecuBox theme Filename: luci-app-magicmirror2_0.4.0-r6_all.ipk -Size: 12360 +Size: 12361 Package: luci-app-mailinabox Version: 1.0.0-r1 @@ -412,7 +412,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI support for Mail-in-a-Box Filename: luci-app-mailinabox_1.0.0-r1_all.ipk -Size: 5482 +Size: 5483 Package: luci-app-mailserver Version: 1.0.0-r1 @@ -436,7 +436,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI SecuBox Master-Link Mesh Management Filename: luci-app-master-link_1.0.0-r1_all.ipk -Size: 6305 +Size: 6306 Package: luci-app-matrix Version: 1.0.0-r1 @@ -448,7 +448,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI Matrix Homeserver Dashboard Filename: luci-app-matrix_1.0.0-r1_all.ipk -Size: 7525 +Size: 7527 Package: luci-app-media-flow Version: 0.6.4-r1 @@ -460,7 +460,7 @@ Architecture: all Installed-Size: 133120 Description: Real-time detection and monitoring of streaming services (Netflix, YouTube, Spotify, etc.) with quality estimation, history tracking, and alerts. Supports nDPId local DPI and netifyd. Filename: luci-app-media-flow_0.6.4-r1_all.ipk -Size: 25380 +Size: 25382 Package: luci-app-metablogizer Version: 1.1.0-r1 @@ -484,7 +484,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI support for Metabolizer CMS Filename: luci-app-metabolizer_1.0.0-r2_all.ipk -Size: 4818 +Size: 4820 Package: luci-app-mitmproxy Version: 0.5.0-r2 @@ -496,7 +496,7 @@ Architecture: all Installed-Size: 71680 Description: Modern dashboard for mitmproxy HTTPS traffic inspection with SecuBox theme Filename: luci-app-mitmproxy_0.5.0-r2_all.ipk -Size: 13231 +Size: 13234 Package: luci-app-mmpm Version: 0.2.0-r3 @@ -508,7 +508,7 @@ Architecture: all Installed-Size: 51200 Description: Web interface for MMPM - MagicMirror Package Manager Filename: luci-app-mmpm_0.2.0-r3_all.ipk -Size: 7967 +Size: 7974 Package: luci-app-mqtt-bridge Version: 0.4.0-r4 @@ -520,7 +520,7 @@ Architecture: all Installed-Size: 122880 Description: USB-to-MQTT IoT hub with SecuBox theme Filename: luci-app-mqtt-bridge_0.4.0-r4_all.ipk -Size: 22685 +Size: 22691 Package: luci-app-ndpid Version: 1.1.2-r2 @@ -532,7 +532,7 @@ Architecture: all Installed-Size: 122880 Description: Modern dashboard for nDPId deep packet inspection on OpenWrt Filename: luci-app-ndpid_1.1.2-r2_all.ipk -Size: 21701 +Size: 21700 Package: luci-app-netdata-dashboard Version: 0.5.0-r2 @@ -544,7 +544,7 @@ Architecture: all Installed-Size: 112640 Description: Real-time system monitoring dashboard with Netdata integration for OpenWrt Filename: luci-app-netdata-dashboard_0.5.0-r2_all.ipk -Size: 20561 +Size: 20559 Package: luci-app-network-anomaly Version: 1.0.0-r1 @@ -556,7 +556,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI Network Anomaly Detection Dashboard Filename: luci-app-network-anomaly_1.0.0-r1_all.ipk -Size: 7645 +Size: 7644 Package: luci-app-network-modes Version: 0.5.0-r3 @@ -568,7 +568,7 @@ Architecture: all Installed-Size: 286720 Description: Configure OpenWrt for different network modes: Sniffer, Access Point, Relay, Router Filename: luci-app-network-modes_0.5.0-r3_all.ipk -Size: 54224 +Size: 54227 Package: luci-app-network-tweaks Version: 1.0.0-r7 @@ -580,7 +580,7 @@ Architecture: all Installed-Size: 81920 Description: Unified network services dashboard with DNS/hosts sync, CDN cache control, and WPAD auto-proxy configuration Filename: luci-app-network-tweaks_1.0.0-r7_all.ipk -Size: 15946 +Size: 15948 Package: luci-app-nextcloud Version: 1.0.0-r1 @@ -592,7 +592,7 @@ Architecture: all Installed-Size: 51200 Description: LuCI support for Nextcloud LXC Filename: luci-app-nextcloud_1.0.0-r1_all.ipk -Size: 10342 +Size: 10350 Package: luci-app-ollama Version: 0.1.0-r1 @@ -616,7 +616,7 @@ Architecture: all Installed-Size: 40960 Description: Web interface for OpenClaw personal AI with Claude/OpenAI/Ollama support Filename: luci-app-openclaw_1.0.0-r1_all.ipk -Size: 8408 +Size: 8414 Package: luci-app-peertube Version: 0 @@ -628,7 +628,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI PeerTube Video Platform Filename: luci-app-peertube_0_all.ipk -Size: 5757 +Size: 5755 Package: luci-app-picobrew Version: 1.0.0-r1 @@ -640,7 +640,7 @@ Architecture: all Installed-Size: 51200 Description: Modern dashboard for PicoBrew Server management on OpenWrt Filename: luci-app-picobrew_1.0.0-r1_all.ipk -Size: 9529 +Size: 9534 Package: luci-app-secubox Version: 0.7.1-r4 @@ -663,7 +663,7 @@ Architecture: all Installed-Size: 337920 Description: Unified admin control center for SecuBox appstore plugins with system monitoring Filename: luci-app-secubox-admin_1.0.0-r19_all.ipk -Size: 58039 +Size: 58041 Package: luci-app-secubox-crowdsec Version: 1.0.0-r3 @@ -675,7 +675,7 @@ Architecture: all Installed-Size: 81920 Description: LuCI SecuBox CrowdSec Dashboard Filename: luci-app-secubox-crowdsec_1.0.0-r3_all.ipk -Size: 13922 +Size: 13920 Package: luci-app-secubox-mirror Version: 0.1.0-r1 @@ -687,7 +687,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI MirrorNet Dashboard Filename: luci-app-secubox-mirror_0.1.0-r1_all.ipk -Size: 5849 +Size: 5850 Package: luci-app-secubox-netdiag Version: 1.0.0-r1 @@ -699,7 +699,7 @@ Architecture: all Installed-Size: 81920 Description: Real-time DSA switch port statistics, error monitoring, and network health diagnostics Filename: luci-app-secubox-netdiag_1.0.0-r1_all.ipk -Size: 15341 +Size: 15346 Package: luci-app-secubox-netifyd Version: 1.2.1-r1 @@ -711,7 +711,7 @@ Architecture: all Installed-Size: 194560 Description: Complete LuCI interface for netifyd DPI engine with real-time flow monitoring, application detection, network analytics, and flow action plugins Filename: luci-app-secubox-netifyd_1.2.1-r1_all.ipk -Size: 36718 +Size: 36721 Package: luci-app-secubox-p2p Version: 0.1.0-r1 @@ -723,7 +723,7 @@ Architecture: all Installed-Size: 245760 Description: LuCI SecuBox P2P Hub Filename: luci-app-secubox-p2p_0.1.0-r1_all.ipk -Size: 46833 +Size: 46834 Package: luci-app-secubox-portal Version: 0.7.0-r3 @@ -735,7 +735,7 @@ Architecture: all Installed-Size: 194560 Description: Unified entry point for all SecuBox applications with tabbed navigation Filename: luci-app-secubox-portal_0.7.0-r3_all.ipk -Size: 41683 +Size: 41685 Package: luci-app-secubox-security-threats Version: 1.0.0-r4 @@ -747,7 +747,7 @@ Architecture: all Installed-Size: 61440 Description: Unified dashboard integrating netifyd DPI threats with CrowdSec intelligence for real-time threat monitoring and automated blocking Filename: luci-app-secubox-security-threats_1.0.0-r4_all.ipk -Size: 10654 +Size: 10659 Package: luci-app-secubox-users Version: 1.0.0-r1 @@ -758,7 +758,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI SecuBox User Management Filename: luci-app-secubox-users_1.0.0-r1_all.ipk -Size: 5144 +Size: 5147 Package: luci-app-service-registry Version: 1.0.0-r1 @@ -770,7 +770,7 @@ Architecture: all Installed-Size: 194560 Description: Unified service aggregation with HAProxy vhosts, Tor hidden services, and QR-coded landing page Filename: luci-app-service-registry_1.0.0-r1_all.ipk -Size: 39950 +Size: 39954 Package: luci-app-simplex Version: 1.0.0-r1 @@ -782,7 +782,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI SimpleX Chat Server Configuration Filename: luci-app-simplex_1.0.0-r1_all.ipk -Size: 7035 +Size: 7041 Package: luci-app-streamlit Version: 1.0.0-r11 @@ -794,7 +794,7 @@ Architecture: all Installed-Size: 112640 Description: Multi-instance Streamlit management with Gitea integration Filename: luci-app-streamlit_1.0.0-r11_all.ipk -Size: 20567 +Size: 20569 Package: luci-app-system-hub Version: 0.5.2-r2 @@ -806,7 +806,7 @@ Architecture: all Installed-Size: 327680 Description: Central system control with monitoring, services, logs, and backup Filename: luci-app-system-hub_0.5.2-r2_all.ipk -Size: 64288 +Size: 64290 Package: luci-app-threat-analyst Version: 1.0.0-r1 @@ -818,7 +818,7 @@ Architecture: all Installed-Size: 51200 Description: LuCI Threat Analyst Dashboard Filename: luci-app-threat-analyst_1.0.0-r1_all.ipk -Size: 10140 +Size: 10144 Package: luci-app-tor Version: 1.0.0-r1 @@ -830,7 +830,7 @@ Architecture: all Installed-Size: 92160 Description: Modern dashboard for Tor anonymization on OpenWrt Filename: luci-app-tor_1.0.0-r1_all.ipk -Size: 17815 +Size: 17818 Package: luci-app-tor-shield Version: 1.0.0-r10 @@ -842,7 +842,7 @@ Architecture: all Installed-Size: 122880 Description: Modern dashboard for Tor anonymization on OpenWrt Filename: luci-app-tor-shield_1.0.0-r10_all.ipk -Size: 22763 +Size: 22766 Package: luci-app-traffic-shaper Version: 0.4.0-r2 @@ -854,7 +854,7 @@ Architecture: all Installed-Size: 81920 Description: Advanced traffic shaping with TC/CAKE for precise bandwidth control Filename: luci-app-traffic-shaper_0.4.0-r2_all.ipk -Size: 14588 +Size: 14591 Package: luci-app-vhost-manager Version: 0.5.0-r5 @@ -866,7 +866,7 @@ Architecture: all Installed-Size: 153600 Description: Nginx reverse proxy manager with Let's Encrypt SSL certificates, authentication, and WebSocket support Filename: luci-app-vhost-manager_0.5.0-r5_all.ipk -Size: 26280 +Size: 26283 Package: luci-app-voip Version: 1.0.0-r1 @@ -878,7 +878,7 @@ Architecture: all Installed-Size: 81920 Description: LuCI VoIP PBX Management Filename: luci-app-voip_1.0.0-r1_all.ipk -Size: 11044 +Size: 11045 Package: luci-app-vortex-dns Version: 1.0.0-r1 @@ -890,7 +890,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI Vortex DNS Dashboard Filename: luci-app-vortex-dns_1.0.0-r1_all.ipk -Size: 6079 +Size: 6077 Package: luci-app-vortex-firewall Version: 1.0.0-r1 @@ -902,7 +902,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI Vortex DNS Firewall Dashboard Filename: luci-app-vortex-firewall_1.0.0-r1_all.ipk -Size: 5451 +Size: 5453 Package: luci-app-wazuh Version: 1.0.0-r1 @@ -925,7 +925,7 @@ Architecture: all Installed-Size: 215040 Description: Modern dashboard for WireGuard VPN monitoring on OpenWrt Filename: luci-app-wireguard-dashboard_0.7.0-r5_all.ipk -Size: 42288 +Size: 42290 Package: luci-app-zigbee2mqtt Version: 1.0.0-r2 @@ -937,7 +937,7 @@ Architecture: all Installed-Size: 40960 Description: Graphical interface for managing the Zigbee2MQTT LXC application. Filename: luci-app-zigbee2mqtt_1.0.0-r2_all.ipk -Size: 6595 +Size: 6598 Package: luci-theme-secubox Version: 0.4.8-r1 @@ -949,7 +949,7 @@ Architecture: all Installed-Size: 491520 Description: Global CyberMood design system (CSS/JS/i18n) shared by all SecuBox dashboards. Filename: luci-theme-secubox_0.4.8-r1_all.ipk -Size: 121588 +Size: 121590 Package: secubox-app Version: 1.0.0-r2 @@ -960,7 +960,7 @@ Installed-Size: 92160 Description: Command line helper for SecuBox App Store manifests. Installs /usr/sbin/secubox-app and ships the default manifests under /usr/share/secubox/plugins/. Filename: secubox-app_1.0.0-r2_all.ipk -Size: 11181 +Size: 11187 Package: secubox-app-adguardhome Version: 1.0.0-r2 @@ -974,7 +974,7 @@ Description: Installer, configuration, and service manager for running AdGuard inside Docker on SecuBox-powered OpenWrt systems. Network-wide ad blocker with DNS-over-HTTPS/TLS support and detailed analytics. Filename: secubox-app-adguardhome_1.0.0-r2_all.ipk -Size: 2876 +Size: 2878 Package: secubox-app-auth-logger Version: 1.2.2-r1 @@ -992,7 +992,7 @@ Description: Logs authentication failures from LuCI/rpcd and Dropbear SSH - JavaScript hook to intercept login failures - CrowdSec parser and bruteforce scenario Filename: secubox-app-auth-logger_1.2.2-r1_all.ipk -Size: 9374 +Size: 9378 Package: secubox-app-crowdsec-custom Version: 1.1.0-r1 @@ -1017,7 +1017,7 @@ Description: Custom CrowdSec configurations for SecuBox web interface protectio - Insider WAF: LAN threat detection (C2, exfiltration, lateral movement) - Whitelist for trusted networks Filename: secubox-app-crowdsec-custom_1.1.0-r1_all.ipk -Size: 6943 +Size: 6942 Package: secubox-app-cs-firewall-bouncer Version: 0.0.31-r4 @@ -1044,7 +1044,7 @@ Description: SecuBox CrowdSec Firewall Bouncer for OpenWrt. - Automatic restart on firewall reload - procd service management Filename: secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk -Size: 5049321 +Size: 5049324 Package: secubox-app-cyberfeed Version: 0.2.1-r1 @@ -1072,7 +1072,7 @@ Description: Unified device inventory aggregating mac-guardian, client-guardian P2P mesh, and exposure scanner data. Includes heuristic classification and pluggable emulator modules for MQTT, Zigbee, and USB devices. Filename: secubox-app-device-intel_1.0.0-r1_all.ipk -Size: 13108 +Size: 13105 Package: secubox-app-dns-provider Version: 1.0.0-r1 @@ -1086,7 +1086,7 @@ Description: Programmatic DNS record management via provider APIs (OVH, Gandi Cloudflare). Provides the dnsctl CLI for record CRUD, zone sync DNS propagation verification, and ACME DNS-01 challenge support. Filename: secubox-app-dns-provider_1.0.0-r1_all.ipk -Size: 8258 +Size: 8262 Package: secubox-app-domoticz Version: 1.0.0-r4 @@ -1099,7 +1099,7 @@ Installed-Size: 30720 Description: Installer, configuration, and service manager for running Domoticz inside an LXC Alpine container on SecuBox-powered OpenWrt systems. Filename: secubox-app-domoticz_1.0.0-r4_all.ipk -Size: 7510 +Size: 7507 Package: secubox-app-exposure Version: 1.0.0-r1 @@ -1114,7 +1114,7 @@ Description: Unified service exposure manager for SecuBox. - Dynamic Tor hidden service management - HAProxy SSL reverse proxy configuration Filename: secubox-app-exposure_1.0.0-r1_all.ipk -Size: 9150 +Size: 9151 Package: secubox-app-gitea Version: 1.0.0-r5 @@ -1137,7 +1137,7 @@ Description: Gitea Git Platform - Self-hosted lightweight Git service Runs in LXC container with Alpine Linux. Configure in /etc/config/gitea. Filename: secubox-app-gitea_1.0.0-r5_all.ipk -Size: 9442 +Size: 9436 Package: secubox-app-gk2hub Version: 0.1.0-r1 @@ -1174,7 +1174,7 @@ Description: Glances - Cross-platform system monitoring tool for SecuBox. Runs in LXC container for isolation and security. Configure in /etc/config/glances. Filename: secubox-app-glances_1.0.0-r1_all.ipk -Size: 6144 +Size: 6140 Package: secubox-app-guacamole Version: 1.0.0-r1 @@ -1188,7 +1188,7 @@ Description: Apache Guacamole clientless remote desktop gateway. Runs in an LXC Debian container with guacd and Tomcat. Supports SSH, VNC, and RDP connections via web browser. Filename: secubox-app-guacamole_1.0.0-r1_all.ipk -Size: 6945 +Size: 6946 Package: secubox-app-haproxy Version: 1.0.0-r24 @@ -1208,7 +1208,7 @@ Description: HAProxy load balancer and reverse proxy running in an LXC containe - Stats dashboard - Rate limiting and ACLs Filename: secubox-app-haproxy_1.0.0-r24_all.ipk -Size: 22010 +Size: 22009 Package: secubox-app-hexojs Version: 1.0.0-r8 @@ -1232,7 +1232,7 @@ Description: Hexo CMS - Self-hosted static blog generator for OpenWrt Runs in LXC container with Alpine Linux. Configure in /etc/config/hexojs. Filename: secubox-app-hexojs_1.0.0-r8_all.ipk -Size: 100061 +Size: 100058 Package: secubox-app-ipblocklist Version: 1.0.0-r1 @@ -1247,7 +1247,7 @@ Description: Pre-emptive IP blocklist defense layer for SecuBox. Maintainer: Gandalf License: Apache-2.0 Filename: secubox-app-ipblocklist_1.0.0-r1_all.ipk -Size: 4705 +Size: 4702 Package: secubox-app-jabber Version: 1.0.0-r1 @@ -1261,7 +1261,7 @@ Description: Jabber/XMPP instant messaging server based on Prosody. Runs in an LXC Debian container with full XMPP support. Features multi-user chat (MUC), file uploads, and S2S federation. Filename: secubox-app-jabber_1.0.0-r1_all.ipk -Size: 13276 +Size: 13278 Package: secubox-app-jellyfin Version: 3.0.0-r1 @@ -1274,7 +1274,7 @@ Installed-Size: 20480 Description: Jellyfin media server running in LXC container. Free media server for streaming movies, TV shows, music, and photos. Filename: secubox-app-jellyfin_3.0.0-r1_all.ipk -Size: 4753 +Size: 4754 Package: secubox-app-jitsi Version: 1.0.0-r1 @@ -1321,7 +1321,7 @@ Description: LocalAI native binary package for OpenWrt. API: http://:8081/v1 Filename: secubox-app-localai_3.9.0-r1_all.ipk -Size: 5849 +Size: 5833 Package: secubox-app-localai-wb Version: 2.25.0-r1 @@ -1365,7 +1365,7 @@ Description: Lyrion Media Server (formerly Logitech Media Server / Squeezebox S Auto-detects available runtime, preferring LXC for lower resource usage. Configure runtime in /etc/config/lyrion. Filename: secubox-app-lyrion_2.0.2-r1_all.ipk -Size: 8126 +Size: 8124 Package: secubox-app-mac-guardian Version: 0.5.0-r1 @@ -1380,7 +1380,7 @@ Description: WiFi MAC address security monitor for SecuBox. and spoofing. Integrates with CrowdSec and provides real-time hostapd hotplug detection. Filename: secubox-app-mac-guardian_0.5.0-r1_all.ipk -Size: 12094 +Size: 12099 Package: secubox-app-magicmirror2 Version: 0.4.0-r8 @@ -1402,7 +1402,7 @@ Description: MagicMirror² - Open source modular smart mirror platform for Secu Runs in LXC container for isolation and security. Configure in /etc/config/magicmirror2. Filename: secubox-app-magicmirror2_0.4.0-r8_all.ipk -Size: 9256 +Size: 9251 Package: secubox-app-mailinabox Version: 2.0.0-r1 @@ -1427,7 +1427,7 @@ Description: Complete email server solution using docker-mailserver for SecuBox Commands: mailinaboxctl --help Filename: secubox-app-mailinabox_2.0.0-r1_all.ipk -Size: 7573 +Size: 7570 Package: secubox-app-mailserver Version: 2.0.0-r1 @@ -1440,7 +1440,7 @@ Installed-Size: 20480 Description: Postfix + Dovecot mail server running in LXC container. Supports IMAP/SMTP with SSL/TLS. Filename: secubox-app-mailserver_2.0.0-r1_all.ipk -Size: 5702 +Size: 5699 Package: secubox-app-matrix Version: 1.0.0-r1 @@ -1454,7 +1454,7 @@ Description: Matrix homeserver based on Conduit - a lightweight, high-performan Matrix server written in Rust. Runs in an LXC Debian container. Features E2EE messaging, federation, and mesh integration. Filename: secubox-app-matrix_1.0.0-r1_all.ipk -Size: 10451 +Size: 10454 Package: secubox-app-metabolizer Version: 1.0.0-r3 @@ -1475,7 +1475,7 @@ Description: Metabolizer Blog Pipeline - Integrated CMS with Git-based workflow Pipeline: Edit in Streamlit -> Push to Gitea -> Build with Hexo -> Publish Filename: secubox-app-metabolizer_1.0.0-r3_all.ipk -Size: 13975 +Size: 13980 Package: secubox-app-mitmproxy Version: 0.5.0-r19 @@ -1523,7 +1523,7 @@ Description: MMPM (MagicMirror Package Manager) for SecuBox. Runs inside the MagicMirror2 LXC container. Filename: secubox-app-mmpm_0.2.0-r5_all.ipk -Size: 3979 +Size: 3977 Package: secubox-app-nextcloud Version: 1.0.0-r2 @@ -1537,7 +1537,7 @@ Description: Nextcloud file sync and collaboration platform running in a Debian LXC container with MariaDB, Redis, and Nginx. Features HAProxy SSL integration, automated backups, and KISS LuCI dashboard. Filename: secubox-app-nextcloud_1.0.0-r2_all.ipk -Size: 9674 +Size: 9672 Package: secubox-app-ollama Version: 0.1.0-r1 @@ -1559,7 +1559,7 @@ Description: Ollama - Simple local LLM runtime for SecuBox-powered OpenWrt syst Runs in Docker/Podman container. Configure in /etc/config/ollama. Filename: secubox-app-ollama_0.1.0-r1_all.ipk -Size: 5741 +Size: 5739 Package: secubox-app-picobrew Version: 1.0.0-r7 @@ -1581,7 +1581,7 @@ Description: PicoBrew Server - Self-hosted brewing controller for PicoBrew devi Runs in LXC container with Python/Flask backend. Configure in /etc/config/picobrew. Filename: secubox-app-picobrew_1.0.0-r7_all.ipk -Size: 5536 +Size: 5542 Package: secubox-app-rustdesk Version: 1.0.0-r1 @@ -1594,7 +1594,7 @@ Installed-Size: 20480 Description: Self-hosted RustDesk relay server for remote desktop access. Downloads and manages hbbs (ID server) and hbbr (relay server) binaries. Filename: secubox-app-rustdesk_1.0.0-r1_all.ipk -Size: 4468 +Size: 4465 Package: secubox-app-simplex Version: 1.0.0-r1 @@ -1618,7 +1618,7 @@ Description: SimpleX Chat self-hosted messaging infrastructure for SecuBox. Privacy-first messaging relay that you control. Configure in /etc/config/simplex. Filename: secubox-app-simplex_1.0.0-r1_all.ipk -Size: 9365 +Size: 9368 Package: secubox-app-smbfs Version: 1.0.0-r1 @@ -1659,7 +1659,7 @@ Description: Streamlit App Platform - Self-hosted Python data app platform Configure in /etc/config/streamlit. Filename: secubox-app-streamlit_1.0.0-r5_all.ipk -Size: 16516 +Size: 16514 Package: secubox-app-tor Version: 1.0.0-r1 @@ -1682,7 +1682,7 @@ Description: SecuBox Tor Shield - One-click Tor anonymization for OpenWrt Configure in /etc/config/tor-shield. Filename: secubox-app-tor_1.0.0-r1_all.ipk -Size: 7366 +Size: 7374 Package: secubox-app-voip Version: 1.0.0-r1 @@ -1696,7 +1696,7 @@ Description: VoIP PBX solution with Asterisk in LXC container. Features OVH SIP trunk integration, WebRTC support and Jabber/XMPP relay for SMS and voicemail notifications. Filename: secubox-app-voip_1.0.0-r1_all.ipk -Size: 11955 +Size: 11957 Package: secubox-app-webapp Version: 1.5.0-r7 @@ -1714,7 +1714,7 @@ Description: SecuBox Control Center Dashboard - A web-based dashboard for monit - Service management - Network interface control Filename: secubox-app-webapp_1.5.0-r7_all.ipk -Size: 39177 +Size: 39176 Package: secubox-app-zigbee2mqtt Version: 1.0.0-r3 @@ -1727,7 +1727,7 @@ Installed-Size: 20480 Description: Installer, configuration, and service manager for running Zigbee2MQTT inside an Alpine LXC container on SecuBox-powered OpenWrt systems. Filename: secubox-app-zigbee2mqtt_1.0.0-r3_all.ipk -Size: 5539 +Size: 5542 Package: secubox-config-advisor Version: 0.1.0-r1 @@ -1746,7 +1746,7 @@ Description: AI-powered configuration security advisor for SecuBox. - LocalAI integration for intelligent analysis - Automated remediation suggestions Filename: secubox-config-advisor_0.1.0-r1_all.ipk -Size: 14848 +Size: 14849 Package: secubox-content-pkg Version: 1.0.0-r1 @@ -1759,7 +1759,7 @@ Installed-Size: 20480 Description: Package Metablogizer sites and Streamlit apps as IPKs for P2P distribution. Auto-publishes content to the mesh feed for peer auto-sync. Filename: secubox-content-pkg_1.0.0-r1_all.ipk -Size: 3909 +Size: 3908 Package: secubox-cookie-tracker Version: 1.0.0-r1 @@ -1782,7 +1782,7 @@ Description: Cookie Tracker for SecuBox InterceptoR. Works with secubox-app-mitmproxy for transparent interception. Filename: secubox-cookie-tracker_1.0.0-r1_all.ipk -Size: 10642 +Size: 10644 Package: secubox-core Version: 0.10.0-r16 @@ -1791,7 +1791,7 @@ License: GPL-2.0 Section: admin Maintainer: SecuBox Team Architecture: all -Installed-Size: 645120 +Installed-Size: 665600 Description: SecuBox Core Framework provides the foundational infrastructure for the modular SecuBox system including: - Module/AppStore management @@ -1802,7 +1802,7 @@ Description: SecuBox Core Framework provides the foundational infrastructure fo - Unified CLI interface - ubus RPC backend Filename: secubox-core_0.10.0-r16_all.ipk -Size: 123051 +Size: 127205 Package: secubox-cve-triage Version: 1.0.0-r1 @@ -1822,7 +1822,7 @@ Description: AI-powered CVE analysis and vulnerability management agent for Sec - Approval workflow for patch recommendations - LXC and Docker package monitoring Filename: secubox-cve-triage_1.0.0-r1_all.ipk -Size: 11829 +Size: 11826 Package: secubox-dns-guard Version: 1.0.0-r1 @@ -1841,7 +1841,7 @@ Description: SecuBox DNS Guard provides AI-powered DNS anomaly detection using - Unusual TLD pattern detection - Automatic blocklist generation with approval workflow Filename: secubox-dns-guard_1.0.0-r1_all.ipk -Size: 12488 +Size: 12486 Package: secubox-identity Version: 0.1.0-r1 @@ -1860,7 +1860,7 @@ Description: Decentralized identity management for SecuBox mesh nodes. - Peer identity verification - Trust scoring integration Filename: secubox-identity_0.1.0-r1_all.ipk -Size: 8086 +Size: 8084 Package: secubox-iot-guard Version: 1.0.0-r1 @@ -1876,7 +1876,7 @@ Description: IoT device isolation, classification, and security monitoring. risk scoring. Orchestrates Client Guardian, MAC Guardian Vortex Firewall, and Bandwidth Manager for IoT protection. Filename: secubox-iot-guard_1.0.0-r1_all.ipk -Size: 13370 +Size: 13371 Package: secubox-localrecall Version: 1.0.0-r1 @@ -1891,7 +1891,7 @@ Description: Persistent memory system for SecuBox AI agents. for context across sessions. LocalAI integration for semantic search and AI-powered summarization. Filename: secubox-localrecall_1.0.0-r1_all.ipk -Size: 7798 +Size: 7795 Package: secubox-master-link Version: 1.0.0-r1 @@ -1913,7 +1913,7 @@ Description: Secure mesh onboarding for SecuBox nodes via master/peer link. Configure in /etc/config/master-link. Filename: secubox-master-link_1.0.0-r1_all.ipk -Size: 15037 +Size: 15035 Package: secubox-mcp-server Version: 1.0.0-r1 @@ -1941,7 +1941,7 @@ Description: Model Context Protocol (MCP) server for SecuBox. - ai.explain_ban (Explain CrowdSec decisions) - ai.security_posture (Security assessment) Filename: secubox-mcp-server_1.0.0-r1_all.ipk -Size: 11425 +Size: 11431 Package: secubox-mirrornet Version: 0.1.0-r1 @@ -1959,7 +1959,7 @@ Description: MirrorNet core mesh orchestration for SecuBox. - Mesh health monitoring and anomaly detection - DID-based identity (did:plc compatible) Filename: secubox-mirrornet_0.1.0-r1_all.ipk -Size: 15309 +Size: 15305 Package: secubox-network-anomaly Version: 1.0.0-r1 @@ -1974,7 +1974,7 @@ Description: AI-powered network anomaly detection for SecuBox. DNS anomalies, and protocol anomalies using statistical analysis and optional LocalAI integration. Filename: secubox-network-anomaly_1.0.0-r1_all.ipk -Size: 6164 +Size: 6165 Package: secubox-p2p Version: 0.6.0-r3 @@ -1993,7 +1993,7 @@ Description: SecuBox P2P Hub backend providing peer discovery, mesh networking and MirrorBox NetMesh Catalog for cross-chain distributed service registry with HAProxy vhost discovery and multi-endpoint access URLs. Filename: secubox-p2p_0.6.0-r3_all.ipk -Size: 47859 +Size: 47860 Package: secubox-p2p-intel Version: 0.1.0-r1 @@ -2031,7 +2031,7 @@ Description: Autonomous threat analysis agent for SecuBox. Part of SecuBox AI Gateway (Couche 2). Filename: secubox-threat-analyst_1.0.0-r1_all.ipk -Size: 9864 +Size: 9867 Package: secubox-vortex-dns Version: 1.0.0-r1 @@ -2050,7 +2050,7 @@ Description: Meshed multi-dynamic subdomain delegation system for SecuBox. - Gossip-based exposure config sync - Submastering for nested hierarchies Filename: secubox-vortex-dns_1.0.0-r1_all.ipk -Size: 5441 +Size: 5438 Package: secubox-vortex-firewall Version: 1.0.0-r1 diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages.gz b/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages.gz index 7d270f61..ae6ba943 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages.gz and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages.gz differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/apps-local.json b/package/secubox/secubox-app-bonus/root/www/secubox-feed/apps-local.json index ae642fe3..bb0fc9d2 100644 --- a/package/secubox/secubox-app-bonus/root/www/secubox-feed/apps-local.json +++ b/package/secubox/secubox-app-bonus/root/www/secubox-feed/apps-local.json @@ -1,6 +1,6 @@ { "feed_url": "/secubox-feed", - "generated": "2026-02-27T09:53:29+01:00", + "generated": "2026-02-28T09:13:34+01:00", "packages": [ { "name": "luci-app-ai-insights", @@ -18,7 +18,7 @@ "name": "luci-app-auth-guardian", "version": "0.4.0-r3", "filename": "luci-app-auth-guardian_0.4.0-r3_all.ipk", - "size": 12393, + "size": 12397, "category": "security", "icon": "key", "description": "Authentication management", @@ -30,7 +30,7 @@ "name": "luci-app-backup", "version": "1.0.0-r1", "filename": "luci-app-backup_1.0.0-r1_all.ipk", - "size": 4537, + "size": 4534, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -54,7 +54,7 @@ "name": "luci-app-cdn-cache", "version": "0.5.0-r3", "filename": "luci-app-cdn-cache_0.5.0-r3_all.ipk", - "size": 24255, + "size": 24254, "category": "network", "icon": "globe", "description": "CDN caching", @@ -66,7 +66,7 @@ "name": "luci-app-client-guardian", "version": "0.4.0-r7", "filename": "luci-app-client-guardian_0.4.0-r7_all.ipk", - "size": 52685, + "size": 52686, "category": "network", "icon": "users", "description": "Client management and monitoring", @@ -78,7 +78,7 @@ "name": "luci-app-cloner", "version": "1.0.0-r1", "filename": "luci-app-cloner_1.0.0-r1_all.ipk", - "size": 19433, + "size": 19434, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -90,7 +90,7 @@ "name": "luci-app-config-advisor", "version": "1.0.0-r1", "filename": "luci-app-config-advisor_1.0.0-r1_all.ipk", - "size": 8859, + "size": 8861, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -102,7 +102,7 @@ "name": "luci-app-cookie-tracker", "version": "1.0.0-r1", "filename": "luci-app-cookie-tracker_1.0.0-r1_all.ipk", - "size": 5658, + "size": 5660, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -114,7 +114,7 @@ "name": "luci-app-crowdsec-dashboard", "version": "0.8.0-r1", "filename": "luci-app-crowdsec-dashboard_0.8.0-r1_all.ipk", - "size": 43022, + "size": 43023, "category": "security", "icon": "shield", "description": "CrowdSec security monitoring", @@ -126,7 +126,7 @@ "name": "luci-app-cve-triage", "version": "1.0.0-r1", "filename": "luci-app-cve-triage_1.0.0-r1_all.ipk", - "size": 5946, + "size": 5945, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -138,7 +138,7 @@ "name": "luci-app-cyberfeed", "version": "0.1.1-r1", "filename": "luci-app-cyberfeed_0.1.1-r1_all.ipk", - "size": 12885, + "size": 12887, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -150,7 +150,7 @@ "name": "luci-app-device-intel", "version": "1.0.0-r1", "filename": "luci-app-device-intel_1.0.0-r1_all.ipk", - "size": 12052, + "size": 12049, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -162,7 +162,7 @@ "name": "luci-app-dnsguard", "version": "1.1.0-r1", "filename": "luci-app-dnsguard_1.1.0-r1_all.ipk", - "size": 12445, + "size": 12448, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -174,7 +174,7 @@ "name": "luci-app-dns-provider", "version": "1.0.0-r1", "filename": "luci-app-dns-provider_1.0.0-r1_all.ipk", - "size": 7168, + "size": 7175, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -186,7 +186,7 @@ "name": "luci-app-domoticz", "version": "1.0.0-r1", "filename": "luci-app-domoticz_1.0.0-r1_all.ipk", - "size": 7125, + "size": 7122, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -198,7 +198,7 @@ "name": "luci-app-exposure", "version": "1.0.0-r3", "filename": "luci-app-exposure_1.0.0-r3_all.ipk", - "size": 11697, + "size": 11700, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -210,7 +210,7 @@ "name": "luci-app-gitea", "version": "1.0.0-r2", "filename": "luci-app-gitea_1.0.0-r2_all.ipk", - "size": 16621, + "size": 16622, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -222,7 +222,7 @@ "name": "luci-app-glances", "version": "1.0.0-r2", "filename": "luci-app-glances_1.0.0-r2_all.ipk", - "size": 7018, + "size": 7016, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -246,7 +246,7 @@ "name": "luci-app-haproxy", "version": "1.0.0-r8", "filename": "luci-app-haproxy_1.0.0-r8_all.ipk", - "size": 35338, + "size": 35340, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -294,7 +294,7 @@ "name": "luci-app-jabber", "version": "0", "filename": "luci-app-jabber_0_all.ipk", - "size": 9307, + "size": 9308, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -306,7 +306,7 @@ "name": "luci-app-jellyfin", "version": "1.0.0-r1", "filename": "luci-app-jellyfin_1.0.0-r1_all.ipk", - "size": 10484, + "size": 10485, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -318,7 +318,7 @@ "name": "luci-app-jitsi", "version": "1.0.0-r1", "filename": "luci-app-jitsi_1.0.0-r1_all.ipk", - "size": 5177, + "size": 5180, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -330,7 +330,7 @@ "name": "luci-app-ksm-manager", "version": "0.4.0-r2", "filename": "luci-app-ksm-manager_0.4.0-r2_all.ipk", - "size": 18777, + "size": 18783, "category": "system", "icon": "cpu", "description": "Kernel memory management", @@ -342,7 +342,7 @@ "name": "luci-app-localai", "version": "0.1.0-r15", "filename": "luci-app-localai_0.1.0-r15_all.ipk", - "size": 13318, + "size": 13321, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -354,7 +354,7 @@ "name": "luci-app-localrecall", "version": "1.0.0-r1", "filename": "luci-app-localrecall_1.0.0-r1_all.ipk", - "size": 8416, + "size": 8423, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -366,7 +366,7 @@ "name": "luci-app-lyrion", "version": "1.0.0-r1", "filename": "luci-app-lyrion_1.0.0-r1_all.ipk", - "size": 6833, + "size": 6841, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -378,7 +378,7 @@ "name": "luci-app-mac-guardian", "version": "0.5.0-r1", "filename": "luci-app-mac-guardian_0.5.0-r1_all.ipk", - "size": 6662, + "size": 6669, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -390,7 +390,7 @@ "name": "luci-app-magicmirror2", "version": "0.4.0-r6", "filename": "luci-app-magicmirror2_0.4.0-r6_all.ipk", - "size": 12360, + "size": 12361, "category": "iot", "icon": "monitor", "description": "Smart mirror display", @@ -402,7 +402,7 @@ "name": "luci-app-mailinabox", "version": "1.0.0-r1", "filename": "luci-app-mailinabox_1.0.0-r1_all.ipk", - "size": 5482, + "size": 5483, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -426,7 +426,7 @@ "name": "luci-app-master-link", "version": "1.0.0-r1", "filename": "luci-app-master-link_1.0.0-r1_all.ipk", - "size": 6305, + "size": 6306, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -438,7 +438,7 @@ "name": "luci-app-matrix", "version": "1.0.0-r1", "filename": "luci-app-matrix_1.0.0-r1_all.ipk", - "size": 7525, + "size": 7527, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -450,7 +450,7 @@ "name": "luci-app-media-flow", "version": "0.6.4-r1", "filename": "luci-app-media-flow_0.6.4-r1_all.ipk", - "size": 25380, + "size": 25382, "category": "media", "icon": "film", "description": "Media streaming", @@ -474,7 +474,7 @@ "name": "luci-app-metabolizer", "version": "1.0.0-r2", "filename": "luci-app-metabolizer_1.0.0-r2_all.ipk", - "size": 4818, + "size": 4820, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -486,7 +486,7 @@ "name": "luci-app-mitmproxy", "version": "0.5.0-r2", "filename": "luci-app-mitmproxy_0.5.0-r2_all.ipk", - "size": 13231, + "size": 13234, "category": "security", "icon": "lock", "description": "HTTPS proxy and traffic inspection", @@ -498,7 +498,7 @@ "name": "luci-app-mmpm", "version": "0.2.0-r3", "filename": "luci-app-mmpm_0.2.0-r3_all.ipk", - "size": 7967, + "size": 7974, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -510,7 +510,7 @@ "name": "luci-app-mqtt-bridge", "version": "0.4.0-r4", "filename": "luci-app-mqtt-bridge_0.4.0-r4_all.ipk", - "size": 22685, + "size": 22691, "category": "iot", "icon": "message-square", "description": "MQTT bridge", @@ -522,7 +522,7 @@ "name": "luci-app-ndpid", "version": "1.1.2-r2", "filename": "luci-app-ndpid_1.1.2-r2_all.ipk", - "size": 21701, + "size": 21700, "category": "security", "icon": "eye", "description": "Deep packet inspection", @@ -534,7 +534,7 @@ "name": "luci-app-netdata-dashboard", "version": "0.5.0-r2", "filename": "luci-app-netdata-dashboard_0.5.0-r2_all.ipk", - "size": 20561, + "size": 20559, "category": "monitoring", "icon": "bar-chart-2", "description": "System monitoring dashboard", @@ -546,7 +546,7 @@ "name": "luci-app-network-anomaly", "version": "1.0.0-r1", "filename": "luci-app-network-anomaly_1.0.0-r1_all.ipk", - "size": 7645, + "size": 7644, "category": "network", "icon": "wifi", "description": "Network configuration", @@ -558,7 +558,7 @@ "name": "luci-app-network-modes", "version": "0.5.0-r3", "filename": "luci-app-network-modes_0.5.0-r3_all.ipk", - "size": 54224, + "size": 54227, "category": "network", "icon": "wifi", "description": "Network configuration", @@ -570,7 +570,7 @@ "name": "luci-app-network-tweaks", "version": "1.0.0-r7", "filename": "luci-app-network-tweaks_1.0.0-r7_all.ipk", - "size": 15946, + "size": 15948, "category": "network", "icon": "wifi", "description": "Network configuration", @@ -582,7 +582,7 @@ "name": "luci-app-nextcloud", "version": "1.0.0-r1", "filename": "luci-app-nextcloud_1.0.0-r1_all.ipk", - "size": 10342, + "size": 10350, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -606,7 +606,7 @@ "name": "luci-app-openclaw", "version": "1.0.0-r1", "filename": "luci-app-openclaw_1.0.0-r1_all.ipk", - "size": 8408, + "size": 8414, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -618,7 +618,7 @@ "name": "luci-app-peertube", "version": "0", "filename": "luci-app-peertube_0_all.ipk", - "size": 5757, + "size": 5755, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -630,7 +630,7 @@ "name": "luci-app-picobrew", "version": "1.0.0-r1", "filename": "luci-app-picobrew_1.0.0-r1_all.ipk", - "size": 9529, + "size": 9534, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -654,7 +654,7 @@ "name": "luci-app-secubox-admin", "version": "1.0.0-r19", "filename": "luci-app-secubox-admin_1.0.0-r19_all.ipk", - "size": 58039, + "size": 58041, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -666,7 +666,7 @@ "name": "luci-app-secubox-crowdsec", "version": "1.0.0-r3", "filename": "luci-app-secubox-crowdsec_1.0.0-r3_all.ipk", - "size": 13922, + "size": 13920, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -678,7 +678,7 @@ "name": "luci-app-secubox-mirror", "version": "0.1.0-r1", "filename": "luci-app-secubox-mirror_0.1.0-r1_all.ipk", - "size": 5849, + "size": 5850, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -690,7 +690,7 @@ "name": "luci-app-secubox-netdiag", "version": "1.0.0-r1", "filename": "luci-app-secubox-netdiag_1.0.0-r1_all.ipk", - "size": 15341, + "size": 15346, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -702,7 +702,7 @@ "name": "luci-app-secubox-netifyd", "version": "1.2.1-r1", "filename": "luci-app-secubox-netifyd_1.2.1-r1_all.ipk", - "size": 36718, + "size": 36721, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -714,7 +714,7 @@ "name": "luci-app-secubox-p2p", "version": "0.1.0-r1", "filename": "luci-app-secubox-p2p_0.1.0-r1_all.ipk", - "size": 46833, + "size": 46834, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -726,7 +726,7 @@ "name": "luci-app-secubox-portal", "version": "0.7.0-r3", "filename": "luci-app-secubox-portal_0.7.0-r3_all.ipk", - "size": 41683, + "size": 41685, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -738,7 +738,7 @@ "name": "luci-app-secubox-security-threats", "version": "1.0.0-r4", "filename": "luci-app-secubox-security-threats_1.0.0-r4_all.ipk", - "size": 10654, + "size": 10659, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -750,7 +750,7 @@ "name": "luci-app-secubox-users", "version": "1.0.0-r1", "filename": "luci-app-secubox-users_1.0.0-r1_all.ipk", - "size": 5144, + "size": 5147, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -762,7 +762,7 @@ "name": "luci-app-service-registry", "version": "1.0.0-r1", "filename": "luci-app-service-registry_1.0.0-r1_all.ipk", - "size": 39950, + "size": 39954, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -774,7 +774,7 @@ "name": "luci-app-simplex", "version": "1.0.0-r1", "filename": "luci-app-simplex_1.0.0-r1_all.ipk", - "size": 7035, + "size": 7041, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -786,7 +786,7 @@ "name": "luci-app-streamlit", "version": "1.0.0-r11", "filename": "luci-app-streamlit_1.0.0-r11_all.ipk", - "size": 20567, + "size": 20569, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -798,7 +798,7 @@ "name": "luci-app-system-hub", "version": "0.5.2-r2", "filename": "luci-app-system-hub_0.5.2-r2_all.ipk", - "size": 64288, + "size": 64290, "category": "system", "icon": "settings", "description": "System management", @@ -810,7 +810,7 @@ "name": "luci-app-threat-analyst", "version": "1.0.0-r1", "filename": "luci-app-threat-analyst_1.0.0-r1_all.ipk", - "size": 10140, + "size": 10144, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -822,7 +822,7 @@ "name": "luci-app-tor", "version": "1.0.0-r1", "filename": "luci-app-tor_1.0.0-r1_all.ipk", - "size": 17815, + "size": 17818, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -834,7 +834,7 @@ "name": "luci-app-tor-shield", "version": "1.0.0-r10", "filename": "luci-app-tor-shield_1.0.0-r10_all.ipk", - "size": 22763, + "size": 22766, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -846,7 +846,7 @@ "name": "luci-app-traffic-shaper", "version": "0.4.0-r2", "filename": "luci-app-traffic-shaper_0.4.0-r2_all.ipk", - "size": 14588, + "size": 14591, "category": "network", "icon": "filter", "description": "Traffic shaping and QoS", @@ -858,7 +858,7 @@ "name": "luci-app-vhost-manager", "version": "0.5.0-r5", "filename": "luci-app-vhost-manager_0.5.0-r5_all.ipk", - "size": 26280, + "size": 26283, "category": "network", "icon": "server", "description": "Virtual host management", @@ -870,7 +870,7 @@ "name": "luci-app-voip", "version": "1.0.0-r1", "filename": "luci-app-voip_1.0.0-r1_all.ipk", - "size": 11044, + "size": 11045, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -882,7 +882,7 @@ "name": "luci-app-vortex-dns", "version": "1.0.0-r1", "filename": "luci-app-vortex-dns_1.0.0-r1_all.ipk", - "size": 6079, + "size": 6077, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -894,7 +894,7 @@ "name": "luci-app-vortex-firewall", "version": "1.0.0-r1", "filename": "luci-app-vortex-firewall_1.0.0-r1_all.ipk", - "size": 5451, + "size": 5453, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -918,7 +918,7 @@ "name": "luci-app-wireguard-dashboard", "version": "0.7.0-r5", "filename": "luci-app-wireguard-dashboard_0.7.0-r5_all.ipk", - "size": 42288, + "size": 42290, "category": "vpn", "icon": "shield", "description": "WireGuard VPN dashboard", @@ -930,7 +930,7 @@ "name": "luci-app-zigbee2mqtt", "version": "1.0.0-r2", "filename": "luci-app-zigbee2mqtt_1.0.0-r2_all.ipk", - "size": 6595, + "size": 6598, "category": "iot", "icon": "radio", "description": "Zigbee device management", @@ -942,7 +942,7 @@ "name": "luci-theme-secubox", "version": "0.4.8-r1", "filename": "luci-theme-secubox_0.4.8-r1_all.ipk", - "size": 121588, + "size": 121590, "category": "theme", "icon": "palette", "description": "LuCI theme", @@ -954,7 +954,7 @@ "name": "secubox-app", "version": "1.0.0-r2", "filename": "secubox-app_1.0.0-r2_all.ipk", - "size": 11181, + "size": 11187, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -966,7 +966,7 @@ "name": "secubox-app-adguardhome", "version": "1.0.0-r2", "filename": "secubox-app-adguardhome_1.0.0-r2_all.ipk", - "size": 2876, + "size": 2878, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -978,7 +978,7 @@ "name": "secubox-app-auth-logger", "version": "1.2.2-r1", "filename": "secubox-app-auth-logger_1.2.2-r1_all.ipk", - "size": 9374, + "size": 9378, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -990,7 +990,7 @@ "name": "secubox-app-crowdsec-custom", "version": "1.1.0-r1", "filename": "secubox-app-crowdsec-custom_1.1.0-r1_all.ipk", - "size": 6943, + "size": 6942, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1002,7 +1002,7 @@ "name": "secubox-app-cs-firewall-bouncer", "version": "0.0.31-r4_aarch64", "filename": "secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk", - "size": 5049321, + "size": 5049324, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1026,7 +1026,7 @@ "name": "secubox-app-device-intel", "version": "1.0.0-r1", "filename": "secubox-app-device-intel_1.0.0-r1_all.ipk", - "size": 13108, + "size": 13105, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1038,7 +1038,7 @@ "name": "secubox-app-dns-provider", "version": "1.0.0-r1", "filename": "secubox-app-dns-provider_1.0.0-r1_all.ipk", - "size": 8258, + "size": 8262, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1050,7 +1050,7 @@ "name": "secubox-app-domoticz", "version": "1.0.0-r4", "filename": "secubox-app-domoticz_1.0.0-r4_all.ipk", - "size": 7510, + "size": 7507, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1062,7 +1062,7 @@ "name": "secubox-app-exposure", "version": "1.0.0-r1", "filename": "secubox-app-exposure_1.0.0-r1_all.ipk", - "size": 9150, + "size": 9151, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1074,7 +1074,7 @@ "name": "secubox-app-gitea", "version": "1.0.0-r5", "filename": "secubox-app-gitea_1.0.0-r5_all.ipk", - "size": 9442, + "size": 9436, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1098,7 +1098,7 @@ "name": "secubox-app-glances", "version": "1.0.0-r1", "filename": "secubox-app-glances_1.0.0-r1_all.ipk", - "size": 6144, + "size": 6140, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1110,7 +1110,7 @@ "name": "secubox-app-guacamole", "version": "1.0.0-r1", "filename": "secubox-app-guacamole_1.0.0-r1_all.ipk", - "size": 6945, + "size": 6946, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1122,7 +1122,7 @@ "name": "secubox-app-haproxy", "version": "1.0.0-r24", "filename": "secubox-app-haproxy_1.0.0-r24_all.ipk", - "size": 22010, + "size": 22009, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1134,7 +1134,7 @@ "name": "secubox-app-hexojs", "version": "1.0.0-r8", "filename": "secubox-app-hexojs_1.0.0-r8_all.ipk", - "size": 100061, + "size": 100058, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1146,7 +1146,7 @@ "name": "secubox-app-ipblocklist", "version": "1.0.0-r1", "filename": "secubox-app-ipblocklist_1.0.0-r1_all.ipk", - "size": 4705, + "size": 4702, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1158,7 +1158,7 @@ "name": "secubox-app-jabber", "version": "1.0.0-r1", "filename": "secubox-app-jabber_1.0.0-r1_all.ipk", - "size": 13276, + "size": 13278, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1170,7 +1170,7 @@ "name": "secubox-app-jellyfin", "version": "3.0.0-r1", "filename": "secubox-app-jellyfin_3.0.0-r1_all.ipk", - "size": 4753, + "size": 4754, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1194,7 +1194,7 @@ "name": "secubox-app-localai", "version": "3.9.0-r1", "filename": "secubox-app-localai_3.9.0-r1_all.ipk", - "size": 5849, + "size": 5833, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1218,7 +1218,7 @@ "name": "secubox-app-lyrion", "version": "2.0.2-r1", "filename": "secubox-app-lyrion_2.0.2-r1_all.ipk", - "size": 8126, + "size": 8124, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1230,7 +1230,7 @@ "name": "secubox-app-mac-guardian", "version": "0.5.0-r1", "filename": "secubox-app-mac-guardian_0.5.0-r1_all.ipk", - "size": 12094, + "size": 12099, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1242,7 +1242,7 @@ "name": "secubox-app-magicmirror2", "version": "0.4.0-r8", "filename": "secubox-app-magicmirror2_0.4.0-r8_all.ipk", - "size": 9256, + "size": 9251, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1254,7 +1254,7 @@ "name": "secubox-app-mailinabox", "version": "2.0.0-r1", "filename": "secubox-app-mailinabox_2.0.0-r1_all.ipk", - "size": 7573, + "size": 7570, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1266,7 +1266,7 @@ "name": "secubox-app-mailserver", "version": "2.0.0-r1", "filename": "secubox-app-mailserver_2.0.0-r1_all.ipk", - "size": 5702, + "size": 5699, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1278,7 +1278,7 @@ "name": "secubox-app-matrix", "version": "1.0.0-r1", "filename": "secubox-app-matrix_1.0.0-r1_all.ipk", - "size": 10451, + "size": 10454, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1290,7 +1290,7 @@ "name": "secubox-app-metabolizer", "version": "1.0.0-r3", "filename": "secubox-app-metabolizer_1.0.0-r3_all.ipk", - "size": 13975, + "size": 13980, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1314,7 +1314,7 @@ "name": "secubox-app-mmpm", "version": "0.2.0-r5", "filename": "secubox-app-mmpm_0.2.0-r5_all.ipk", - "size": 3979, + "size": 3977, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1326,7 +1326,7 @@ "name": "secubox-app-nextcloud", "version": "1.0.0-r2", "filename": "secubox-app-nextcloud_1.0.0-r2_all.ipk", - "size": 9674, + "size": 9672, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1338,7 +1338,7 @@ "name": "secubox-app-ollama", "version": "0.1.0-r1", "filename": "secubox-app-ollama_0.1.0-r1_all.ipk", - "size": 5741, + "size": 5739, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1350,7 +1350,7 @@ "name": "secubox-app-picobrew", "version": "1.0.0-r7", "filename": "secubox-app-picobrew_1.0.0-r7_all.ipk", - "size": 5536, + "size": 5542, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1362,7 +1362,7 @@ "name": "secubox-app-rustdesk", "version": "1.0.0-r1", "filename": "secubox-app-rustdesk_1.0.0-r1_all.ipk", - "size": 4468, + "size": 4465, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1374,7 +1374,7 @@ "name": "secubox-app-simplex", "version": "1.0.0-r1", "filename": "secubox-app-simplex_1.0.0-r1_all.ipk", - "size": 9365, + "size": 9368, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1398,7 +1398,7 @@ "name": "secubox-app-streamlit", "version": "1.0.0-r5", "filename": "secubox-app-streamlit_1.0.0-r5_all.ipk", - "size": 16516, + "size": 16514, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1410,7 +1410,7 @@ "name": "secubox-app-tor", "version": "1.0.0-r1", "filename": "secubox-app-tor_1.0.0-r1_all.ipk", - "size": 7366, + "size": 7374, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1422,7 +1422,7 @@ "name": "secubox-app-voip", "version": "1.0.0-r1", "filename": "secubox-app-voip_1.0.0-r1_all.ipk", - "size": 11955, + "size": 11957, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1434,7 +1434,7 @@ "name": "secubox-app-webapp", "version": "1.5.0-r7", "filename": "secubox-app-webapp_1.5.0-r7_all.ipk", - "size": 39177, + "size": 39176, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1446,7 +1446,7 @@ "name": "secubox-app-zigbee2mqtt", "version": "1.0.0-r3", "filename": "secubox-app-zigbee2mqtt_1.0.0-r3_all.ipk", - "size": 5539, + "size": 5542, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1458,7 +1458,7 @@ "name": "secubox-config-advisor", "version": "0.1.0-r1", "filename": "secubox-config-advisor_0.1.0-r1_all.ipk", - "size": 14848, + "size": 14849, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1470,7 +1470,7 @@ "name": "secubox-content-pkg", "version": "1.0.0-r1", "filename": "secubox-content-pkg_1.0.0-r1_all.ipk", - "size": 3909, + "size": 3908, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1482,7 +1482,7 @@ "name": "secubox-cookie-tracker", "version": "1.0.0-r1", "filename": "secubox-cookie-tracker_1.0.0-r1_all.ipk", - "size": 10642, + "size": 10644, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1494,7 +1494,7 @@ "name": "secubox-core", "version": "0.10.0-r16", "filename": "secubox-core_0.10.0-r16_all.ipk", - "size": 123051, + "size": 127205, "category": "system", "icon": "box", "description": "SecuBox core components", @@ -1506,7 +1506,7 @@ "name": "secubox-cve-triage", "version": "1.0.0-r1", "filename": "secubox-cve-triage_1.0.0-r1_all.ipk", - "size": 11829, + "size": 11826, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1518,7 +1518,7 @@ "name": "secubox-dns-guard", "version": "1.0.0-r1", "filename": "secubox-dns-guard_1.0.0-r1_all.ipk", - "size": 12488, + "size": 12486, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1530,7 +1530,7 @@ "name": "secubox-identity", "version": "0.1.0-r1", "filename": "secubox-identity_0.1.0-r1_all.ipk", - "size": 8086, + "size": 8084, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1542,7 +1542,7 @@ "name": "secubox-iot-guard", "version": "1.0.0-r1", "filename": "secubox-iot-guard_1.0.0-r1_all.ipk", - "size": 13370, + "size": 13371, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1554,7 +1554,7 @@ "name": "secubox-localrecall", "version": "1.0.0-r1", "filename": "secubox-localrecall_1.0.0-r1_all.ipk", - "size": 7798, + "size": 7795, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1566,7 +1566,7 @@ "name": "secubox-master-link", "version": "1.0.0-r1", "filename": "secubox-master-link_1.0.0-r1_all.ipk", - "size": 15037, + "size": 15035, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1578,7 +1578,7 @@ "name": "secubox-mcp-server", "version": "1.0.0-r1", "filename": "secubox-mcp-server_1.0.0-r1_all.ipk", - "size": 11425, + "size": 11431, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1590,7 +1590,7 @@ "name": "secubox-mirrornet", "version": "0.1.0-r1", "filename": "secubox-mirrornet_0.1.0-r1_all.ipk", - "size": 15309, + "size": 15305, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1602,7 +1602,7 @@ "name": "secubox-network-anomaly", "version": "1.0.0-r1", "filename": "secubox-network-anomaly_1.0.0-r1_all.ipk", - "size": 6164, + "size": 6165, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1614,7 +1614,7 @@ "name": "secubox-p2p", "version": "0.6.0-r3", "filename": "secubox-p2p_0.6.0-r3_all.ipk", - "size": 47859, + "size": 47860, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1638,7 +1638,7 @@ "name": "secubox-threat-analyst", "version": "1.0.0-r1", "filename": "secubox-threat-analyst_1.0.0-r1_all.ipk", - "size": 9864, + "size": 9867, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1650,7 +1650,7 @@ "name": "secubox-vortex-dns", "version": "1.0.0-r1", "filename": "secubox-vortex-dns_1.0.0-r1_all.ipk", - "size": 5441, + "size": 5438, "category": "utility", "icon": "package", "description": "SecuBox package", diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ai-insights_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ai-insights_1.0.0-r1_all.ipk index 30c8cabf..4c7deed1 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ai-insights_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ai-insights_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-auth-guardian_0.4.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-auth-guardian_0.4.0-r3_all.ipk index 16e91a1c..eee9e412 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-auth-guardian_0.4.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-auth-guardian_0.4.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-backup_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-backup_1.0.0-r1_all.ipk index a71dbe7d..efb6e429 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-backup_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-backup_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-bandwidth-manager_0.5.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-bandwidth-manager_0.5.0-r2_all.ipk index 8453f760..8318c8aa 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-bandwidth-manager_0.5.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-bandwidth-manager_0.5.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cdn-cache_0.5.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cdn-cache_0.5.0-r3_all.ipk index 35da5b47..bce669dd 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cdn-cache_0.5.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cdn-cache_0.5.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-client-guardian_0.4.0-r7_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-client-guardian_0.4.0-r7_all.ipk index ce47b614..2c4d495b 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-client-guardian_0.4.0-r7_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-client-guardian_0.4.0-r7_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cloner_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cloner_1.0.0-r1_all.ipk index 070c2f5d..fbc05e58 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cloner_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cloner_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-config-advisor_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-config-advisor_1.0.0-r1_all.ipk index 2c0a063b..410f6337 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-config-advisor_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-config-advisor_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cookie-tracker_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cookie-tracker_1.0.0-r1_all.ipk index 2cf48593..23a2564d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cookie-tracker_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cookie-tracker_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-crowdsec-dashboard_0.8.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-crowdsec-dashboard_0.8.0-r1_all.ipk index b2569c40..f2c52054 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-crowdsec-dashboard_0.8.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-crowdsec-dashboard_0.8.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cve-triage_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cve-triage_1.0.0-r1_all.ipk index dbecfc2d..4ac65a77 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cve-triage_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cve-triage_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cyberfeed_0.1.1-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cyberfeed_0.1.1-r1_all.ipk index 1fd64b65..226a3de7 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cyberfeed_0.1.1-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-cyberfeed_0.1.1-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-device-intel_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-device-intel_1.0.0-r1_all.ipk index 87360592..c57d304d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-device-intel_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-device-intel_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-dns-provider_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-dns-provider_1.0.0-r1_all.ipk index 7b6b954d..e38e3171 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-dns-provider_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-dns-provider_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-dnsguard_1.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-dnsguard_1.1.0-r1_all.ipk index 23419d07..24e85fb6 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-dnsguard_1.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-dnsguard_1.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-domoticz_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-domoticz_1.0.0-r1_all.ipk index 1b1f2320..dd6a2a18 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-domoticz_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-domoticz_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-exposure_1.0.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-exposure_1.0.0-r3_all.ipk index 3c451602..07d494cc 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-exposure_1.0.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-exposure_1.0.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-gitea_1.0.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-gitea_1.0.0-r2_all.ipk index a23d7b4d..ea80c217 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-gitea_1.0.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-gitea_1.0.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-glances_1.0.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-glances_1.0.0-r2_all.ipk index fa0a711c..36534053 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-glances_1.0.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-glances_1.0.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-gotosocial_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-gotosocial_0.1.0-r1_all.ipk index b7a88c71..2a17afd9 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-gotosocial_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-gotosocial_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-haproxy_1.0.0-r8_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-haproxy_1.0.0-r8_all.ipk index 36a150db..28c90e24 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-haproxy_1.0.0-r8_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-haproxy_1.0.0-r8_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-hexojs_1.0.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-hexojs_1.0.0-r3_all.ipk index c0f0e3c7..55d97485 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-hexojs_1.0.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-hexojs_1.0.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-iot-guard_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-iot-guard_1.0.0-r1_all.ipk index be828cd5..9939bd1d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-iot-guard_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-iot-guard_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ipblocklist_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ipblocklist_1.0.0-r1_all.ipk index b23c56a2..5c620cdd 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ipblocklist_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ipblocklist_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jabber_0_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jabber_0_all.ipk index cb43f71f..01c9098b 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jabber_0_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jabber_0_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jellyfin_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jellyfin_1.0.0-r1_all.ipk index 075fcb21..3c56f5fd 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jellyfin_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jellyfin_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jitsi_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jitsi_1.0.0-r1_all.ipk index dd57078b..fc269336 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jitsi_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-jitsi_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ksm-manager_0.4.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ksm-manager_0.4.0-r2_all.ipk index bbf8cc16..f56af245 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ksm-manager_0.4.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ksm-manager_0.4.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-localai_0.1.0-r15_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-localai_0.1.0-r15_all.ipk index 5a5377c2..d66caccc 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-localai_0.1.0-r15_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-localai_0.1.0-r15_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-localrecall_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-localrecall_1.0.0-r1_all.ipk index b5f13665..dd4df5c9 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-localrecall_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-localrecall_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-lyrion_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-lyrion_1.0.0-r1_all.ipk index 880ecb20..31640fa6 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-lyrion_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-lyrion_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mac-guardian_0.5.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mac-guardian_0.5.0-r1_all.ipk index e76113b5..ca459b6b 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mac-guardian_0.5.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mac-guardian_0.5.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-magicmirror2_0.4.0-r6_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-magicmirror2_0.4.0-r6_all.ipk index 05c522ed..a68bb6e3 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-magicmirror2_0.4.0-r6_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-magicmirror2_0.4.0-r6_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mailinabox_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mailinabox_1.0.0-r1_all.ipk index fa07c80b..566ebbca 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mailinabox_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mailinabox_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mailserver_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mailserver_1.0.0-r1_all.ipk index eb5fff10..a4f4f8df 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mailserver_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mailserver_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-master-link_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-master-link_1.0.0-r1_all.ipk index 8baaf78d..8f25d647 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-master-link_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-master-link_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-matrix_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-matrix_1.0.0-r1_all.ipk index 07261fec..6870b28f 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-matrix_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-matrix_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-media-flow_0.6.4-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-media-flow_0.6.4-r1_all.ipk index 37aa235e..deeee821 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-media-flow_0.6.4-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-media-flow_0.6.4-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-metablogizer_1.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-metablogizer_1.1.0-r1_all.ipk index 2f0ede4a..e0c36d8f 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-metablogizer_1.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-metablogizer_1.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-metabolizer_1.0.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-metabolizer_1.0.0-r2_all.ipk index d560d381..71667da5 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-metabolizer_1.0.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-metabolizer_1.0.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mitmproxy_0.5.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mitmproxy_0.5.0-r2_all.ipk index a5b384c3..030b1b6d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mitmproxy_0.5.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mitmproxy_0.5.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mmpm_0.2.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mmpm_0.2.0-r3_all.ipk index 922172a4..08f43a3a 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mmpm_0.2.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mmpm_0.2.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mqtt-bridge_0.4.0-r4_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mqtt-bridge_0.4.0-r4_all.ipk index 1fccd433..95293d5e 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mqtt-bridge_0.4.0-r4_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-mqtt-bridge_0.4.0-r4_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ndpid_1.1.2-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ndpid_1.1.2-r2_all.ipk index 13b6cbd1..01cd2344 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ndpid_1.1.2-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ndpid_1.1.2-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-netdata-dashboard_0.5.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-netdata-dashboard_0.5.0-r2_all.ipk index 1c49ed87..e2ce3c53 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-netdata-dashboard_0.5.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-netdata-dashboard_0.5.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-anomaly_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-anomaly_1.0.0-r1_all.ipk index 684beabc..e1444038 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-anomaly_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-anomaly_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-modes_0.5.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-modes_0.5.0-r3_all.ipk index 55553b75..273624ec 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-modes_0.5.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-modes_0.5.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-tweaks_1.0.0-r7_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-tweaks_1.0.0-r7_all.ipk index c90f14e9..008c6ebc 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-tweaks_1.0.0-r7_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-network-tweaks_1.0.0-r7_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-nextcloud_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-nextcloud_1.0.0-r1_all.ipk index 09bbabe7..80d75cd2 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-nextcloud_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-nextcloud_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ollama_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ollama_0.1.0-r1_all.ipk index e87aaf97..4c19200d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ollama_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-ollama_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-openclaw_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-openclaw_1.0.0-r1_all.ipk index 960831cf..00de5553 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-openclaw_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-openclaw_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-peertube_0_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-peertube_0_all.ipk index 3265ec25..22bdb392 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-peertube_0_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-peertube_0_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-picobrew_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-picobrew_1.0.0-r1_all.ipk index fd832de2..1a89a2d5 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-picobrew_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-picobrew_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-admin_1.0.0-r19_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-admin_1.0.0-r19_all.ipk index b664bfc1..f5af91cc 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-admin_1.0.0-r19_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-admin_1.0.0-r19_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-crowdsec_1.0.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-crowdsec_1.0.0-r3_all.ipk index 1cd2819a..28846fad 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-crowdsec_1.0.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-crowdsec_1.0.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-mirror_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-mirror_0.1.0-r1_all.ipk index 5bcc5823..b0bd17cb 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-mirror_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-mirror_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-netdiag_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-netdiag_1.0.0-r1_all.ipk index fab0276e..0020ff16 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-netdiag_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-netdiag_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-netifyd_1.2.1-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-netifyd_1.2.1-r1_all.ipk index dce782ec..9e530dc7 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-netifyd_1.2.1-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-netifyd_1.2.1-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-p2p_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-p2p_0.1.0-r1_all.ipk index e1b44fa3..4b5ef459 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-p2p_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-p2p_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-portal_0.7.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-portal_0.7.0-r3_all.ipk index a91056cd..3c0f4c0b 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-portal_0.7.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-portal_0.7.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-security-threats_1.0.0-r4_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-security-threats_1.0.0-r4_all.ipk index 326c7b7c..4ca48cea 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-security-threats_1.0.0-r4_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-security-threats_1.0.0-r4_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-users_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-users_1.0.0-r1_all.ipk index 6e862894..b7ac242e 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-users_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox-users_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox_0.7.1-r4_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox_0.7.1-r4_all.ipk index 4431f1d9..24afbf9b 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox_0.7.1-r4_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-secubox_0.7.1-r4_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-service-registry_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-service-registry_1.0.0-r1_all.ipk index 5fb2dbe2..94fe4929 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-service-registry_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-service-registry_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-simplex_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-simplex_1.0.0-r1_all.ipk index 8e7fd081..6f5d1f09 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-simplex_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-simplex_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-streamlit_1.0.0-r11_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-streamlit_1.0.0-r11_all.ipk index e8641014..44270aa6 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-streamlit_1.0.0-r11_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-streamlit_1.0.0-r11_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-system-hub_0.5.2-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-system-hub_0.5.2-r2_all.ipk index 4fc00c32..834a9db2 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-system-hub_0.5.2-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-system-hub_0.5.2-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-threat-analyst_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-threat-analyst_1.0.0-r1_all.ipk index 062ebe1c..b508e185 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-threat-analyst_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-threat-analyst_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-tor-shield_1.0.0-r10_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-tor-shield_1.0.0-r10_all.ipk index b0308cb9..80372c36 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-tor-shield_1.0.0-r10_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-tor-shield_1.0.0-r10_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-tor_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-tor_1.0.0-r1_all.ipk index 667a8127..4c30bfec 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-tor_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-tor_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-traffic-shaper_0.4.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-traffic-shaper_0.4.0-r2_all.ipk index 4aef7d37..7a94b76c 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-traffic-shaper_0.4.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-traffic-shaper_0.4.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vhost-manager_0.5.0-r5_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vhost-manager_0.5.0-r5_all.ipk index 2468ce10..36f6fef9 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vhost-manager_0.5.0-r5_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vhost-manager_0.5.0-r5_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-voip_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-voip_1.0.0-r1_all.ipk index 35936dd6..977ba748 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-voip_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-voip_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vortex-dns_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vortex-dns_1.0.0-r1_all.ipk index a6a568e3..8d7a1fd1 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vortex-dns_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vortex-dns_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vortex-firewall_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vortex-firewall_1.0.0-r1_all.ipk index 2bcff476..5573b5b0 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vortex-firewall_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-vortex-firewall_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-wazuh_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-wazuh_1.0.0-r1_all.ipk index 63c3944b..dd475f1d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-wazuh_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-wazuh_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-wireguard-dashboard_0.7.0-r5_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-wireguard-dashboard_0.7.0-r5_all.ipk index a050c79e..ec7f5c7d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-wireguard-dashboard_0.7.0-r5_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-wireguard-dashboard_0.7.0-r5_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-zigbee2mqtt_1.0.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-zigbee2mqtt_1.0.0-r2_all.ipk index 550a3ac7..71b8f571 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-zigbee2mqtt_1.0.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-app-zigbee2mqtt_1.0.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-theme-secubox_0.4.8-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-theme-secubox_0.4.8-r1_all.ipk index cb121b80..f57fab06 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-theme-secubox_0.4.8-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/luci-theme-secubox_0.4.8-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-adguardhome_1.0.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-adguardhome_1.0.0-r2_all.ipk index 7eb5b3c5..aa499b61 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-adguardhome_1.0.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-adguardhome_1.0.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-auth-logger_1.2.2-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-auth-logger_1.2.2-r1_all.ipk index d751e88a..7cae5985 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-auth-logger_1.2.2-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-auth-logger_1.2.2-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-crowdsec-custom_1.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-crowdsec-custom_1.1.0-r1_all.ipk index 8ed3cb9b..6a5cb395 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-crowdsec-custom_1.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-crowdsec-custom_1.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk index d8a5b324..c2011fe8 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-cs-firewall-bouncer_0.0.31-r4_aarch64_cortex-a72.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-cyberfeed_0.2.1-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-cyberfeed_0.2.1-r1_all.ipk index 3ef5cb77..6ef1204c 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-cyberfeed_0.2.1-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-cyberfeed_0.2.1-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-device-intel_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-device-intel_1.0.0-r1_all.ipk index 48661b94..41550b2d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-device-intel_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-device-intel_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-dns-provider_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-dns-provider_1.0.0-r1_all.ipk index 52f103de..ff7ab6f5 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-dns-provider_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-dns-provider_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-domoticz_1.0.0-r4_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-domoticz_1.0.0-r4_all.ipk index 0f226bed..9a0bcf26 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-domoticz_1.0.0-r4_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-domoticz_1.0.0-r4_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-exposure_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-exposure_1.0.0-r1_all.ipk index 81e762eb..5e37fce5 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-exposure_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-exposure_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-gitea_1.0.0-r5_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-gitea_1.0.0-r5_all.ipk index 16950e47..40eb37a4 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-gitea_1.0.0-r5_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-gitea_1.0.0-r5_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-gk2hub_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-gk2hub_0.1.0-r1_all.ipk index 9480b570..f84932bf 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-gk2hub_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-gk2hub_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-glances_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-glances_1.0.0-r1_all.ipk index c4b8dd49..50436647 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-glances_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-glances_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-guacamole_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-guacamole_1.0.0-r1_all.ipk index eb957e34..1c618ff2 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-guacamole_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-guacamole_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-haproxy_1.0.0-r24_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-haproxy_1.0.0-r24_all.ipk index 1aabd927..7c64e894 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-haproxy_1.0.0-r24_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-haproxy_1.0.0-r24_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-hexojs_1.0.0-r8_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-hexojs_1.0.0-r8_all.ipk index b7ff70a5..f5ebc203 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-hexojs_1.0.0-r8_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-hexojs_1.0.0-r8_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-ipblocklist_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-ipblocklist_1.0.0-r1_all.ipk index 08faedf3..04c6db71 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-ipblocklist_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-ipblocklist_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jabber_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jabber_1.0.0-r1_all.ipk index 534fb7d5..48596bc4 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jabber_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jabber_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jellyfin_3.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jellyfin_3.0.0-r1_all.ipk index 678c1808..a755d60f 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jellyfin_3.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jellyfin_3.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jitsi_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jitsi_1.0.0-r1_all.ipk index cda74a5c..9d0a94a2 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jitsi_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-jitsi_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-localai-wb_2.25.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-localai-wb_2.25.0-r1_all.ipk index 9e766f48..dc7837d5 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-localai-wb_2.25.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-localai-wb_2.25.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-localai_3.9.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-localai_3.9.0-r1_all.ipk index 4a8c43f5..3ef9ae6b 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-localai_3.9.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-localai_3.9.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-lyrion_2.0.2-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-lyrion_2.0.2-r1_all.ipk index db267a33..16f23dc0 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-lyrion_2.0.2-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-lyrion_2.0.2-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mac-guardian_0.5.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mac-guardian_0.5.0-r1_all.ipk index 8acf312f..4c184215 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mac-guardian_0.5.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mac-guardian_0.5.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-magicmirror2_0.4.0-r8_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-magicmirror2_0.4.0-r8_all.ipk index 9618e0ad..f5f690fd 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-magicmirror2_0.4.0-r8_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-magicmirror2_0.4.0-r8_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mailinabox_2.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mailinabox_2.0.0-r1_all.ipk index 1b8589e3..14aab583 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mailinabox_2.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mailinabox_2.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mailserver_2.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mailserver_2.0.0-r1_all.ipk index 7b4295a7..4d502625 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mailserver_2.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mailserver_2.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-matrix_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-matrix_1.0.0-r1_all.ipk index 1af27a06..114c8687 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-matrix_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-matrix_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-metabolizer_1.0.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-metabolizer_1.0.0-r3_all.ipk index 0190a021..41c66900 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-metabolizer_1.0.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-metabolizer_1.0.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mitmproxy_0.5.0-r19_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mitmproxy_0.5.0-r19_all.ipk index 51595e87..bc38463f 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mitmproxy_0.5.0-r19_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mitmproxy_0.5.0-r19_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mmpm_0.2.0-r5_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mmpm_0.2.0-r5_all.ipk index 36a66928..2c1af2cb 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mmpm_0.2.0-r5_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-mmpm_0.2.0-r5_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-nextcloud_1.0.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-nextcloud_1.0.0-r2_all.ipk index 1b3e4cb5..9c5f9506 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-nextcloud_1.0.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-nextcloud_1.0.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-ollama_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-ollama_0.1.0-r1_all.ipk index e2c0b24b..03699710 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-ollama_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-ollama_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-picobrew_1.0.0-r7_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-picobrew_1.0.0-r7_all.ipk index 83a2d84e..8d9e2fbc 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-picobrew_1.0.0-r7_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-picobrew_1.0.0-r7_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-rustdesk_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-rustdesk_1.0.0-r1_all.ipk index 1e676051..6a435110 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-rustdesk_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-rustdesk_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-simplex_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-simplex_1.0.0-r1_all.ipk index a70555d8..34a86a3d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-simplex_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-simplex_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-smbfs_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-smbfs_1.0.0-r1_all.ipk index 5684529c..ab2079ab 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-smbfs_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-smbfs_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-streamlit_1.0.0-r5_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-streamlit_1.0.0-r5_all.ipk index fe76ee9a..bfed17b8 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-streamlit_1.0.0-r5_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-streamlit_1.0.0-r5_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-tor_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-tor_1.0.0-r1_all.ipk index 6c4a7838..ec78b3fa 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-tor_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-tor_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-voip_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-voip_1.0.0-r1_all.ipk index 746c5311..e20f08a2 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-voip_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-voip_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-webapp_1.5.0-r7_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-webapp_1.5.0-r7_all.ipk index dba7a684..3308355d 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-webapp_1.5.0-r7_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-webapp_1.5.0-r7_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-zigbee2mqtt_1.0.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-zigbee2mqtt_1.0.0-r3_all.ipk index 930e39cf..8cf32a74 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-zigbee2mqtt_1.0.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app-zigbee2mqtt_1.0.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app_1.0.0-r2_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app_1.0.0-r2_all.ipk index cf99e94f..2253a488 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app_1.0.0-r2_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-app_1.0.0-r2_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-config-advisor_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-config-advisor_0.1.0-r1_all.ipk index a25a71bd..8a729fcc 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-config-advisor_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-config-advisor_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-content-pkg_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-content-pkg_1.0.0-r1_all.ipk index 9b58cfb0..d0c0b706 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-content-pkg_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-content-pkg_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-cookie-tracker_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-cookie-tracker_1.0.0-r1_all.ipk index 06c51d94..e0064d48 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-cookie-tracker_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-cookie-tracker_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-core_0.10.0-r16_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-core_0.10.0-r16_all.ipk index b778aae0..992adca9 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-core_0.10.0-r16_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-core_0.10.0-r16_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-cve-triage_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-cve-triage_1.0.0-r1_all.ipk index 23de70dd..e73b5879 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-cve-triage_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-cve-triage_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-dns-guard_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-dns-guard_1.0.0-r1_all.ipk index e9dcb346..a91fe440 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-dns-guard_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-dns-guard_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-identity_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-identity_0.1.0-r1_all.ipk index 8c10cac8..b670e8ff 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-identity_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-identity_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-iot-guard_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-iot-guard_1.0.0-r1_all.ipk index 7cd2deba..46c86d1b 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-iot-guard_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-iot-guard_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-localrecall_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-localrecall_1.0.0-r1_all.ipk index 9e6873ad..4ec4c595 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-localrecall_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-localrecall_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-master-link_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-master-link_1.0.0-r1_all.ipk index d7acfa88..1ed406d0 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-master-link_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-master-link_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-mcp-server_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-mcp-server_1.0.0-r1_all.ipk index 88bd62c4..3f1053aa 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-mcp-server_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-mcp-server_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-mirrornet_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-mirrornet_0.1.0-r1_all.ipk index 0ef184fb..eb480c26 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-mirrornet_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-mirrornet_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-network-anomaly_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-network-anomaly_1.0.0-r1_all.ipk index 562f9345..77441cfc 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-network-anomaly_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-network-anomaly_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-p2p-intel_0.1.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-p2p-intel_0.1.0-r1_all.ipk index 2cb2e081..e99e84e9 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-p2p-intel_0.1.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-p2p-intel_0.1.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-p2p_0.6.0-r3_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-p2p_0.6.0-r3_all.ipk index 914aa229..2279a846 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-p2p_0.6.0-r3_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-p2p_0.6.0-r3_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-threat-analyst_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-threat-analyst_1.0.0-r1_all.ipk index 35c5b0c0..a67b8f34 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-threat-analyst_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-threat-analyst_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-vortex-dns_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-vortex-dns_1.0.0-r1_all.ipk index 562c3248..4fcf3b1e 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-vortex-dns_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-vortex-dns_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-vortex-firewall_1.0.0-r1_all.ipk b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-vortex-firewall_1.0.0-r1_all.ipk index 2f8c01dd..b5cc4bf6 100644 Binary files a/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-vortex-firewall_1.0.0-r1_all.ipk and b/package/secubox/secubox-app-bonus/root/www/secubox-feed/secubox-vortex-firewall_1.0.0-r1_all.ipk differ diff --git a/package/secubox/secubox-app-tor/README.md b/package/secubox/secubox-app-tor/README.md index 08101886..d633f3ce 100644 --- a/package/secubox/secubox-app-tor/README.md +++ b/package/secubox/secubox-app-tor/README.md @@ -41,6 +41,28 @@ torctl killswitch off # Disable kill switch - **DNS over Tor** -- DNS queries resolved through Tor network - **Kill switch** -- Blocks all non-Tor traffic if Tor goes down +## Excluded Domains (System Services Bypass) + +When Tor Shield is active, certain system services (opkg, NTP, ACME) need direct +internet access. These domains bypass Tor DNS and routing: + +- OpenWrt package repositories (`downloads.openwrt.org`, mirrors) +- NTP time servers (`pool.ntp.org`, `time.google.com`) +- Let's Encrypt ACME (`acme-v02.api.letsencrypt.org`) +- DNS provider APIs (Gandi, OVH, Cloudflare) + +Configure additional exclusions in UCI: + +```bash +uci add_list tor-shield.trans.excluded_domains='my.example.com' +uci commit tor-shield +/etc/init.d/tor-shield restart +``` + +The exclusions are implemented at two levels: +1. **dnsmasq bypass** -- DNS queries for excluded domains go directly to upstream +2. **iptables RETURN** -- Traffic to resolved IPs bypasses Tor transparent proxy + ## Dependencies - `iptables` diff --git a/package/secubox/secubox-app-tor/files/etc/config/tor-shield b/package/secubox/secubox-app-tor/files/etc/config/tor-shield index 22fda596..4a54717c 100644 --- a/package/secubox/secubox-app-tor/files/etc/config/tor-shield +++ b/package/secubox/secubox-app-tor/files/etc/config/tor-shield @@ -4,7 +4,9 @@ config tor-shield 'main' option enabled '0' option mode 'transparent' - option dns_over_tor '1' + # DNS over Tor disabled by default - enables opkg/system DNS to work + # When disabled, public DNS servers are automatically excluded from kill switch + option dns_over_tor '0' option kill_switch '1' option auto_bridges '0' @@ -12,7 +14,8 @@ config preset 'anonymous' option name 'Full Anonymity' option icon 'shield' option mode 'transparent' - option dns_over_tor '1' + # DNS over Tor disabled for compatibility - traffic still routes through Tor + option dns_over_tor '0' option kill_switch '1' config preset 'selective' @@ -50,10 +53,26 @@ config transparent 'trans' list excluded_ips '10.0.0.0/8' list excluded_ips '172.16.0.0/12' list excluded_ips '127.0.0.0/8' - # Domains excluded from Tor routing (for opkg, NTP, etc) + # Domains excluded from Tor routing (DNS bypasses Tor for these) + # OpenWrt package repositories list excluded_domains 'downloads.openwrt.org' list excluded_domains 'openwrt.org' + list excluded_domains 'mirror.leaseweb.com' + list excluded_domains 'mirror1.openwrt.org' + # NTP time servers + list excluded_domains 'pool.ntp.org' + list excluded_domains 'time.google.com' + list excluded_domains 'time.cloudflare.com' + # Security feeds (CVE, threat intel) list excluded_domains 'services.nvd.nist.gov' + list excluded_domains 'cve.mitre.org' + # Let's Encrypt ACME (for SSL certificates) + list excluded_domains 'acme-v02.api.letsencrypt.org' + list excluded_domains 'letsencrypt.org' + # DNS verification (optional, for own domains) + list excluded_domains 'api.gandi.net' + list excluded_domains 'api.ovh.com' + list excluded_domains 'api.cloudflare.com' config bridges 'bridges' option enabled '0' diff --git a/package/secubox/secubox-app-tor/files/etc/init.d/tor-shield b/package/secubox/secubox-app-tor/files/etc/init.d/tor-shield index 6adcea8f..c50f718d 100755 --- a/package/secubox/secubox-app-tor/files/etc/init.d/tor-shield +++ b/package/secubox/secubox-app-tor/files/etc/init.d/tor-shield @@ -136,6 +136,92 @@ add_bridge_line() { echo "Bridge $1" >> "$TORRC" } +# Configure dnsmasq to bypass Tor DNS for excluded domains +# This ensures opkg and system services can resolve domains directly +setup_dnsmasq_bypass() { + local dnsmasq_conf="/tmp/dnsmasq.d/tor-shield-bypass.conf" + local upstream_dns="" + + # Get upstream DNS from WAN interface + upstream_dns=$(uci -q get network.wan.dns | awk '{print $1}') + [ -z "$upstream_dns" ] && upstream_dns=$(cat /tmp/resolv.conf.d/resolv.conf.auto 2>/dev/null | grep nameserver | head -1 | awk '{print $2}') + [ -z "$upstream_dns" ] && upstream_dns="1.1.1.1" # Fallback to Cloudflare + + mkdir -p /tmp/dnsmasq.d + + # Generate dnsmasq server directives for excluded domains + # These domains will be resolved directly, bypassing Tor DNS + { + echo "# Tor Shield DNS bypass - auto-generated" + echo "# Domains listed here are resolved directly (not through Tor)" + config_load "$CONFIG" + config_list_foreach trans excluded_domains _add_dnsmasq_server "$upstream_dns" + } > "$dnsmasq_conf" + + # Restart dnsmasq to apply changes + if [ -f "$dnsmasq_conf" ] && [ -s "$dnsmasq_conf" ]; then + /etc/init.d/dnsmasq restart 2>/dev/null & + logger -t tor-shield "DNS bypass configured for excluded domains (upstream: $upstream_dns)" + fi +} + +_add_dnsmasq_server() { + local domain="$1" + local upstream="$2" + [ -n "$domain" ] && echo "server=/$domain/$upstream" +} + +cleanup_dnsmasq_bypass() { + rm -f /tmp/dnsmasq.d/tor-shield-bypass.conf + /etc/init.d/dnsmasq restart 2>/dev/null & +} + +# Exclude public DNS servers when DNS over Tor is disabled +# This allows DNS resolution to work with the kill switch enabled +exclude_dns_servers() { + local dns_servers="1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 9.9.9.9 149.112.112.112" + + # Also get WAN DNS servers + local wan_dns=$(uci -q get network.wan.dns) + [ -n "$wan_dns" ] && dns_servers="$dns_servers $wan_dns" + + # Get DNS from resolv.conf + local resolv_dns=$(grep "^nameserver" /etc/resolv.conf 2>/dev/null | awk '{print $2}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$') + [ -n "$resolv_dns" ] && dns_servers="$dns_servers $resolv_dns" + + # Add each DNS server to iptables exclusion (nat and filter) + for dns in $dns_servers; do + # Skip private IPs (already excluded) + case "$dns" in + 127.*|10.*|192.168.*|172.1[6-9].*|172.2[0-9].*|172.3[0-1].*) continue ;; + esac + iptables -t nat -A TOR_SHIELD -d "$dns" -j RETURN 2>/dev/null + done + + logger -t tor-shield "DNS servers excluded from Tor routing (dns_over_tor disabled)" +} + +# Add DNS servers to filter chain (for kill switch) +exclude_dns_servers_filter() { + local dns_servers="1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 9.9.9.9 149.112.112.112" + + # Also get WAN DNS servers + local wan_dns=$(uci -q get network.wan.dns) + [ -n "$wan_dns" ] && dns_servers="$dns_servers $wan_dns" + + # Get DNS from resolv.conf + local resolv_dns=$(grep "^nameserver" /etc/resolv.conf 2>/dev/null | awk '{print $2}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$') + [ -n "$resolv_dns" ] && dns_servers="$dns_servers $resolv_dns" + + # Add each DNS server to filter ACCEPT + for dns in $dns_servers; do + case "$dns" in + 127.*|10.*|192.168.*|172.1[6-9].*|172.2[0-9].*|172.3[0-1].*) continue ;; + esac + iptables -t filter -A TOR_SHIELD -d "$dns" -j ACCEPT 2>/dev/null + done +} + add_hidden_service() { local cfg="$1" local enabled name local_port virtual_port @@ -192,6 +278,9 @@ setup_iptables() { [ "$mode" = "transparent" ] || return 0 + # Setup dnsmasq bypass for excluded domains (critical fix for opkg) + setup_dnsmasq_bypass + # Create chains (ignore "already exists" errors) iptables -t nat -N TOR_SHIELD 2>/dev/null || true iptables -t filter -N TOR_SHIELD 2>/dev/null || true @@ -202,6 +291,12 @@ setup_iptables() { # Exclude local networks config_list_foreach trans excluded_ips add_excluded_ip + # When DNS over Tor is disabled, exclude public DNS servers + # so the kill switch doesn't block DNS queries + if [ "$dns_over_tor" != "1" ]; then + exclude_dns_servers + fi + # Exclude domains (resolve to IP and bypass Tor) config_list_foreach trans excluded_domains add_excluded_domain @@ -223,6 +318,10 @@ setup_iptables() { iptables -t filter -A TOR_SHIELD -d 127.0.0.0/8 -j ACCEPT config_list_foreach trans excluded_ips add_excluded_filter_ip config_list_foreach trans excluded_domains add_excluded_domain_filter + # When DNS over Tor is disabled, allow DNS server traffic through kill switch + if [ "$dns_over_tor" != "1" ]; then + exclude_dns_servers_filter + fi # Allow response packets for inbound connections (HAProxy, etc) iptables -t filter -A TOR_SHIELD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -t filter -A TOR_SHIELD -j REJECT @@ -369,6 +468,9 @@ remove_iptables() { # Clean up nftables rules for server mode cleanup_nftables_wan + + # Clean up dnsmasq bypass rules + cleanup_dnsmasq_bypass } start_service() { diff --git a/package/secubox/secubox-app-yggdrasil-discovery/Makefile b/package/secubox/secubox-app-yggdrasil-discovery/Makefile new file mode 100644 index 00000000..e5228d16 --- /dev/null +++ b/package/secubox/secubox-app-yggdrasil-discovery/Makefile @@ -0,0 +1,54 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=secubox-app-yggdrasil-discovery +PKG_VERSION:=1.0.0 +PKG_RELEASE:=1 + +PKG_MAINTAINER:=SecuBox +PKG_LICENSE:=MIT + +include $(INCLUDE_DIR)/package.mk + +define Package/secubox-app-yggdrasil-discovery + SECTION:=secubox + CATEGORY:=SecuBox + SUBMENU:=MirrorNet + TITLE:=Yggdrasil Mesh Peer Discovery + DEPENDS:=+yggdrasil +secubox-mirrornet +secubox-master-link + PKGARCH:=all + PKG_FLAGS:=nonshared +endef + +define Package/secubox-app-yggdrasil-discovery/description + Extended peer discovery for Yggdrasil mesh networks. + Features: + - Automatic peer announcement via gossip protocol + - Trust-verified auto-peering with SecuBox nodes + - Bootstrap peer list for initial discovery + - Integration with master-link authentication +endef + +define Build/Compile +endef + +define Package/secubox-app-yggdrasil-discovery/install + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) ./files/etc/config/yggdrasil-discovery $(1)/etc/config/ + + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) ./files/usr/sbin/yggctl $(1)/usr/sbin/ + + $(INSTALL_DIR) $(1)/usr/lib/yggdrasil-discovery + $(INSTALL_BIN) ./files/usr/lib/yggdrasil-discovery/*.sh $(1)/usr/lib/yggdrasil-discovery/ +endef + +define Package/secubox-app-yggdrasil-discovery/postinst +#!/bin/sh +[ -z "$${IPKG_INSTROOT}" ] && { + # Add yggdrasil_peer handler to mirrornet gossip + logger -t yggdrasil-discovery "Yggdrasil peer discovery installed" +} +exit 0 +endef + +$(eval $(call BuildPackage,secubox-app-yggdrasil-discovery)) diff --git a/package/secubox/secubox-app-yggdrasil-discovery/files/etc/config/yggdrasil-discovery b/package/secubox/secubox-app-yggdrasil-discovery/files/etc/config/yggdrasil-discovery new file mode 100644 index 00000000..3e89ced5 --- /dev/null +++ b/package/secubox/secubox-app-yggdrasil-discovery/files/etc/config/yggdrasil-discovery @@ -0,0 +1,16 @@ +config discovery 'main' + option enabled '1' + option auto_announce '1' + option announce_interval '300' + option auto_peer '1' + option require_trust '1' + option min_trust_score '50' + +config bootstrap + list peer 'tcp://51.15.204.214:12345' + list peer 'tcp://ygg.mkg20001.io:443' + +config trusted_network 'secubox' + option name 'SecuBox Mesh' + option description 'Official SecuBox peer network' + list bootstrap 'tcp://ygg.secubox.in:443' diff --git a/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/core.sh b/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/core.sh new file mode 100644 index 00000000..3e7bf7fe --- /dev/null +++ b/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/core.sh @@ -0,0 +1,143 @@ +#!/bin/sh +# Yggdrasil Discovery Core Library + +DISCOVERY_DIR="/var/lib/yggdrasil-discovery" +PEERS_CACHE="$DISCOVERY_DIR/peers.json" +ANNOUNCED_FILE="$DISCOVERY_DIR/announced.json" + +# Initialize discovery storage +discovery_init() { + mkdir -p "$DISCOVERY_DIR" + [ -f "$PEERS_CACHE" ] || echo '[]' > "$PEERS_CACHE" +} + +# Get local Yggdrasil IPv6 +get_ygg_ipv6() { + ip -6 addr show tun0 2>/dev/null | grep -oP '2[0-9a-f:]+(?=/)' +} + +# Get local Yggdrasil public key +get_ygg_pubkey() { + if command -v yggdrasilctl >/dev/null 2>&1; then + yggdrasilctl -json getSelf 2>/dev/null | jsonfilter -e '@.key' 2>/dev/null + fi +} + +# Check if peer is trusted via master-link +is_peer_trusted() { + local ml_fingerprint="$1" + + [ -z "$ml_fingerprint" ] && return 1 + + # Check master-link approval + if [ -f /usr/lib/secubox/master-link.sh ]; then + . /usr/lib/secubox/master-link.sh + ml_is_peer_approved "$ml_fingerprint" 2>/dev/null && return 0 + fi + + # Check ZKP verification + if [ -f /var/lib/secubox-master-link/zkp-verified.json ]; then + grep -q "\"$ml_fingerprint\"" /var/lib/secubox-master-link/zkp-verified.json 2>/dev/null && return 0 + fi + + # Check reputation score + if [ -f /usr/lib/mirrornet/reputation.sh ]; then + . /usr/lib/mirrornet/reputation.sh + local score + score=$(reputation_get_score "$ml_fingerprint" 2>/dev/null || echo 0) + local min_trust + min_trust=$(uci -q get yggdrasil-discovery.main.min_trust_score || echo 50) + [ "$score" -ge "$min_trust" ] && return 0 + fi + + return 1 +} + +# Add peer to cache +add_peer_to_cache() { + local ipv6="$1" + local pubkey="$2" + local hostname="$3" + local ml_fingerprint="$4" + local zkp_fingerprint="$5" + local timestamp="$6" + + [ -z "$ipv6" ] && return 1 + + local peer_json + peer_json=$(cat </dev/null; then + # Update existing peer + local tmp_file="/tmp/peers_cache_$$.json" + # Simple approach: remove old entry and add new + grep -v "\"$ipv6\"" "$PEERS_CACHE" > "$tmp_file" 2>/dev/null || echo '[]' > "$tmp_file" + + if [ "$(cat "$tmp_file")" = "[]" ] || [ ! -s "$tmp_file" ]; then + echo "[$peer_json]" > "$PEERS_CACHE" + else + # Remove trailing ] and add new entry + sed 's/]$//' "$tmp_file" | sed 's/$/,/' > "$tmp_file.2" + echo "$peer_json]" >> "$tmp_file.2" + mv "$tmp_file.2" "$PEERS_CACHE" + fi + rm -f "$tmp_file" "$tmp_file.2" + else + # Add new peer + if [ ! -f "$PEERS_CACHE" ] || [ "$(cat "$PEERS_CACHE" 2>/dev/null)" = "[]" ]; then + echo "[$peer_json]" > "$PEERS_CACHE" + else + sed "s/]$/,$peer_json]/" "$PEERS_CACHE" > "$PEERS_CACHE.tmp" + mv "$PEERS_CACHE.tmp" "$PEERS_CACHE" + fi + fi + + logger -t yggdrasil-discovery "Added/updated peer: $hostname ($ipv6)" +} + +# Remove peer from cache +remove_peer_from_cache() { + local ipv6="$1" + + [ -z "$ipv6" ] && return 1 + [ ! -f "$PEERS_CACHE" ] && return 0 + + local tmp_file="/tmp/peers_cache_$$.json" + grep -v "\"$ipv6\"" "$PEERS_CACHE" > "$tmp_file" 2>/dev/null + + # Ensure valid JSON array + if [ ! -s "$tmp_file" ]; then + echo '[]' > "$PEERS_CACHE" + else + mv "$tmp_file" "$PEERS_CACHE" + fi + + rm -f "$tmp_file" + logger -t yggdrasil-discovery "Removed peer: $ipv6" +} + +# Get peer count +get_peer_count() { + [ ! -f "$PEERS_CACHE" ] && echo 0 && return + jsonfilter -i "$PEERS_CACHE" -e '@[*]' 2>/dev/null | wc -l +} + +# Get trusted peer count +get_trusted_peer_count() { + [ ! -f "$PEERS_CACHE" ] && echo 0 && return + + local count=0 + jsonfilter -i "$PEERS_CACHE" -e '@[*]' 2>/dev/null | while read -r peer; do + local ml_fp + ml_fp=$(echo "$peer" | jsonfilter -e '@.ml_fingerprint' 2>/dev/null) + is_peer_trusted "$ml_fp" && count=$((count + 1)) + done + echo "$count" +} + +# Initialize +discovery_init diff --git a/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/daemon.sh b/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/daemon.sh new file mode 100644 index 00000000..14122fb6 --- /dev/null +++ b/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/daemon.sh @@ -0,0 +1,108 @@ +#!/bin/sh +# Yggdrasil Discovery Daemon +# Periodically announces this node and discovers peers + +. /usr/lib/yggdrasil-discovery/core.sh + +PIDFILE="/var/run/yggdrasil-discovery.pid" +LOGFILE="/var/log/yggdrasil-discovery.log" + +log() { + echo "$(date '+%Y-%m-%d %H:%M:%S') $1" >> "$LOGFILE" + logger -t yggdrasil-discovery "$1" +} + +# Check if already running +is_running() { + [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null +} + +# Start daemon +start() { + if is_running; then + echo "Daemon already running (PID $(cat "$PIDFILE"))" + return 1 + fi + + local enabled + enabled=$(uci -q get yggdrasil-discovery.main.enabled) + if [ "$enabled" != "1" ]; then + echo "Yggdrasil discovery is disabled" + return 1 + fi + + echo $$ > "$PIDFILE" + log "Daemon started (PID $$)" + + # Main loop + while true; do + # Check if Yggdrasil is running + local ipv6 + ipv6=$(get_ygg_ipv6) + + if [ -z "$ipv6" ]; then + log "Waiting for Yggdrasil..." + sleep 30 + continue + fi + + # Auto-announce if enabled + local auto_announce + auto_announce=$(uci -q get yggdrasil-discovery.main.auto_announce) + + if [ "$auto_announce" = "1" ]; then + log "Announcing node..." + /usr/sbin/yggctl announce >/dev/null 2>&1 + fi + + # Get announce interval + local interval + interval=$(uci -q get yggdrasil-discovery.main.announce_interval) + interval="${interval:-300}" + + sleep "$interval" + done +} + +# Stop daemon +stop() { + if [ -f "$PIDFILE" ]; then + local pid + pid=$(cat "$PIDFILE") + kill "$pid" 2>/dev/null + rm -f "$PIDFILE" + log "Daemon stopped" + echo "Daemon stopped" + else + echo "Daemon not running" + fi +} + +# Status +status() { + if is_running; then + echo "Running (PID $(cat "$PIDFILE"))" + else + echo "Stopped" + fi +} + +case "${1:-}" in + start) + start & + ;; + stop) + stop + ;; + restart) + stop + sleep 1 + start & + ;; + status) + status + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + ;; +esac diff --git a/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/gossip-handler.sh b/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/gossip-handler.sh new file mode 100644 index 00000000..b491cd4e --- /dev/null +++ b/package/secubox/secubox-app-yggdrasil-discovery/files/usr/lib/yggdrasil-discovery/gossip-handler.sh @@ -0,0 +1,124 @@ +#!/bin/sh +# Yggdrasil Discovery Gossip Handler +# Handles yggdrasil_peer messages from mirrornet gossip protocol + +. /usr/lib/yggdrasil-discovery/core.sh + +# Handle incoming yggdrasil_peer announcement +handle_peer_announce() { + local data="$1" + local origin="$2" + + # Parse announcement data + local ipv6 pubkey hostname ml_fingerprint zkp_fingerprint timestamp + + ipv6=$(echo "$data" | jsonfilter -e '@.ipv6' 2>/dev/null) + pubkey=$(echo "$data" | jsonfilter -e '@.pubkey' 2>/dev/null) + hostname=$(echo "$data" | jsonfilter -e '@.hostname' 2>/dev/null) + ml_fingerprint=$(echo "$data" | jsonfilter -e '@.ml_fingerprint' 2>/dev/null) + zkp_fingerprint=$(echo "$data" | jsonfilter -e '@.zkp_fingerprint' 2>/dev/null) + timestamp=$(echo "$data" | jsonfilter -e '@.timestamp' 2>/dev/null) + + # Validate IPv6 is in Yggdrasil range (200::/7) + if ! echo "$ipv6" | grep -qE '^2[0-9a-f]{2}:'; then + logger -t yggdrasil-discovery "Rejected: Invalid Yggdrasil IPv6: $ipv6" + return 1 + fi + + # Don't add self + local my_ipv6 + my_ipv6=$(get_ygg_ipv6) + if [ "$ipv6" = "$my_ipv6" ]; then + return 0 + fi + + # Add to peer cache + add_peer_to_cache "$ipv6" "$pubkey" "$hostname" "$ml_fingerprint" "$zkp_fingerprint" "$timestamp" + + # Auto-peer if enabled and trusted + local auto_peer + auto_peer=$(uci -q get yggdrasil-discovery.main.auto_peer) + + if [ "$auto_peer" = "1" ]; then + local require_trust + require_trust=$(uci -q get yggdrasil-discovery.main.require_trust) + + local should_connect=0 + + if [ "$require_trust" = "1" ]; then + # Only connect if trusted + if is_peer_trusted "$ml_fingerprint"; then + should_connect=1 + logger -t yggdrasil-discovery "Auto-peering with trusted node: $hostname ($ipv6)" + else + logger -t yggdrasil-discovery "Skipping untrusted peer: $hostname ($ipv6)" + fi + else + # Connect to all discovered peers + should_connect=1 + fi + + if [ "$should_connect" = "1" ] && command -v yggdrasilctl >/dev/null 2>&1; then + # Check if already connected + local already_connected=0 + yggdrasilctl -json getPeers 2>/dev/null | grep -q "$ipv6" && already_connected=1 + + if [ "$already_connected" = "0" ]; then + # Try to connect + yggdrasilctl addPeer "tcp://[$ipv6]:0" 2>/dev/null && { + logger -t yggdrasil-discovery "Connected to: $hostname ($ipv6)" + } || { + logger -t yggdrasil-discovery "Failed to connect to: $hostname ($ipv6)" + } + fi + fi + fi + + return 0 +} + +# Handle peer departure (when a node goes offline) +handle_peer_departure() { + local data="$1" + local origin="$2" + + local ipv6 + ipv6=$(echo "$data" | jsonfilter -e '@.ipv6' 2>/dev/null) + + [ -z "$ipv6" ] && return 1 + + remove_peer_from_cache "$ipv6" + logger -t yggdrasil-discovery "Peer departed: $ipv6" +} + +# Main handler entry point (called from gossip.sh) +handle() { + local action="$1" + local data="$2" + local origin="$3" + + case "$action" in + announce) + handle_peer_announce "$data" "$origin" + ;; + departure) + handle_peer_departure "$data" "$origin" + ;; + *) + # Default to announce + handle_peer_announce "$data" "$origin" + ;; + esac +} + +# CLI entry point +case "${1:-}" in + handle) + shift + handle "$@" + ;; + *) + # Called with just data (from gossip.sh) + handle "announce" "$1" "$2" + ;; +esac diff --git a/package/secubox/secubox-app-yggdrasil-discovery/files/usr/sbin/yggctl b/package/secubox/secubox-app-yggdrasil-discovery/files/usr/sbin/yggctl new file mode 100644 index 00000000..a07dc888 --- /dev/null +++ b/package/secubox/secubox-app-yggdrasil-discovery/files/usr/sbin/yggctl @@ -0,0 +1,491 @@ +#!/bin/sh +# yggctl - Yggdrasil Extended Peer Discovery CLI +# Part of SecuBox MirrorNet + +VERSION="1.0.0" +DISCOVERY_LIB="/usr/lib/yggdrasil-discovery" +PEERS_CACHE="/var/lib/yggdrasil-discovery/peers.json" +ANNOUNCED_FILE="/var/lib/yggdrasil-discovery/announced.json" + +. /lib/functions.sh + +# Ensure directories exist +mkdir -p /var/lib/yggdrasil-discovery + +# Load library modules +[ -f "$DISCOVERY_LIB/core.sh" ] && . "$DISCOVERY_LIB/core.sh" + +usage() { + cat < [options] + +Peer Discovery: + status Show discovery status and stats + announce Announce this node to mesh peers + discover Discover SecuBox peers on mesh + list List known Yggdrasil peers + +Peer Management: + add Add peer manually + remove Remove peer + auto-connect Auto-connect to trusted discovered peers + trust Mark peer as trusted + untrust Remove peer trust + +Yggdrasil Info: + self Show this node's Yggdrasil info + peers Show current Yggdrasil peers + routes Show Yggdrasil routing table + +Bootstrap: + bootstrap list List bootstrap peers + bootstrap add Add bootstrap peer + bootstrap remove Remove bootstrap peer + bootstrap connect Connect to bootstrap peers + +Settings: + config show Show current configuration + config set Set configuration value + enable Enable auto-discovery + disable Disable auto-discovery + +EOF + exit 0 +} + +# Get Yggdrasil self info +cmd_self() { + echo "=== Yggdrasil Node Info ===" + + # Get IPv6 address + local ipv6 + ipv6=$(ip -6 addr show tun0 2>/dev/null | grep -oP '2[0-9a-f:]+(?=/)') + + if [ -z "$ipv6" ]; then + echo "Status: NOT RUNNING" + echo "Yggdrasil interface (tun0) not found" + return 1 + fi + + echo "Status: RUNNING" + echo "IPv6: $ipv6" + + # Get public key via yggdrasilctl if available + if command -v yggdrasilctl >/dev/null 2>&1; then + local pubkey + pubkey=$(yggdrasilctl -json getSelf 2>/dev/null | jsonfilter -e '@.key' 2>/dev/null) + [ -n "$pubkey" ] && echo "Public Key: $pubkey" + + local coords + coords=$(yggdrasilctl -json getSelf 2>/dev/null | jsonfilter -e '@.coords' 2>/dev/null) + [ -n "$coords" ] && echo "Coords: $coords" + fi + + # Get hostname + echo "Hostname: $(cat /proc/sys/kernel/hostname)" + + # Check if announced + if [ -f "$ANNOUNCED_FILE" ]; then + local last_announce + last_announce=$(jsonfilter -i "$ANNOUNCED_FILE" -e '@.timestamp' 2>/dev/null) + [ -n "$last_announce" ] && echo "Last Announced: $(date -d @$last_announce 2>/dev/null || date -r $last_announce 2>/dev/null || echo $last_announce)" + fi +} + +# Show current Yggdrasil peers +cmd_peers() { + echo "=== Yggdrasil Peers ===" + + if ! command -v yggdrasilctl >/dev/null 2>&1; then + echo "yggdrasilctl not found" + return 1 + fi + + yggdrasilctl -json getPeers 2>/dev/null | jsonfilter -e '@.peers[*]' 2>/dev/null | while read -r peer; do + local addr key uptime + addr=$(echo "$peer" | jsonfilter -e '@.remote' 2>/dev/null) + key=$(echo "$peer" | jsonfilter -e '@.key' 2>/dev/null) + uptime=$(echo "$peer" | jsonfilter -e '@.uptime' 2>/dev/null) + + [ -n "$addr" ] && echo " $addr" + [ -n "$key" ] && echo " Key: ${key:0:16}..." + [ -n "$uptime" ] && echo " Uptime: ${uptime}s" + echo "" + done +} + +# Announce this node to mesh +cmd_announce() { + echo "Announcing node to mesh..." + + local ipv6 + ipv6=$(ip -6 addr show tun0 2>/dev/null | grep -oP '2[0-9a-f:]+(?=/)') + + if [ -z "$ipv6" ]; then + echo "Error: Yggdrasil not running (no tun0 interface)" + return 1 + fi + + # Get public key + local pubkey="" + if command -v yggdrasilctl >/dev/null 2>&1; then + pubkey=$(yggdrasilctl -json getSelf 2>/dev/null | jsonfilter -e '@.key' 2>/dev/null) + fi + + # Get master-link trust info + local ml_fingerprint="" + local ml_role="" + if [ -f /etc/config/master-link ]; then + ml_fingerprint=$(uci -q get master-link.main.fingerprint) + ml_role=$(uci -q get master-link.main.role) + fi + + # Get ZKP fingerprint if available + local zkp_fingerprint="" + if [ -f /etc/config/master-link ]; then + zkp_fingerprint=$(uci -q get master-link.main.zkp_fingerprint) + fi + + local hostname + hostname=$(cat /proc/sys/kernel/hostname) + + local timestamp + timestamp=$(date +%s) + + # Create announcement data + local announce_data + announce_data=$(cat < "$ANNOUNCED_FILE" + + # Broadcast via gossip + if [ -f /usr/lib/mirrornet/gossip.sh ]; then + . /usr/lib/mirrornet/gossip.sh + local msg_id + msg_id=$(gossip_broadcast "yggdrasil_peer" "$announce_data" "$PRIORITY_NORMAL") + echo "Announced via gossip (msg_id: $msg_id)" + else + echo "Warning: gossip.sh not found, announcement not broadcast" + fi + + echo "Node announced successfully" + echo " IPv6: $ipv6" + echo " Hostname: $hostname" + [ -n "$pubkey" ] && echo " PubKey: ${pubkey:0:16}..." + [ -n "$ml_fingerprint" ] && echo " ML Fingerprint: $ml_fingerprint" +} + +# Discover peers +cmd_discover() { + echo "=== Discovering SecuBox Yggdrasil Peers ===" + + if [ ! -f "$PEERS_CACHE" ]; then + echo "No peers discovered yet." + echo "Run 'yggctl announce' to announce yourself first." + return 0 + fi + + local count=0 + jsonfilter -i "$PEERS_CACHE" -e '@[*]' 2>/dev/null | while read -r peer; do + local ipv6 hostname ml_fp timestamp trusted + ipv6=$(echo "$peer" | jsonfilter -e '@.ipv6' 2>/dev/null) + hostname=$(echo "$peer" | jsonfilter -e '@.hostname' 2>/dev/null) + ml_fp=$(echo "$peer" | jsonfilter -e '@.ml_fingerprint' 2>/dev/null) + timestamp=$(echo "$peer" | jsonfilter -e '@.timestamp' 2>/dev/null) + + # Check if trusted via master-link + trusted="NO" + if [ -n "$ml_fp" ] && [ -f /usr/lib/secubox/master-link.sh ]; then + . /usr/lib/secubox/master-link.sh + if ml_is_peer_approved "$ml_fp" 2>/dev/null; then + trusted="YES" + fi + fi + + count=$((count + 1)) + echo "[$count] $hostname" + echo " IPv6: $ipv6" + [ -n "$ml_fp" ] && echo " ML Fingerprint: $ml_fp" + echo " Trusted: $trusted" + echo " Last Seen: $(date -d @$timestamp 2>/dev/null || echo $timestamp)" + echo "" + done + + [ "$count" -eq 0 ] && echo "No peers discovered." +} + +# List known peers +cmd_list() { + cmd_discover +} + +# Auto-connect to trusted peers +cmd_auto_connect() { + echo "Auto-connecting to trusted Yggdrasil peers..." + + local require_trust + require_trust=$(uci -q get yggdrasil-discovery.main.require_trust) + require_trust="${require_trust:-1}" + + local min_trust + min_trust=$(uci -q get yggdrasil-discovery.main.min_trust_score) + min_trust="${min_trust:-50}" + + if [ ! -f "$PEERS_CACHE" ]; then + echo "No peers to connect to. Run 'yggctl discover' first." + return 0 + fi + + local connected=0 + + jsonfilter -i "$PEERS_CACHE" -e '@[*]' 2>/dev/null | while read -r peer; do + local ipv6 pubkey ml_fp hostname + ipv6=$(echo "$peer" | jsonfilter -e '@.ipv6' 2>/dev/null) + pubkey=$(echo "$peer" | jsonfilter -e '@.pubkey' 2>/dev/null) + ml_fp=$(echo "$peer" | jsonfilter -e '@.ml_fingerprint' 2>/dev/null) + hostname=$(echo "$peer" | jsonfilter -e '@.hostname' 2>/dev/null) + + [ -z "$ipv6" ] && continue + + # Check trust if required + if [ "$require_trust" = "1" ]; then + local trusted=0 + + # Check master-link approval + if [ -n "$ml_fp" ] && [ -f /usr/lib/secubox/master-link.sh ]; then + . /usr/lib/secubox/master-link.sh + ml_is_peer_approved "$ml_fp" 2>/dev/null && trusted=1 + fi + + # Check reputation score + if [ "$trusted" = "0" ] && [ -f /usr/lib/mirrornet/reputation.sh ]; then + . /usr/lib/mirrornet/reputation.sh + local score + score=$(reputation_get_score "$ml_fp" 2>/dev/null || echo 0) + [ "$score" -ge "$min_trust" ] && trusted=1 + fi + + if [ "$trusted" = "0" ]; then + echo "Skipping untrusted peer: $hostname ($ipv6)" + continue + fi + fi + + # Add as Yggdrasil peer + echo "Connecting to: $hostname ($ipv6)" + + if command -v yggdrasilctl >/dev/null 2>&1; then + # Add peer via yggdrasilctl + yggdrasilctl addPeer "tcp://[$ipv6]:0" 2>/dev/null && { + echo " Connected!" + connected=$((connected + 1)) + } || { + echo " Failed to connect" + } + fi + done + + echo "" + echo "Connected to $connected peers" +} + +# Show discovery status +cmd_status() { + echo "=== Yggdrasil Discovery Status ===" + + # Check if enabled + local enabled + enabled=$(uci -q get yggdrasil-discovery.main.enabled) + echo "Discovery: $([ "$enabled" = "1" ] && echo "ENABLED" || echo "DISABLED")" + + # Yggdrasil status + local ipv6 + ipv6=$(ip -6 addr show tun0 2>/dev/null | grep -oP '2[0-9a-f:]+(?=/)') + echo "Yggdrasil: $([ -n "$ipv6" ] && echo "RUNNING ($ipv6)" || echo "STOPPED")" + + # Peer counts + local ygg_peers=0 + if command -v yggdrasilctl >/dev/null 2>&1; then + ygg_peers=$(yggdrasilctl -json getPeers 2>/dev/null | jsonfilter -e '@.peers[*]' 2>/dev/null | wc -l) + fi + echo "Yggdrasil Peers: $ygg_peers" + + # Discovered peers + local discovered=0 + [ -f "$PEERS_CACHE" ] && discovered=$(jsonfilter -i "$PEERS_CACHE" -e '@[*]' 2>/dev/null | wc -l) + echo "Discovered SecuBox Nodes: $discovered" + + # Settings + echo "" + echo "Settings:" + echo " Auto Announce: $(uci -q get yggdrasil-discovery.main.auto_announce || echo 1)" + echo " Auto Peer: $(uci -q get yggdrasil-discovery.main.auto_peer || echo 1)" + echo " Require Trust: $(uci -q get yggdrasil-discovery.main.require_trust || echo 1)" + echo " Min Trust Score: $(uci -q get yggdrasil-discovery.main.min_trust_score || echo 50)" + + # Last announcement + if [ -f "$ANNOUNCED_FILE" ]; then + local last_ts + last_ts=$(jsonfilter -i "$ANNOUNCED_FILE" -e '@.timestamp' 2>/dev/null) + [ -n "$last_ts" ] && echo " Last Announced: $(date -d @$last_ts 2>/dev/null || echo $last_ts)" + fi +} + +# Bootstrap commands +cmd_bootstrap() { + local subcmd="${1:-list}" + shift 2>/dev/null + + case "$subcmd" in + list) + echo "=== Bootstrap Peers ===" + uci -q get yggdrasil-discovery.bootstrap.peer | tr ' ' '\n' | while read -r peer; do + [ -n "$peer" ] && echo " $peer" + done + ;; + add) + local uri="$1" + [ -z "$uri" ] && { echo "Usage: yggctl bootstrap add "; return 1; } + uci add_list yggdrasil-discovery.bootstrap.peer="$uri" + uci commit yggdrasil-discovery + echo "Added bootstrap peer: $uri" + ;; + remove) + local uri="$1" + [ -z "$uri" ] && { echo "Usage: yggctl bootstrap remove "; return 1; } + uci del_list yggdrasil-discovery.bootstrap.peer="$uri" + uci commit yggdrasil-discovery + echo "Removed bootstrap peer: $uri" + ;; + connect) + echo "Connecting to bootstrap peers..." + uci -q get yggdrasil-discovery.bootstrap.peer | tr ' ' '\n' | while read -r peer; do + [ -z "$peer" ] && continue + echo " Connecting to $peer..." + yggdrasilctl addPeer "$peer" 2>/dev/null && echo " OK" || echo " FAILED" + done + ;; + *) + echo "Usage: yggctl bootstrap {list|add|remove|connect}" + ;; + esac +} + +# Enable/disable +cmd_enable() { + uci set yggdrasil-discovery.main.enabled='1' + uci commit yggdrasil-discovery + echo "Yggdrasil discovery enabled" +} + +cmd_disable() { + uci set yggdrasil-discovery.main.enabled='0' + uci commit yggdrasil-discovery + echo "Yggdrasil discovery disabled" +} + +# Config commands +cmd_config() { + local subcmd="${1:-show}" + shift 2>/dev/null + + case "$subcmd" in + show) + echo "=== Discovery Configuration ===" + uci show yggdrasil-discovery + ;; + set) + local key="$1" + local value="$2" + [ -z "$key" ] || [ -z "$value" ] && { echo "Usage: yggctl config set "; return 1; } + uci set "yggdrasil-discovery.main.$key=$value" + uci commit yggdrasil-discovery + echo "Set $key = $value" + ;; + *) + echo "Usage: yggctl config {show|set}" + ;; + esac +} + +# Add peer manually +cmd_add() { + local pubkey="$1" + local ipv6="$2" + + [ -z "$pubkey" ] || [ -z "$ipv6" ] && { + echo "Usage: yggctl add " + return 1 + } + + echo "Adding peer: $ipv6" + + # Add to Yggdrasil + if command -v yggdrasilctl >/dev/null 2>&1; then + yggdrasilctl addPeer "tcp://[$ipv6]:0" 2>/dev/null && { + echo "Added to Yggdrasil" + } || { + echo "Warning: Could not add to Yggdrasil" + } + fi + + # Add to peers cache + local timestamp + timestamp=$(date +%s) + local peer_json="{\"pubkey\":\"$pubkey\",\"ipv6\":\"$ipv6\",\"timestamp\":$timestamp,\"manual\":true}" + + if [ ! -f "$PEERS_CACHE" ] || [ "$(cat "$PEERS_CACHE")" = "[]" ]; then + echo "[$peer_json]" > "$PEERS_CACHE" + else + sed "s/]$/,$peer_json]/" "$PEERS_CACHE" > "$PEERS_CACHE.tmp" + mv "$PEERS_CACHE.tmp" "$PEERS_CACHE" + fi + + echo "Peer added" +} + +# Main command dispatch +case "${1:-}" in + self) cmd_self ;; + peers) cmd_peers ;; + announce) cmd_announce ;; + discover) cmd_discover ;; + list) cmd_list ;; + auto-connect) cmd_auto_connect ;; + status) cmd_status ;; + bootstrap) shift; cmd_bootstrap "$@" ;; + add) shift; cmd_add "$@" ;; + enable) cmd_enable ;; + disable) cmd_disable ;; + config) shift; cmd_config "$@" ;; + routes) + if command -v yggdrasilctl >/dev/null 2>&1; then + yggdrasilctl getDHT + else + echo "yggdrasilctl not found" + fi + ;; + -h|--help|help|"") + usage + ;; + *) + echo "Unknown command: $1" + usage + ;; +esac diff --git a/package/secubox/secubox-mirrornet/files/usr/lib/mirrornet/gossip.sh b/package/secubox/secubox-mirrornet/files/usr/lib/mirrornet/gossip.sh index 5b40b8d0..7be6449c 100644 --- a/package/secubox/secubox-mirrornet/files/usr/lib/mirrornet/gossip.sh +++ b/package/secubox/secubox-mirrornet/files/usr/lib/mirrornet/gossip.sh @@ -287,6 +287,15 @@ gossip_receive() { logger -t mirrornet "Gossip: meshname announce from $origin" fi ;; + yggdrasil_peer) + # Yggdrasil peer discovery announcement + if [ -f /usr/lib/yggdrasil-discovery/gossip-handler.sh ]; then + local ygg_data + ygg_data=$(echo "$message" | jsonfilter -e '@.data') + /usr/lib/yggdrasil-discovery/gossip-handler.sh handle announce "$ygg_data" "$origin" + logger -t mirrornet "Gossip: yggdrasil peer from $origin" + fi + ;; *) logger -t mirrornet "Gossip: unknown type '$type' from $origin" ;; @@ -427,6 +436,12 @@ gossip_peer_status() { gossip_broadcast "peer_status" "$data" "$PRIORITY_HIGH" } +# Publish Yggdrasil peer announcement +gossip_announce_yggdrasil() { + local ygg_json="$1" + gossip_broadcast "yggdrasil_peer" "$ygg_json" "$PRIORITY_NORMAL" +} + # Get gossip queue (pending messages) gossip_get_queue() { cat "$GOSSIP_QUEUE"