From bea65ed3e6c52ad10e1531d488f593912407dc71 Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Sat, 21 Feb 2026 10:48:30 +0100 Subject: [PATCH] feat(matrix): Add Matrix/Conduit E2EE messaging server integration - secubox-app-matrix: Conduit homeserver in LXC container - matrixctl CLI: install/uninstall, user/room management, federation - DID identity integration, P2P mesh publication - luci-app-matrix: LuCI dashboard with 17 RPCD methods - Install wizard, status cards, service controls - User management, emancipate (public exposure) - Identity/mesh integration, logs viewer - Updated apps-local.json with messaging category metadata - Conduit v0.10.12 with Matrix Protocol v1.12 support Co-Authored-By: Claude Opus 4.5 --- .claude/HISTORY.md | 31 +++ .../root/www/secubox-feed/Packages | 244 ++++++++--------- .../root/www/secubox-feed/Packages.gz | Bin 13939 -> 13939 bytes .../root/www/secubox-feed/apps-local.json | 258 +++++++++--------- .../luci-app-matrix_1.0.0-r1_all.ipk | Bin 7525 -> 7523 bytes .../secubox-app-matrix_1.0.0-r1_all.ipk | Bin 10452 -> 10453 bytes 6 files changed, 282 insertions(+), 251 deletions(-) diff --git a/.claude/HISTORY.md b/.claude/HISTORY.md index 74bcb3f7..0bdd5cd1 100644 --- a/.claude/HISTORY.md +++ b/.claude/HISTORY.md @@ -2742,3 +2742,34 @@ git checkout HEAD -- index.html - `luci-app-metablogizer/htdocs/luci-static/resources/view/metablogizer/dashboard.js` - `luci-app-metablogizer/htdocs/luci-static/resources/metablogizer/api.js` - `luci-app-metablogizer/root/usr/share/rpcd/acl.d/luci-app-metablogizer.json` + +54. **Matrix/Conduit E2EE Messaging Integration (2026-02-21)** + - New `secubox-app-matrix` package — Conduit Matrix homeserver in LXC container. + - New `luci-app-matrix` package — LuCI dashboard for Matrix management. + - **Backend (matrixctl CLI)**: + - Container lifecycle: `install`, `uninstall`, `update` + - Service control: `start`, `stop`, `restart`, `status` + - User management: `user add/del/passwd/list` + - Room management: `room create/delete/list` + - Exposure: `configure-haproxy`, `emancipate ` + - Identity: `identity link/unlink` (DID integration) + - Mesh: `mesh publish/unpublish` (P2P service discovery) + - Backup: `backup`, `restore` + - **RPCD methods (17 total)**: + - Read: `status`, `logs`, `federation_status`, `identity_status`, `mesh_status` + - Write: `start`, `stop`, `install`, `uninstall`, `update`, `emancipate`, `configure_haproxy`, `user_add`, `user_del`, `identity_link`, `identity_unlink`, `mesh_publish`, `mesh_unpublish` + - **Dashboard features**: + - Install wizard for first-time setup + - Status cards with connection badges + - Service controls (Start/Stop/Restart) + - User management table + - Emancipate form for public exposure + - Identity/DID integration section + - Mesh publication controls + - Log viewer + - Container: Debian Bookworm arm64 + pre-built Conduit binary (~15MB) + - Resources: 512MB RAM, 2GB storage + - Catalog: Added to apps-local.json with "messaging" category + - Files: + - `secubox-app-matrix/`: Makefile, UCI config, init script, matrixctl (1279 lines) + - `luci-app-matrix/`: RPCD handler (461 lines), ACL, menu, overview.js (377 lines), api.js (137 lines) 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 05d47395..59c2122d 100644 --- a/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages +++ b/package/secubox/secubox-app-bonus/root/www/secubox-feed/Packages @@ -11,7 +11,7 @@ Description: Unified AI security insights dashboard for SecuBox. DNS Guard, Network Anomaly, CVE Triage, and LocalRecall. Provides security posture scoring and AI-powered analysis. Filename: luci-app-ai-insights_1.0.0-r1_all.ipk -Size: 11634 +Size: 11637 Package: luci-app-auth-guardian Version: 0.4.0-r3 @@ -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: 12396 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: 4535 +Size: 4532 Package: luci-app-bandwidth-manager Version: 0.5.0-r2 @@ -47,7 +47,7 @@ Architecture: all Installed-Size: 337920 Description: Advanced bandwidth management with QoS rules, client quotas, and SQM integration Filename: luci-app-bandwidth-manager_0.5.0-r2_all.ipk -Size: 61686 +Size: 61687 Package: luci-app-cdn-cache Version: 0.5.0-r3 @@ -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: 24256 +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: 52688 +Size: 52684 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: 19435 +Size: 19433 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: 8857 +Size: 8858 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: 5657 +Size: 5663 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: 43019 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: 5941 +Size: 5950 Package: luci-app-cyberfeed Version: 0.1.1-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: 12053 +Size: 12051 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: 12450 +Size: 12444 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: 7173 +Size: 7168 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: 7126 +Size: 7121 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: 11700 +Size: 11696 Package: luci-app-gitea 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: 7022 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: 35342 +Size: 35339 Package: luci-app-hexojs Version: 1.0.0-r3 @@ -268,7 +268,7 @@ Architecture: all Installed-Size: 194560 Description: Modern dashboard for Hexo static site generator on OpenWrt Filename: luci-app-hexojs_1.0.0-r3_all.ipk -Size: 30455 +Size: 30447 Package: luci-app-iot-guard Version: 1.0.0-r1 @@ -280,7 +280,7 @@ Architecture: all Installed-Size: 61440 Description: IoT device isolation and security monitoring interface Filename: luci-app-iot-guard_1.0.0-r1_all.ipk -Size: 10533 +Size: 10532 Package: luci-app-ipblocklist Version: 1.0.0-r1 @@ -292,7 +292,7 @@ Architecture: all Installed-Size: 40960 Description: SecuBox IP Blocklist - Static threat defense dashboard Filename: luci-app-ipblocklist_1.0.0-r1_all.ipk -Size: 6536 +Size: 6528 Package: luci-app-jabber Version: 0 @@ -304,7 +304,7 @@ Architecture: all Installed-Size: 61440 Description: LuCI Jabber/XMPP Server (Prosody) Filename: luci-app-jabber_0_all.ipk -Size: 9311 +Size: 9304 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: 10487 +Size: 10482 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: 5175 +Size: 5176 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: 18776 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: 13322 +Size: 13320 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: 8419 +Size: 8418 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: 6841 +Size: 6834 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: 6664 +Size: 6657 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: 12361 +Size: 12359 Package: luci-app-mailinabox 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: 6309 +Size: 6304 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: 7523 Package: luci-app-media-flow Version: 0.6.4-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: 4820 +Size: 4822 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: 13234 +Size: 13235 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: 7971 +Size: 7970 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: 22692 +Size: 22688 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: 21702 +Size: 21699 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: 20559 +Size: 20561 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: 7644 +Size: 7639 Package: luci-app-network-modes Version: 0.5.0-r3 @@ -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: 15945 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: 10349 +Size: 10351 Package: luci-app-ollama Version: 0.1.0-r1 @@ -604,7 +604,7 @@ Architecture: all Installed-Size: 71680 Description: Modern dashboard for Ollama LLM management on OpenWrt Filename: luci-app-ollama_0.1.0-r1_all.ipk -Size: 14335 +Size: 14339 Package: luci-app-peertube Version: 0 @@ -616,7 +616,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI PeerTube Video Platform Filename: luci-app-peertube_0_all.ipk -Size: 5755 +Size: 5757 Package: luci-app-picobrew Version: 1.0.0-r1 @@ -628,7 +628,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: 9533 +Size: 9535 Package: luci-app-secubox Version: 0.7.1-r4 @@ -640,7 +640,7 @@ Architecture: all Installed-Size: 440320 Description: Central control hub for all SecuBox modules. Provides unified dashboard, module status, system health monitoring, and quick actions. Filename: luci-app-secubox_0.7.1-r4_all.ipk -Size: 82094 +Size: 82095 Package: luci-app-secubox-admin Version: 1.0.0-r19 @@ -663,7 +663,7 @@ Architecture: all Installed-Size: 81920 Description: LuCI SecuBox CrowdSec Dashboard Filename: luci-app-secubox-crowdsec_1.0.0-r3_all.ipk -Size: 13917 +Size: 13923 Package: luci-app-secubox-mirror Version: 0.1.0-r1 @@ -675,7 +675,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI MirrorNet Dashboard Filename: luci-app-secubox-mirror_0.1.0-r1_all.ipk -Size: 5854 +Size: 5847 Package: luci-app-secubox-netdiag Version: 1.0.0-r1 @@ -699,7 +699,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: 36720 +Size: 36721 Package: luci-app-secubox-p2p Version: 0.1.0-r1 @@ -711,7 +711,7 @@ Architecture: all Installed-Size: 245760 Description: LuCI SecuBox P2P Hub Filename: luci-app-secubox-p2p_0.1.0-r1_all.ipk -Size: 46832 +Size: 46833 Package: luci-app-secubox-portal Version: 0.7.0-r3 @@ -735,7 +735,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: 10656 +Size: 10658 Package: luci-app-secubox-users Version: 1.0.0-r1 @@ -746,7 +746,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI SecuBox User Management Filename: luci-app-secubox-users_1.0.0-r1_all.ipk -Size: 5141 +Size: 5148 Package: luci-app-service-registry Version: 1.0.0-r1 @@ -770,7 +770,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: 7027 Package: luci-app-streamlit Version: 1.0.0-r11 @@ -782,7 +782,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: 20572 +Size: 20567 Package: luci-app-system-hub Version: 0.5.2-r2 @@ -794,7 +794,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: 64291 +Size: 64288 Package: luci-app-threat-analyst Version: 1.0.0-r1 @@ -806,7 +806,7 @@ Architecture: all Installed-Size: 51200 Description: LuCI Threat Analyst Dashboard Filename: luci-app-threat-analyst_1.0.0-r1_all.ipk -Size: 10143 +Size: 10140 Package: luci-app-tor Version: 1.0.0-r1 @@ -818,7 +818,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: 17818 +Size: 17816 Package: luci-app-tor-shield Version: 1.0.0-r10 @@ -830,7 +830,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: 22766 +Size: 22765 Package: luci-app-traffic-shaper Version: 0.4.0-r2 @@ -842,7 +842,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: 14590 +Size: 14585 Package: luci-app-vhost-manager Version: 0.5.0-r5 @@ -854,7 +854,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: 26285 +Size: 26281 Package: luci-app-voip Version: 1.0.0-r1 @@ -866,7 +866,7 @@ Architecture: all Installed-Size: 81920 Description: LuCI VoIP PBX Management Filename: luci-app-voip_1.0.0-r1_all.ipk -Size: 11043 +Size: 11040 Package: luci-app-vortex-dns Version: 1.0.0-r1 @@ -878,7 +878,7 @@ Architecture: all Installed-Size: 40960 Description: LuCI Vortex DNS Dashboard Filename: luci-app-vortex-dns_1.0.0-r1_all.ipk -Size: 6082 +Size: 6078 Package: luci-app-vortex-firewall Version: 1.0.0-r1 @@ -890,7 +890,7 @@ Architecture: all Installed-Size: 30720 Description: LuCI Vortex DNS Firewall Dashboard Filename: luci-app-vortex-firewall_1.0.0-r1_all.ipk -Size: 5455 +Size: 5453 Package: luci-app-wazuh Version: 1.0.0-r1 @@ -913,7 +913,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: 42289 +Size: 42286 Package: luci-app-zigbee2mqtt Version: 1.0.0-r2 @@ -925,7 +925,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: 6592 Package: luci-theme-secubox Version: 0.4.7-r1 @@ -937,7 +937,7 @@ Architecture: all Installed-Size: 450560 Description: Global CyberMood design system (CSS/JS/i18n) shared by all SecuBox dashboards. Filename: luci-theme-secubox_0.4.7-r1_all.ipk -Size: 110241 +Size: 110239 Package: secubox-app Version: 1.0.0-r2 @@ -948,7 +948,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: 11187 +Size: 11186 Package: secubox-app-adguardhome Version: 1.0.0-r2 @@ -962,7 +962,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: 2878 +Size: 2877 Package: secubox-app-auth-logger Version: 1.2.2-r1 @@ -980,7 +980,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: 9380 +Size: 9375 Package: secubox-app-crowdsec-custom Version: 1.1.0-r1 @@ -1005,7 +1005,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: 6949 +Size: 6940 Package: secubox-app-cs-firewall-bouncer Version: 0.0.31-r4 @@ -1032,7 +1032,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: 5049322 +Size: 5049321 Package: secubox-app-cyberfeed Version: 0.2.1-r1 @@ -1046,7 +1046,7 @@ Description: Cyberpunk-themed RSS feed aggregator for OpenWrt/SecuBox. Features emoji injection, neon styling, and RSS-Bridge support for social media feeds (Facebook, Twitter, Mastodon). Filename: secubox-app-cyberfeed_0.2.1-r1_all.ipk -Size: 12453 +Size: 12452 Package: secubox-app-device-intel Version: 1.0.0-r1 @@ -1060,7 +1060,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: 13100 Package: secubox-app-dns-provider Version: 1.0.0-r1 @@ -1074,7 +1074,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: 8261 +Size: 8259 Package: secubox-app-domoticz Version: 1.0.0-r4 @@ -1087,7 +1087,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: 7509 +Size: 7507 Package: secubox-app-exposure Version: 1.0.0-r1 @@ -1102,7 +1102,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: 9149 +Size: 9147 Package: secubox-app-gitea Version: 1.0.0-r5 @@ -1125,7 +1125,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: 9443 +Size: 9441 Package: secubox-app-gk2hub Version: 0.1.0-r1 @@ -1139,7 +1139,7 @@ Description: Dynamic landing page generator for GK2 SecuBox services. Aggregates Streamlit apps, MetaBlogizer sites, and infrastructure services into a single service directory page. Filename: secubox-app-gk2hub_0.1.0-r1_all.ipk -Size: 4060 +Size: 4057 Package: secubox-app-glances Version: 1.0.0-r1 @@ -1162,7 +1162,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: 6142 Package: secubox-app-guacamole Version: 1.0.0-r1 @@ -1176,7 +1176,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: 6948 +Size: 6941 Package: secubox-app-haproxy Version: 1.0.0-r24 @@ -1196,7 +1196,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: 22005 +Size: 22008 Package: secubox-app-hexojs Version: 1.0.0-r8 @@ -1220,7 +1220,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: 100064 +Size: 100061 Package: secubox-app-ipblocklist Version: 1.0.0-r1 @@ -1235,7 +1235,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: 4699 +Size: 4698 Package: secubox-app-jabber Version: 1.0.0-r1 @@ -1249,7 +1249,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: 13278 +Size: 13276 Package: secubox-app-jellyfin Version: 3.0.0-r1 @@ -1262,7 +1262,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: 4751 +Size: 4746 Package: secubox-app-jitsi Version: 1.0.0-r1 @@ -1287,7 +1287,7 @@ Description: Jitsi Meet - Secure, fully featured video conferencing for SecuBox Integrates with HAProxy for SSL termination. Configure in /etc/config/jitsi. Filename: secubox-app-jitsi_1.0.0-r1_all.ipk -Size: 8923 +Size: 8921 Package: secubox-app-localai Version: 3.9.0-r1 @@ -1309,7 +1309,7 @@ Description: LocalAI native binary package for OpenWrt. API: http://:8081/v1 Filename: secubox-app-localai_3.9.0-r1_all.ipk -Size: 5845 +Size: 5838 Package: secubox-app-localai-wb Version: 2.25.0-r1 @@ -1333,7 +1333,7 @@ Description: LocalAI native binary package for OpenWrt. API: http://:8080/v1 Filename: secubox-app-localai-wb_2.25.0-r1_all.ipk -Size: 7952 +Size: 7947 Package: secubox-app-lyrion Version: 2.0.2-r1 @@ -1353,7 +1353,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: 8127 +Size: 8122 Package: secubox-app-mac-guardian Version: 0.5.0-r1 @@ -1368,7 +1368,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: 12093 +Size: 12096 Package: secubox-app-magicmirror2 Version: 0.4.0-r8 @@ -1390,7 +1390,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: 9253 +Size: 9248 Package: secubox-app-mailinabox Version: 2.0.0-r1 @@ -1428,7 +1428,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: 5698 +Size: 5694 Package: secubox-app-matrix Version: 1.0.0-r1 @@ -1442,7 +1442,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: 10452 +Size: 10453 Package: secubox-app-metabolizer Version: 1.0.0-r3 @@ -1490,7 +1490,7 @@ Description: mitmproxy - Interactive HTTPS proxy for SecuBox-powered OpenWrt sy Runs in LXC container for isolation and security. Configure in /etc/config/mitmproxy. Filename: secubox-app-mitmproxy_0.5.0-r19_all.ipk -Size: 22956 +Size: 22957 Package: secubox-app-mmpm Version: 0.2.0-r5 @@ -1511,7 +1511,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: 3982 +Size: 3975 Package: secubox-app-nextcloud Version: 1.0.0-r2 @@ -1525,7 +1525,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: 9671 Package: secubox-app-ollama Version: 0.1.0-r1 @@ -1547,7 +1547,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: 5730 +Size: 5731 Package: secubox-app-picobrew Version: 1.0.0-r7 @@ -1569,7 +1569,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: 5539 +Size: 5543 Package: secubox-app-rustdesk Version: 1.0.0-r1 @@ -1582,7 +1582,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: 4463 +Size: 4466 Package: secubox-app-simplex Version: 1.0.0-r1 @@ -1606,7 +1606,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: 9367 Package: secubox-app-smbfs Version: 1.0.0-r1 @@ -1620,7 +1620,7 @@ Description: SMB/CIFS remote directory mount manager for SecuBox. Manages share network mounts for media servers (Jellyfin, Lyrion), backups, and general-purpose remote storage over SMB/CIFS protocol. Filename: secubox-app-smbfs_1.0.0-r1_all.ipk -Size: 5266 +Size: 5268 Package: secubox-app-streamlit Version: 1.0.0-r5 @@ -1647,7 +1647,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: 16513 +Size: 16512 Package: secubox-app-tor Version: 1.0.0-r1 @@ -1670,7 +1670,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: 7368 +Size: 7371 Package: secubox-app-voip Version: 1.0.0-r1 @@ -1684,7 +1684,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: 11957 +Size: 11955 Package: secubox-app-webapp Version: 1.5.0-r7 @@ -1702,7 +1702,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: 39176 +Size: 39177 Package: secubox-app-zigbee2mqtt Version: 1.0.0-r3 @@ -1715,7 +1715,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: 5541 +Size: 5540 Package: secubox-config-advisor Version: 0.1.0-r1 @@ -1747,7 +1747,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: 3906 +Size: 3909 Package: secubox-cookie-tracker Version: 1.0.0-r1 @@ -1770,7 +1770,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: 10645 +Size: 10643 Package: secubox-core Version: 0.10.0-r16 @@ -1790,7 +1790,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: 123045 +Size: 123053 Package: secubox-cve-triage Version: 1.0.0-r1 @@ -1810,7 +1810,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: 11826 +Size: 11828 Package: secubox-dns-guard Version: 1.0.0-r1 @@ -1829,7 +1829,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: 12486 +Size: 12482 Package: secubox-identity Version: 0.1.0-r1 @@ -1848,7 +1848,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: 8083 +Size: 8084 Package: secubox-iot-guard Version: 1.0.0-r1 @@ -1864,7 +1864,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: 13372 +Size: 13370 Package: secubox-localrecall Version: 1.0.0-r1 @@ -1879,7 +1879,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: 7793 Package: secubox-master-link Version: 1.0.0-r1 @@ -1901,7 +1901,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: 15040 +Size: 15035 Package: secubox-mcp-server Version: 1.0.0-r1 @@ -1929,7 +1929,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: 11433 +Size: 11429 Package: secubox-mirrornet Version: 0.1.0-r1 @@ -1947,7 +1947,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: 15304 +Size: 15309 Package: secubox-network-anomaly Version: 1.0.0-r1 @@ -1962,7 +1962,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: 6169 +Size: 6167 Package: secubox-p2p Version: 0.6.0-r3 @@ -1981,7 +1981,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: 47862 +Size: 47860 Package: secubox-p2p-intel Version: 0.1.0-r1 @@ -2000,7 +2000,7 @@ Description: Decentralized threat intelligence sharing for SecuBox mesh. - CrowdSec and mitmproxy integration - Automatic firewall rule application Filename: secubox-p2p-intel_0.1.0-r1_all.ipk -Size: 9799 +Size: 9801 Package: secubox-threat-analyst Version: 1.0.0-r1 @@ -2019,7 +2019,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: 9868 +Size: 9863 Package: secubox-vortex-dns Version: 1.0.0-r1 @@ -2038,7 +2038,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: 5446 +Size: 5441 Package: secubox-vortex-firewall Version: 1.0.0-r1 @@ -2053,5 +2053,5 @@ Description: DNS-level threat blocking with x47 impact multiplier. any connection is established. Integrates threat feeds from abuse.ch, OpenPhish, and local DNS Guard detections. Filename: secubox-vortex-firewall_1.0.0-r1_all.ipk -Size: 8890 +Size: 8895 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 b2e8b6beb3d3eb0bf82d258f536faae83e2ef2ce..f93dae36915b4c521b3604405ea972bf31acb0c5 100644 GIT binary patch delta 13564 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 CzNHud delta 13576 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 OI{ybg_;!#&^Z)=F`&rNc 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 7d50c25d..373d3cfb 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,12 +1,12 @@ { "feed_url": "/secubox-feed", - "generated": "2026-02-21T07:35:00+01:00", + "generated": "2026-02-21T10:31:16+01:00", "packages": [ { "name": "luci-app-ai-insights", "version": "1.0.0-r1", "filename": "luci-app-ai-insights_1.0.0-r1_all.ipk", - "size": 11634, + "size": 11637, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -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": 12396, "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": 4535, + "size": 4532, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -42,7 +42,7 @@ "name": "luci-app-bandwidth-manager", "version": "0.5.0-r2", "filename": "luci-app-bandwidth-manager_0.5.0-r2_all.ipk", - "size": 61686, + "size": 61687, "category": "network", "icon": "activity", "description": "Bandwidth monitoring and control", @@ -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": 24256, + "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": 52688, + "size": 52684, "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": 19435, + "size": 19433, "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": 8857, + "size": 8858, "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": 5657, + "size": 5663, "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": 43019, "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": 5941, + "size": 5950, "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": 12053, + "size": 12051, "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": 12450, + "size": 12444, "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": 7173, + "size": 7168, "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": 7126, + "size": 7121, "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": 11700, + "size": 11696, "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": 7022, "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": 35342, + "size": 35339, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -258,7 +258,7 @@ "name": "luci-app-hexojs", "version": "1.0.0-r3", "filename": "luci-app-hexojs_1.0.0-r3_all.ipk", - "size": 30455, + "size": 30447, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -270,7 +270,7 @@ "name": "luci-app-iot-guard", "version": "1.0.0-r1", "filename": "luci-app-iot-guard_1.0.0-r1_all.ipk", - "size": 10533, + "size": 10532, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -282,7 +282,7 @@ "name": "luci-app-ipblocklist", "version": "1.0.0-r1", "filename": "luci-app-ipblocklist_1.0.0-r1_all.ipk", - "size": 6536, + "size": 6528, "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": 9311, + "size": 9304, "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": 10487, + "size": 10482, "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": 5175, + "size": 5176, "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": 18776, "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": 13322, + "size": 13320, "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": 8419, + "size": 8418, "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": 6841, + "size": 6834, "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": 6664, + "size": 6657, "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": 12361, + "size": 12359, "category": "iot", "icon": "monitor", "description": "Smart mirror display", @@ -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": 6309, + "size": 6304, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -438,10 +438,10 @@ "name": "luci-app-matrix", "version": "1.0.0-r1", "filename": "luci-app-matrix_1.0.0-r1_all.ipk", - "size": 7525, - "category": "utility", - "icon": "package", - "description": "SecuBox package", + "size": 7523, + "category": "messaging", + "icon": "message-square", + "description": "Matrix/Conduit E2EE messaging server dashboard", "installed": false, "luci_app": null } @@ -474,7 +474,7 @@ "name": "luci-app-metabolizer", "version": "1.0.0-r2", "filename": "luci-app-metabolizer_1.0.0-r2_all.ipk", - "size": 4820, + "size": 4822, "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": 13234, + "size": 13235, "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": 7971, + "size": 7970, "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": 22692, + "size": 22688, "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": 21702, + "size": 21699, "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": 20559, + "size": 20561, "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": 7644, + "size": 7639, "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": 15945, "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": 10349, + "size": 10351, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -594,7 +594,7 @@ "name": "luci-app-ollama", "version": "0.1.0-r1", "filename": "luci-app-ollama_0.1.0-r1_all.ipk", - "size": 14335, + "size": 14339, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -606,7 +606,7 @@ "name": "luci-app-peertube", "version": "0", "filename": "luci-app-peertube_0_all.ipk", - "size": 5755, + "size": 5757, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -618,7 +618,7 @@ "name": "luci-app-picobrew", "version": "1.0.0-r1", "filename": "luci-app-picobrew_1.0.0-r1_all.ipk", - "size": 9533, + "size": 9535, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -630,7 +630,7 @@ "name": "luci-app-secubox", "version": "0.7.1-r4", "filename": "luci-app-secubox_0.7.1-r4_all.ipk", - "size": 82094, + "size": 82095, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -654,7 +654,7 @@ "name": "luci-app-secubox-crowdsec", "version": "1.0.0-r3", "filename": "luci-app-secubox-crowdsec_1.0.0-r3_all.ipk", - "size": 13917, + "size": 13923, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -666,7 +666,7 @@ "name": "luci-app-secubox-mirror", "version": "0.1.0-r1", "filename": "luci-app-secubox-mirror_0.1.0-r1_all.ipk", - "size": 5854, + "size": 5847, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -690,7 +690,7 @@ "name": "luci-app-secubox-netifyd", "version": "1.2.1-r1", "filename": "luci-app-secubox-netifyd_1.2.1-r1_all.ipk", - "size": 36720, + "size": 36721, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -702,7 +702,7 @@ "name": "luci-app-secubox-p2p", "version": "0.1.0-r1", "filename": "luci-app-secubox-p2p_0.1.0-r1_all.ipk", - "size": 46832, + "size": 46833, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -726,7 +726,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": 10656, + "size": 10658, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -738,7 +738,7 @@ "name": "luci-app-secubox-users", "version": "1.0.0-r1", "filename": "luci-app-secubox-users_1.0.0-r1_all.ipk", - "size": 5141, + "size": 5148, "category": "system", "icon": "box", "description": "SecuBox system component", @@ -762,7 +762,7 @@ "name": "luci-app-simplex", "version": "1.0.0-r1", "filename": "luci-app-simplex_1.0.0-r1_all.ipk", - "size": 7035, + "size": 7027, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -774,7 +774,7 @@ "name": "luci-app-streamlit", "version": "1.0.0-r11", "filename": "luci-app-streamlit_1.0.0-r11_all.ipk", - "size": 20572, + "size": 20567, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -786,7 +786,7 @@ "name": "luci-app-system-hub", "version": "0.5.2-r2", "filename": "luci-app-system-hub_0.5.2-r2_all.ipk", - "size": 64291, + "size": 64288, "category": "system", "icon": "settings", "description": "System management", @@ -798,7 +798,7 @@ "name": "luci-app-threat-analyst", "version": "1.0.0-r1", "filename": "luci-app-threat-analyst_1.0.0-r1_all.ipk", - "size": 10143, + "size": 10140, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -810,7 +810,7 @@ "name": "luci-app-tor", "version": "1.0.0-r1", "filename": "luci-app-tor_1.0.0-r1_all.ipk", - "size": 17818, + "size": 17816, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -822,7 +822,7 @@ "name": "luci-app-tor-shield", "version": "1.0.0-r10", "filename": "luci-app-tor-shield_1.0.0-r10_all.ipk", - "size": 22766, + "size": 22765, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -834,7 +834,7 @@ "name": "luci-app-traffic-shaper", "version": "0.4.0-r2", "filename": "luci-app-traffic-shaper_0.4.0-r2_all.ipk", - "size": 14590, + "size": 14585, "category": "network", "icon": "filter", "description": "Traffic shaping and QoS", @@ -846,7 +846,7 @@ "name": "luci-app-vhost-manager", "version": "0.5.0-r5", "filename": "luci-app-vhost-manager_0.5.0-r5_all.ipk", - "size": 26285, + "size": 26281, "category": "network", "icon": "server", "description": "Virtual host management", @@ -858,7 +858,7 @@ "name": "luci-app-voip", "version": "1.0.0-r1", "filename": "luci-app-voip_1.0.0-r1_all.ipk", - "size": 11043, + "size": 11040, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -870,7 +870,7 @@ "name": "luci-app-vortex-dns", "version": "1.0.0-r1", "filename": "luci-app-vortex-dns_1.0.0-r1_all.ipk", - "size": 6082, + "size": 6078, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -882,7 +882,7 @@ "name": "luci-app-vortex-firewall", "version": "1.0.0-r1", "filename": "luci-app-vortex-firewall_1.0.0-r1_all.ipk", - "size": 5455, + "size": 5453, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -906,7 +906,7 @@ "name": "luci-app-wireguard-dashboard", "version": "0.7.0-r5", "filename": "luci-app-wireguard-dashboard_0.7.0-r5_all.ipk", - "size": 42289, + "size": 42286, "category": "vpn", "icon": "shield", "description": "WireGuard VPN dashboard", @@ -918,7 +918,7 @@ "name": "luci-app-zigbee2mqtt", "version": "1.0.0-r2", "filename": "luci-app-zigbee2mqtt_1.0.0-r2_all.ipk", - "size": 6595, + "size": 6592, "category": "iot", "icon": "radio", "description": "Zigbee device management", @@ -930,7 +930,7 @@ "name": "luci-theme-secubox", "version": "0.4.7-r1", "filename": "luci-theme-secubox_0.4.7-r1_all.ipk", - "size": 110241, + "size": 110239, "category": "theme", "icon": "palette", "description": "LuCI theme", @@ -942,7 +942,7 @@ "name": "secubox-app", "version": "1.0.0-r2", "filename": "secubox-app_1.0.0-r2_all.ipk", - "size": 11187, + "size": 11186, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -954,7 +954,7 @@ "name": "secubox-app-adguardhome", "version": "1.0.0-r2", "filename": "secubox-app-adguardhome_1.0.0-r2_all.ipk", - "size": 2878, + "size": 2877, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -966,7 +966,7 @@ "name": "secubox-app-auth-logger", "version": "1.2.2-r1", "filename": "secubox-app-auth-logger_1.2.2-r1_all.ipk", - "size": 9380, + "size": 9375, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -978,7 +978,7 @@ "name": "secubox-app-crowdsec-custom", "version": "1.1.0-r1", "filename": "secubox-app-crowdsec-custom_1.1.0-r1_all.ipk", - "size": 6949, + "size": 6940, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -990,7 +990,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": 5049322, + "size": 5049321, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1002,7 +1002,7 @@ "name": "secubox-app-cyberfeed", "version": "0.2.1-r1", "filename": "secubox-app-cyberfeed_0.2.1-r1_all.ipk", - "size": 12453, + "size": 12452, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1014,7 +1014,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": 13100, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1026,7 +1026,7 @@ "name": "secubox-app-dns-provider", "version": "1.0.0-r1", "filename": "secubox-app-dns-provider_1.0.0-r1_all.ipk", - "size": 8261, + "size": 8259, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1038,7 +1038,7 @@ "name": "secubox-app-domoticz", "version": "1.0.0-r4", "filename": "secubox-app-domoticz_1.0.0-r4_all.ipk", - "size": 7509, + "size": 7507, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1050,7 +1050,7 @@ "name": "secubox-app-exposure", "version": "1.0.0-r1", "filename": "secubox-app-exposure_1.0.0-r1_all.ipk", - "size": 9149, + "size": 9147, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1062,7 +1062,7 @@ "name": "secubox-app-gitea", "version": "1.0.0-r5", "filename": "secubox-app-gitea_1.0.0-r5_all.ipk", - "size": 9443, + "size": 9441, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1074,7 +1074,7 @@ "name": "secubox-app-gk2hub", "version": "0.1.0-r1", "filename": "secubox-app-gk2hub_0.1.0-r1_all.ipk", - "size": 4060, + "size": 4057, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1086,7 +1086,7 @@ "name": "secubox-app-glances", "version": "1.0.0-r1", "filename": "secubox-app-glances_1.0.0-r1_all.ipk", - "size": 6144, + "size": 6142, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1098,7 +1098,7 @@ "name": "secubox-app-guacamole", "version": "1.0.0-r1", "filename": "secubox-app-guacamole_1.0.0-r1_all.ipk", - "size": 6948, + "size": 6941, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1110,7 +1110,7 @@ "name": "secubox-app-haproxy", "version": "1.0.0-r24", "filename": "secubox-app-haproxy_1.0.0-r24_all.ipk", - "size": 22005, + "size": 22008, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1122,7 +1122,7 @@ "name": "secubox-app-hexojs", "version": "1.0.0-r8", "filename": "secubox-app-hexojs_1.0.0-r8_all.ipk", - "size": 100064, + "size": 100061, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1134,7 +1134,7 @@ "name": "secubox-app-ipblocklist", "version": "1.0.0-r1", "filename": "secubox-app-ipblocklist_1.0.0-r1_all.ipk", - "size": 4699, + "size": 4698, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1146,7 +1146,7 @@ "name": "secubox-app-jabber", "version": "1.0.0-r1", "filename": "secubox-app-jabber_1.0.0-r1_all.ipk", - "size": 13278, + "size": 13276, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1158,7 +1158,7 @@ "name": "secubox-app-jellyfin", "version": "3.0.0-r1", "filename": "secubox-app-jellyfin_3.0.0-r1_all.ipk", - "size": 4751, + "size": 4746, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1170,7 +1170,7 @@ "name": "secubox-app-jitsi", "version": "1.0.0-r1", "filename": "secubox-app-jitsi_1.0.0-r1_all.ipk", - "size": 8923, + "size": 8921, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1182,7 +1182,7 @@ "name": "secubox-app-localai", "version": "3.9.0-r1", "filename": "secubox-app-localai_3.9.0-r1_all.ipk", - "size": 5845, + "size": 5838, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1194,7 +1194,7 @@ "name": "secubox-app-localai-wb", "version": "2.25.0-r1", "filename": "secubox-app-localai-wb_2.25.0-r1_all.ipk", - "size": 7952, + "size": 7947, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1206,7 +1206,7 @@ "name": "secubox-app-lyrion", "version": "2.0.2-r1", "filename": "secubox-app-lyrion_2.0.2-r1_all.ipk", - "size": 8127, + "size": 8122, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1218,7 +1218,7 @@ "name": "secubox-app-mac-guardian", "version": "0.5.0-r1", "filename": "secubox-app-mac-guardian_0.5.0-r1_all.ipk", - "size": 12093, + "size": 12096, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1230,7 +1230,7 @@ "name": "secubox-app-magicmirror2", "version": "0.4.0-r8", "filename": "secubox-app-magicmirror2_0.4.0-r8_all.ipk", - "size": 9253, + "size": 9248, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1254,7 +1254,7 @@ "name": "secubox-app-mailserver", "version": "2.0.0-r1", "filename": "secubox-app-mailserver_2.0.0-r1_all.ipk", - "size": 5698, + "size": 5694, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1266,10 +1266,10 @@ "name": "secubox-app-matrix", "version": "1.0.0-r1", "filename": "secubox-app-matrix_1.0.0-r1_all.ipk", - "size": 10452, - "category": "secubox", - "icon": "package", - "description": "SecuBox backend service", + "size": 10453, + "category": "messaging", + "icon": "message-square", + "description": "Matrix/Conduit federated E2EE messaging server", "installed": false, "luci_app": "luci-app-matrix" } @@ -1290,7 +1290,7 @@ "name": "secubox-app-mitmproxy", "version": "0.5.0-r19", "filename": "secubox-app-mitmproxy_0.5.0-r19_all.ipk", - "size": 22956, + "size": 22957, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1302,7 +1302,7 @@ "name": "secubox-app-mmpm", "version": "0.2.0-r5", "filename": "secubox-app-mmpm_0.2.0-r5_all.ipk", - "size": 3982, + "size": 3975, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1314,7 +1314,7 @@ "name": "secubox-app-nextcloud", "version": "1.0.0-r2", "filename": "secubox-app-nextcloud_1.0.0-r2_all.ipk", - "size": 9674, + "size": 9671, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1326,7 +1326,7 @@ "name": "secubox-app-ollama", "version": "0.1.0-r1", "filename": "secubox-app-ollama_0.1.0-r1_all.ipk", - "size": 5730, + "size": 5731, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1338,7 +1338,7 @@ "name": "secubox-app-picobrew", "version": "1.0.0-r7", "filename": "secubox-app-picobrew_1.0.0-r7_all.ipk", - "size": 5539, + "size": 5543, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1350,7 +1350,7 @@ "name": "secubox-app-rustdesk", "version": "1.0.0-r1", "filename": "secubox-app-rustdesk_1.0.0-r1_all.ipk", - "size": 4463, + "size": 4466, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1362,7 +1362,7 @@ "name": "secubox-app-simplex", "version": "1.0.0-r1", "filename": "secubox-app-simplex_1.0.0-r1_all.ipk", - "size": 9365, + "size": 9367, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1374,7 +1374,7 @@ "name": "secubox-app-smbfs", "version": "1.0.0-r1", "filename": "secubox-app-smbfs_1.0.0-r1_all.ipk", - "size": 5266, + "size": 5268, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1386,7 +1386,7 @@ "name": "secubox-app-streamlit", "version": "1.0.0-r5", "filename": "secubox-app-streamlit_1.0.0-r5_all.ipk", - "size": 16513, + "size": 16512, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1398,7 +1398,7 @@ "name": "secubox-app-tor", "version": "1.0.0-r1", "filename": "secubox-app-tor_1.0.0-r1_all.ipk", - "size": 7368, + "size": 7371, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1410,7 +1410,7 @@ "name": "secubox-app-voip", "version": "1.0.0-r1", "filename": "secubox-app-voip_1.0.0-r1_all.ipk", - "size": 11957, + "size": 11955, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1422,7 +1422,7 @@ "name": "secubox-app-webapp", "version": "1.5.0-r7", "filename": "secubox-app-webapp_1.5.0-r7_all.ipk", - "size": 39176, + "size": 39177, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1434,7 +1434,7 @@ "name": "secubox-app-zigbee2mqtt", "version": "1.0.0-r3", "filename": "secubox-app-zigbee2mqtt_1.0.0-r3_all.ipk", - "size": 5541, + "size": 5540, "category": "secubox", "icon": "package", "description": "SecuBox backend service", @@ -1458,7 +1458,7 @@ "name": "secubox-content-pkg", "version": "1.0.0-r1", "filename": "secubox-content-pkg_1.0.0-r1_all.ipk", - "size": 3906, + "size": 3909, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1470,7 +1470,7 @@ "name": "secubox-cookie-tracker", "version": "1.0.0-r1", "filename": "secubox-cookie-tracker_1.0.0-r1_all.ipk", - "size": 10645, + "size": 10643, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1482,7 +1482,7 @@ "name": "secubox-core", "version": "0.10.0-r16", "filename": "secubox-core_0.10.0-r16_all.ipk", - "size": 123045, + "size": 123053, "category": "system", "icon": "box", "description": "SecuBox core components", @@ -1494,7 +1494,7 @@ "name": "secubox-cve-triage", "version": "1.0.0-r1", "filename": "secubox-cve-triage_1.0.0-r1_all.ipk", - "size": 11826, + "size": 11828, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1506,7 +1506,7 @@ "name": "secubox-dns-guard", "version": "1.0.0-r1", "filename": "secubox-dns-guard_1.0.0-r1_all.ipk", - "size": 12486, + "size": 12482, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1518,7 +1518,7 @@ "name": "secubox-identity", "version": "0.1.0-r1", "filename": "secubox-identity_0.1.0-r1_all.ipk", - "size": 8083, + "size": 8084, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1530,7 +1530,7 @@ "name": "secubox-iot-guard", "version": "1.0.0-r1", "filename": "secubox-iot-guard_1.0.0-r1_all.ipk", - "size": 13372, + "size": 13370, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1542,7 +1542,7 @@ "name": "secubox-localrecall", "version": "1.0.0-r1", "filename": "secubox-localrecall_1.0.0-r1_all.ipk", - "size": 7798, + "size": 7793, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1554,7 +1554,7 @@ "name": "secubox-master-link", "version": "1.0.0-r1", "filename": "secubox-master-link_1.0.0-r1_all.ipk", - "size": 15040, + "size": 15035, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1566,7 +1566,7 @@ "name": "secubox-mcp-server", "version": "1.0.0-r1", "filename": "secubox-mcp-server_1.0.0-r1_all.ipk", - "size": 11433, + "size": 11429, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1578,7 +1578,7 @@ "name": "secubox-mirrornet", "version": "0.1.0-r1", "filename": "secubox-mirrornet_0.1.0-r1_all.ipk", - "size": 15304, + "size": 15309, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1590,7 +1590,7 @@ "name": "secubox-network-anomaly", "version": "1.0.0-r1", "filename": "secubox-network-anomaly_1.0.0-r1_all.ipk", - "size": 6169, + "size": 6167, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1602,7 +1602,7 @@ "name": "secubox-p2p", "version": "0.6.0-r3", "filename": "secubox-p2p_0.6.0-r3_all.ipk", - "size": 47862, + "size": 47860, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1614,7 +1614,7 @@ "name": "secubox-p2p-intel", "version": "0.1.0-r1", "filename": "secubox-p2p-intel_0.1.0-r1_all.ipk", - "size": 9799, + "size": 9801, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1626,7 +1626,7 @@ "name": "secubox-threat-analyst", "version": "1.0.0-r1", "filename": "secubox-threat-analyst_1.0.0-r1_all.ipk", - "size": 9868, + "size": 9863, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1638,7 +1638,7 @@ "name": "secubox-vortex-dns", "version": "1.0.0-r1", "filename": "secubox-vortex-dns_1.0.0-r1_all.ipk", - "size": 5446, + "size": 5441, "category": "utility", "icon": "package", "description": "SecuBox package", @@ -1650,7 +1650,7 @@ "name": "secubox-vortex-firewall", "version": "1.0.0-r1", "filename": "secubox-vortex-firewall_1.0.0-r1_all.ipk", - "size": 8890, + "size": 8895, "category": "utility", "icon": "package", "description": "SecuBox package", 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 53bc6588772c2d5f43d80c31a9300744c89bdf69..989b28e307d85b72be3008ce0e7d66b50ae8a369 100644 GIT binary patch literal 7523 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 literal 7525 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 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 1b24f7f5b865e1672321ce914de7939660eafd4c..434be4835128ffe7f8e0651c477a98c72ce5858c 100644 GIT binary patch literal 10453 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 LMS(Az08jt`r+;+R literal 10452 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