Commit Graph

1496 Commits

Author SHA1 Message Date
c74ba2e474 feat(luci): KISS theme rework for SMTP Relay and SecuBox Users
- Rewrite smtp-relay/settings.js with proper KISS theme styling
- Rewrite secubox-users/overview.js with proper KISS theme styling
- Use KissTheme.wrap() for consistent dark theme rendering
- Add stat cards with colored values matching mailserver reference
- Add proper form styling with inline CSS variables
- Add NZB tools (SABnzbd, NZBHydra) to KISS menu Downloads
- Add webtorrent to portal tree Downloads category
- Fix portal tree webtorrent pattern

KISS = Keep It Simple Sexy

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 08:20:12 +01:00
ee7cd8ef6f fix(lyrion): Fix Rescan button disabled state in updateUI
The updateUI function was incorrectly disabling the Rescan button when
Lyrion was running. Rescan should only be enabled when running.

- Split forEach into separate button handlers
- Start button: disabled when running (correct)
- Rescan button: disabled when NOT running (fixed)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 07:56:09 +01:00
d0cd42e2a1 fix(luci): Performance and UX improvements for exposure and portal
- Optimize exposure RPCD: O(n) single-pass awk parsing for vhost_list
  and ssl_list (fixes XHR timeout on 200+ vhosts)
- Fix portal tree URLs: Use get_menu_path() to read actual LuCI menu
  paths from JSON instead of hardcoded paths
- Add Downloads category to portal tree (torrent, droplet patterns)
- Add new apps to System category (config-vault, reporter, smtp-relay,
  rtty, dpi-dual, metacatalog)
- Enhance KISS theme menu: Add Downloads, Monitoring categories
- Fix Lyrion URL: Use HTTPS vhost instead of dynamic port URL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 07:35:18 +01:00
b08e71fa7f docs: Document quick-access QR page and port conflict fix
- Added quick-access.secubox.in QR landing page to tracking
- Documented MetaBlogizer port allocation race condition
- Existing tools: check-ports, fix-ports commands
- Fixed srvi/quick-access port 9013 conflict
- Updated mitmproxy routes (127.0.0.1 → 192.168.255.1)
- Added recommended improvements to backlog

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 19:46:30 +01:00
c59f7cde0b docs: Add quick-access page with QR codes
- QR codes for LuCI access (default, SecuBox router)
- QR codes for GitHub docs and release
- QR codes for Droplet and Streamlit Forge tools
- Default credentials display
- Dark theme matching SecuBox design

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 19:12:54 +01:00
2e772c1fa9 docs: Update project status for v1.0.0-beta release
- PROJECT-STATUS-AND-INNOVATION.md: Complete rewrite with current status
  - Four-layer architecture documentation
  - Punk Exposure three-channel model
  - All implemented innovations (AI Gateway, MCP, DPI, etc.)
  - Bug bounty scope and attack surface
  - VM distribution details

- README.md: Added default VM credentials

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 19:05:07 +01:00
b659c34d57 docs: Update HISTORY.md with v1.0.0 beta release
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 18:45:58 +01:00
605841e443 docs: v1.0.0 Beta Release - Pen Testing & Bug Bounty Ready
- BETA-RELEASE.md: Complete security testing guide
  - Attack surface overview (HAProxy, WAF, LXC, P2P)
  - High-value targets and secrets locations
  - Known weak points (intentional disclosure)
  - Bug bounty scope and reporting guidelines
  - Test environment setup (VirtualBox, Docker)

- SECURITY.md: Updated with Hall of Fame and beta info
- README.md: Version bump to 1.0.0-beta

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 18:45:29 +01:00
79775faa6e fix(luci): Add web UI URL link to Lyrion dashboard
- Move Web Interface section to top for visibility
- Always show Open Lyrion Web UI button with dynamic URL
- Display URL text next to button

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 18:39:03 +01:00
baa07a7521 fix(luci): Device Intel emulators dark theme
- Remove KissTheme dependency, use direct RPC calls
- Dark theme colors (#12121a, #1a1a24, #00d4aa, #00a0ff)
- Update common.css with matching dark styles
- Simplified DOM rendering with inline styles

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 17:42:54 +01:00
62f89f0d57 fix(luci): Regenerate MAC Guardian dashboard with dark theme
- Remove KissTheme dependency, use standard LuCI with inline styles
- Dark theme matching SecuBox palette (#12121a, #1a1a24, #00d4aa, #00a0ff)
- Simplified view with direct DOM rendering instead of form.Map
- Cards grid layout for status, WiFi interfaces, DHCP, config
- Inline Trust/Block action buttons with proper styling
- Responsive tables for clients and alerts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 17:37:53 +01:00
3fa33f7872 fix(luci): Threat Analyst menu path and dark theme CSS
- Change menu path from /admin/secubox/security/threat-analyst to
  /admin/services/threat-analyst for proper placement
- Rewrite dashboard.css with dark theme colors matching SecuBox palette
  (#12121a, #1a1a24, #0a0a12 backgrounds; #00d4aa, #00a0ff accents)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 17:20:07 +01:00
e1ee84b3eb fix(dashboards): WAF bans cache and DPI LAN flow display
WAF Dashboard:
- Use cached bans from cron (waf-stats-update) instead of slow cscli
- Fixes "Failed to load bans" timeout issue

DPI Dual-Stream:
- Add LAN Flow Analysis card showing active clients, destinations, protocols
- LAN passive flow analysis was working but not displayed

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 17:15:13 +01:00
58ba852564 fix(luci): Fix dpi-dual menu and simplify lyrion UI
- Fix dpi-dual "firstchildview" error (changed to "firstchild")
- Simplify luci-app-lyrion: overview.js 276→150 lines
- Simplify luci-app-lyrion: settings.js 78→32 lines
- Simplify luci-app-lyrion: RPCD 300→90 lines
- Combined status + library stats into single RPC call
- Removed unused methods (update, logs, get_config, save_config)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 17:03:13 +01:00
fd54253f66 chore(ui): Update dev status widget for v1.0.0
- Update lastUpdate to 2026-03-16
- Update layer progress: core 98%, ai 95%, mirrornet 90%, certification 75%
- Mark milestones v0.18, v0.19, v1.0 as completed
- Add v1.1 Extended Mesh as in-progress
- Update stats: 190 packages, 243 vhosts, 174 WAF routes, 1850 commits
- Update feature status: AI security, AI memory, mesh network to production
- Update config-management to production with config-vault

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 16:09:15 +01:00
0809bc69c2 chore: Bump version to 1.0.0
All major roadmap milestones achieved:
- v0.18 MirrorBox Core
- v0.19 AI Expansion + MirrorNet
- v1.0 Full Stack (VoIP, Matrix, Factory provisioning)
- v1.1+ Extended Mesh (Yggdrasil, Meshname DNS)

Updated version strings in:
- Makefile: PKG_VERSION 0.10.0 → 1.0.0, PKG_RELEASE reset to 1
- secubox CLI: SECUBOX_VERSION 0.9.0 → 1.0.0
- secubox-core daemon: SECUBOX_VERSION 0.8.2 → 1.0.0
- RPCD handlers: core.sh, dashboard.sh, luci.secubox
- common.sh: secubox_get_version()
- README.md header

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 16:05:39 +01:00
a345c16425 feat(smtp-relay): Add unified SMTP relay configuration
- New secubox-app-smtp-relay package with centralized SMTP config
- Shared library with send_mail(), send_html_mail(), send_text_mail()
- CLI: smtp-relayctl with status/test/send/configure/admin commands
- RPCD: 5 methods for LuCI integration
- LuCI settings page with mode selection and test button
- Modes: external (SMTP server), local (auto-detect mailserver), direct
- Migrated reporter and bandwidth-manager to use shared library
- Backwards-compatible fallback to legacy per-app config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 16:01:12 +01:00
ccccd3d93b feat(dpi-dual): Add WAF auto-ban tuning system
- UCI config: Add scoring section with event weights, sensitivity presets,
  whitelist, and decay options
- dpi-correlator: Load scoring weights from UCI, apply sensitivity
  multipliers, check whitelist before auto-ban, periodic reputation decay
- CLI: New 'tune', 'whitelist', 'decay' commands for runtime configuration
- RPCD: 6 new methods - get_tuning, set_tuning, whitelist_add/remove/list,
  reset_reputation
- ACL: Added permissions for new tuning methods

Sensitivity presets:
- low (0.7x) - fewer false positives
- medium (1.0x) - balanced (default)
- high (1.3x) - aggressive detection

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 15:37:55 +01:00
c80b10f18d feat(luci): Add provisioning and ttyd deployment UI
Config Vault Dashboard (overview.js):
- "Device Provisioning" card with 3 action buttons
- Provision Remote: Modal to push clone to remote node
- Serve via HTTP: Generate clone for HTTP download
- Restore All: Confirmation modal to restore all modules
- RPC calls: provision, serve_clone, restore_all

RTTY Remote Dashboard (dashboard.js):
- "Deploy ttyd to All" global button in controls
- Per-node "ttyd" button in Connected Nodes table
- Confirmation modal for bulk deployment
- Progress spinner and result display
- RPC calls: deploy_ttyd, install_remote

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 15:30:32 +01:00
e86545bd3a feat(config-vault): Add device provisioning system
Implement full provisioning workflow for SecuBox device replication:

Auto-Restore:
- import-clone <file> --apply: Auto-restore all modules after import
- restore-all: Restore all modules from vault

Remote Provisioning:
- provision <node|all>: Push clone to remote nodes via RPC proxy
- Transfer clone as base64 to remote node
- Trigger import+apply on remote

First-Boot Pull:
- pull-config <master>: Pull config from master node
- HTTP download or RPC fallback
- Auto-reboot after apply, marks /etc/secubox-provisioned

HTTP Serve:
- serve-clone: Generate clone at /www/config-vault/
- Enables HTTP-based config distribution

RPCD Methods (6 new):
- restore_all, import_apply, provision
- pull_config, export_clone_b64, serve_clone

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 15:18:54 +01:00
ac7912e0a1 feat(rtty): Add remote package installation for mesh nodes
Add rttyctl commands for remote package deployment:
- rttyctl install <node|all> <app_id> - Install package on node(s)
- rttyctl install-status <node> [app] - Check package status
- rttyctl deploy-ttyd <node|all> - Deploy ttyd web terminal

RPCD methods added:
- install_remote, install_mesh, deploy_ttyd, install_status

Features:
- Node discovery from master-link, WireGuard, P2P mesh
- Auto-enables and starts ttyd after installation
- Batch install with summary stats (installed/skipped/failed)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 15:10:32 +01:00
e2723946d4 docs: Update tracking for DPI Phase 4 LAN Passive Analysis
- Added LAN passive flow analysis to HISTORY.md
- Updated WIP.md with completed DPI work
- Noted mitmproxy-out removal and detection fix

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 15:02:06 +01:00
76754df467 fix(dpi): Detect mitmproxy-in specifically for WAF status
- Changed pgrep to detect mitmproxy-in container only
- mitmproxy-out removed from deployment (not needed for WAF)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 15:00:19 +01:00
69b5dca350 fix(dpi): Fix protocol display showing null suffix in LAN Flows
- Remove unused application field concatenation causing "TCPnull" display
- Sort protocols by flow count instead of non-existent bytes field
- Simplify protocol card to show protocol name and flow count only

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 14:46:09 +01:00
1fd249d19d fix(dpi): Remove local keyword from RPCD handler
BusyBox sh doesn't support 'local' outside of functions.
Remove all 'local' keywords and fix orphaned variable declarations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 14:41:02 +01:00
427987c9f0 fix(dpi): OpenWrt compatibility for LAN collector
- Rewrite client/destination collection using awk instead of pipe/while
  (BusyBox shell subshell limitations with variable scope)
- Use conntrack for flow counting per client
- Use pgrep -f for process detection (truncated process names)
- Compatible with nDPId instead of netifyd

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 14:33:15 +01:00
f39440ab16 feat(dpi): Add LAN passive flow analysis (no MITM, no cache)
Real-time passive flow monitoring on br-lan for network analysis:
- dpi-lan-collector service watches netifyd flows in real-time
- Tracks active clients, external destinations, and protocols
- Per-client bandwidth and flow statistics
- Protocol/application detection via nDPI
- Zero latency impact - pure passive observation

LuCI integration:
- New "LAN Flows" dashboard view with real-time updates
- RPCD methods: get_lan_status, get_lan_clients, get_lan_destinations, get_lan_protocols
- Settings panel for LAN analysis configuration

CLI commands:
- dpi-dualctl lan - show summary
- dpi-dualctl clients - list active LAN clients
- dpi-dualctl destinations - external destinations
- dpi-dualctl protocols - detected protocols/apps

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 12:37:57 +01:00
b767f4dc30 feat(dpi): Phase 4 - Integration, documentation and widget
- Add settings.js LuCI view for full UCI configuration
- Add widget.js embeddable component for other dashboards
- Add comprehensive README.md with architecture diagram
- Add luci-app-dpi-dual entry to SecuBox catalog
- Update menu.d to include Settings tab

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 12:31:47 +01:00
7ff9ee3805 feat(dpi): Phase 3 - Correlation engine + timeline view
Correlation Library (correlation-lib.sh):
- IP reputation tracking with configurable decay
- Full context gathering from MITM, DPI, WAF streams
- CrowdSec decision checking and notification
- Correlation entry builder with rich context

Enhanced Correlator (dpi-correlator v2):
- Watches WAF alerts, CrowdSec decisions, DPI flows
- Auto-ban for high-reputation IPs (threshold: 80)
- Notification queue for high-severity threats
- CLI: correlate, reputation, context, search, stats

LuCI Timeline View:
- Correlation timeline with colored event cards
- IP context modal showing MITM requests + WAF alerts
- Quick ban button with CrowdSec integration
- Search by IP functionality
- Stats: total, high-threat, banned, unique IPs

RPCD Methods (8 new):
- get_correlation_stats, get_ip_context, get_ip_reputation
- get_timeline, search_correlations, ban_ip, set_auto_ban

UCI Config: auto_ban, auto_ban_threshold, notifications

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 12:27:20 +01:00
a24beaf316 feat(dpi): Phase 2 - MITM double buffer + LuCI dashboard
MITM Double Buffer (dpi_buffer.py):
- Compiled regex patterns for 6 threat categories
- Scanner detection (sqlmap, nikto, nmap, etc.)
- Optional blocking mode for high-score threats
- Request replay queue for forensic analysis
- Rate limiting detection
- Stats: buffer entries, threat distribution, top hosts

LuCI Dashboard (luci-app-dpi-dual):
- RPCD handler with 10 methods
- KISS-themed overview with stream status cards
- LED indicators for MITM/TAP/Correlation
- Threats table with score and blocked status
- Protocol distribution from netifyd
- Manual IP correlation trigger

Streamlit Control Panel:
- Added DPI Dual card with flows/threats/blocked metrics

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 12:21:50 +01:00
58a51eb271 feat(dpi): Implement Phase 1 of Dual-Stream DPI architecture
- secubox-dpi-dual package with parallel MITM + Passive TAP analysis
- TAP stream: tc mirred port mirroring to dummy interface for netifyd
- Flow collector: Stats aggregation from netifyd, cleanup, JSON output
- Correlation engine: Matches MITM WAF events with TAP flow data
- Watches CrowdSec decisions and WAF alerts for threat enrichment
- CLI: dpi-dualctl with start/stop/status/flows/threats/mirror commands
- Procd service: manages flow-collector + correlator instances
- MITM double buffer: dpi_buffer.py mitmproxy addon (Phase 2 prep)
- UCI config: dual/mitm-only/tap-only mode selection

Architecture: package/secubox/DUAL-STREAM-DPI.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 12:15:17 +01:00
fccac11148 docs: Add Dual-Stream DPI Architecture specification
Comprehensive architecture for parallel traffic analysis:

Stream 1 (MITM):
- HAProxy + mitmproxy with SSL termination
- Double buffer for async replay analysis
- WAF rules + CrowdSec integration

Stream 2 (TAP/Passive):
- tc mirred port mirroring
- netifyd/nDPI flow classification
- Zero latency, metadata-only analysis

Correlation Engine:
- Match MITM events with DPI flows
- Unified threat analytics
- Context enrichment for alerts

Includes:
- Package structure for secubox-dpi-dual
- UCI configuration schema
- CLI tool specification
- Integration points (LuCI, Streamlit, API)
- 4-phase implementation plan

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 12:02:15 +01:00
69f0a85057 feat(control): Enhance secubox_control with detailed threat/ban stats
- Added WAF stats: threats_today, autobans_total, autobans_pending
- Added CrowdSec detailed: active_bans, total_decisions
- New LED4 indicator for active bans (red >5, orange >0, green 0)
- WAF/MITM card shows Threats + AutoBans counts
- Reads from waf-stats.json and crowdsec-overview.json caches

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 11:58:29 +01:00
abe3f0a944 fix(wall): Implement true double buffering to eliminate visual glitches
- Created backBuffer canvas (same size as visible)
- All tile drawing now uses bbCtx (backBuffer context)
- Single ctx.drawImage(backBuffer) blit at frame end
- Eliminates tearing and square artifacts from partial renders
- BackBuffer resized in sync with visible canvas

Technical: Classic double buffering pattern - compose entire
frame offscreen, then atomic copy to display buffer.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 11:44:28 +01:00
528e9e508c feat(wall): FFT histogram + improved BPM detection + performance fixes
FFT Histogram:
- Colorset-mapped frequency bars (bottom center)
- Each bar corresponds to a TAO_SPECTRUM color
- Colors pulse brighter based on FFT energy

BPM Detection:
- Lowered thresholds (0.03 kick, 0.08 flux)
- Adaptive threshold tracks average energy
- Faster detection (3 onsets vs 4)
- More responsive smoothing (alpha 0.4)
- 200ms debounce between beats

Performance:
- Canvas scale 2x (was 10x)
- Limited 3D tilt ±12°/±10°
- Optimized tiling margins
- Wrapper-based overflow clipping

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 11:25:55 +01:00
d339d56be6 feat(wall): Auto-hide UI on mouse idle + enhanced readability
- UI fades in on mouse/touch/key activity
- UI fades out after 2.5s idle (smooth 0.4s transition)
- When visible: larger text, better contrast, glow effects
- Joystick/depth/pixel controls enhanced with backdrop blur
- Colorset buttons larger (28px) with shadow
- Status bar text with glow effect

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 11:08:03 +01:00
991e68ea22 feat(samples): Add MAGIC·CHESS·360 wall visualization
Standalone HTML art piece with:
- 16 colorsets (default, alchy, emojiz, punk, hollistique, tantrique, etc.)
- 3D CSS perspective joystick control (rotateX/rotateY)
- Color cycle toggle for spectrum animation
- Extended tiling for full 3D rotation coverage
- Depth slider, pixel ring, auto-rotate controls

Deployed at: https://wall.maegia.tv/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 11:02:05 +01:00
d6d286d615 feat(wall): Add 3D joystick and color cycle toggle to MAGIC·CHESS·360
- 2D joystick controls true CSS 3D perspective (rotateX/rotateY)
- Color cycle toggle: 🎨 button enables/disables spectrum animation
- Default colorset changed to RGB with cycling OFF
- Depth slider for zoom, pixel ring for cell size
- CSS perspective: 1200px for 3D depth effect

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 11:01:20 +01:00
91e285786a feat(wall): Add pixel/perspective/pan sliders to MAGIC·CHESS·360
- Pixel slider: cell size zoom (3-40px range)
- Persp slider: auto-rotate perspective speed
- Pan slider: mouse parallax strength (0-2x)
- Sliders positioned bottom-left with color-coded thumbs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 10:36:36 +01:00
a25e285573 feat(wall): Add 15 colorsets to MAGIC·CHESS·360
- Added colorset selector to wall.maegia.tv TAO_SPECTRUM
- 15 palettes: default, alchy, emojiz, punk, hollistique, tantrique,
  cosmique, solarix, oceanique, rainbow, fluo, phospho, vintage, tao, merkaba
- Minimal patch (~8KB added) preserving original functionality
- Keyboard shortcuts 1-9, localStorage persistence
- Deployed: https://wall.maegia.tv/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 10:35:12 +01:00
01b48e42ec feat(osint): Add Maltego iTDS and Sherlock security tools
- secubox-app-maltego: Transform Distribution Server in LXC
  - Python-based transform execution engine
  - REST API compatible with Maltego desktop client
  - Custom transform support via /srv/maltego/transforms/

- secubox-app-sherlock: Username hunting across social networks
  - Sherlock + Holehe integration for username/email OSINT
  - maigret, theHarvester, socialscan also installed
  - REST API with async task execution

Both tools exposed via HAProxy at:
- https://maltego.gk2.secubox.in/
- https://sherlock.gk2.secubox.in/

Streamlit OSINT dashboard deployed at:
- https://osint.gk2.secubox.in/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 08:36:56 +01:00
10b3d3a43c feat(torrent): Add LuCI dashboard and fix WebTorrent ESM issue
- Add luci-app-torrent: unified dashboard for qBittorrent + WebTorrent
  - RPCD handler with status/list/start/stop/add methods
  - Dark-themed UI with real-time torrent queue display
  - Start/Stop controls and magnet link add functionality
  - 5-second auto-refresh polling
- Fix webtorrent v2.x ESM incompatibility
  - Pin to v1.9.7 (last CommonJS version)
  - Use npm install with --save-exact to prevent semver drift
- HAProxy exposure configured:
  - qBittorrent: torrent.gk2.secubox.in (192.168.255.42:8090)
  - WebTorrent: stream.gk2.secubox.in (192.168.255.43:8095)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-15 06:59:07 +01:00
0ec28266c5 feat(torrent): Add qBittorrent and WebTorrent packages
qBittorrent (secubox-app-qbittorrent):
- Full-featured BitTorrent client with web UI
- Container IP: 192.168.255.42:8090
- qbittorrent-nox from Debian repos
- API commands: add, list, status

WebTorrent (secubox-app-webtorrent):
- Browser-based torrent streaming via WebRTC
- Container IP: 192.168.255.43:8095
- Node.js server with webtorrent library
- Stream video files directly in browser
- Beautiful dark theme web UI

Both use Debian LXC containers (no Docker/Podman)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 19:03:07 +01:00
d308b22070 fix(nzbhydra): Fix startup script for generic release
- Install python3 for wrapper script
- Use nzbhydra2wrapperPy3.py instead of native binary
- Download generic release (not linux-specific)
- Handle already-installed case

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 18:21:43 +01:00
169b39ed57 fix(newsbin): Fix RPCD handler for BusyBox sh compatibility
- Use functions instead of inline local vars (not allowed in case)
- Use 1/0 instead of true/false for json_add_boolean
- Use full paths for lxc-info and curl

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 17:36:46 +01:00
00da717ea4 fix(newsbin): Use Debian LXC rootfs for SABnzbd and NZBHydra
- SABnzbd/NZBHydra now use Debian LXC containers instead of Docker
- Added PATH/HOME exports to fix startup issues
- Added non-free repo for unrar dependency
- Use container IPs (192.168.255.40/41) instead of localhost
- Fixed cgroup mount compatibility

Container network:
- SABnzbd: 192.168.255.40:8085
- NZBHydra: 192.168.255.41:5076

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 17:26:43 +01:00
aef0284b44 feat(newsbin): Add Usenet search and download system
New packages for Usenet/NZB workflow:
- secubox-app-sabnzbd: NZB downloader (LXC container)
  - EWEKA NNTP credentials pre-configured
  - Docker image extraction to LXC
  - HAProxy SSL exposure support
- secubox-app-nzbhydra: Meta search indexer (LXC container)
  - Aggregates multiple NZB indexers
  - Newznab API for Sonarr/Radarr integration
  - SABnzbd auto-linking
- luci-app-newsbin: Unified LuCI dashboard
  - Status cards (speed, queue, disk)
  - Meta-search with download buttons
  - Queue monitoring with progress bars
  - History view

CLI: sabnzbdctl, nzbhydractl (install/start/status/search)
LuCI: Services > Newsbin

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 15:31:46 +01:00
078a3bea5f fix(droplet): Proper metablogizer integration and permissions
- Fix file permissions (chmod 644/755) after upload
- Use site_${name} UCI section naming for metablogizer
- Auto-assign port and call metablogizerctl publish
- Generate README.nfo for new droplets
- Handle both old/new section naming in list/remove

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 11:43:24 +01:00
f8d9c5ee70 fix(droplet): Use extension-based file detection for OpenWrt
The 'file' command is not available on OpenWrt. Replaced
mime-type detection with extension parsing (.html, .htm, .zip).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 11:35:11 +01:00
1598ee9391 docs: Update HISTORY.md for Droplet Publisher
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 11:25:53 +01:00