Commit Graph

1526 Commits

Author SHA1 Message Date
eb46c7128b fix(vm): Fix ARM builds by using arch-specific packages
- Remove docker/bind-server from ARM (not available)
- Use simpler package set for ARM targets
- Fix rockchip profile name
- Keep x86-64 with full package set

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 21:17:46 +01:00
9c4d8dcdfd feat(vm): Add ARM64 architectures to C3Box VM builds
- Add aarch64-generic (QEMU/Proxmox ARM)
- Add Raspberry Pi 4/400/CM4 (bcm27xx/bcm2711)
- Add Rockchip ARM64 (NanoPi R4S/R5S/R6S)
- Download arch-specific prebuilt packages
- Add architecture-specific kernel modules
- Create local build script with same logic
- Handle different image formats per arch

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 20:44:40 +01:00
2c2d11423c feat(vm): Include full SecuBox package suite in C3Box VM
- Download prebuilt packages from release artifacts
- Include 101+ SecuBox modules matching c3box.local production
- Preseed SecuBox core config (appstore, security, diagnostics)
- Configure network: 192.168.200.1 (LAN), DHCP (WAN)
- Include master-link mesh and P2P hub components
- Add fallback install script for post-boot installation
- Increase default disk to 8GB for full suite
- Update RAM recommendation to 2GB minimum

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 20:05:40 +01:00
2482f76e52 fix(ci): Use explicit version input for C3Box VM naming
- Add 'version' input parameter (default: v1.0.0-beta)
- Use C3BOX_VERSION env var for consistent naming
- Artifacts now named: c3box-vm-{version}-{arch}.{format}
- Fix: manual triggers now use correct version in filenames

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 19:36:16 +01:00
5da21f29e4 feat(ci): Update C3Box preseed for devel/beta test config
- LAN IP changed to 192.168.200.1 (test subnet)
- WAN (br-wan) configured as DHCP client
- Updated banner, docs, and release notes with new IP
- Ready for SecuBox devel beta testing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 19:12:08 +01:00
4fa322d1fd feat(ci): Rebrand VM appliance to C3Box
- Rename workflow to "Build C3Box VM Appliance"
- Update hostname to 'c3box'
- New ASCII banner with C3Box branding
- Update artifact names: c3box-vm-{version}-{arch}
- Update all documentation and release notes
- Config files now in /etc/c3box/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 18:54:46 +01:00
d8f8d04110 fix(ci): Look for SecuBox packages in package/secubox/
The luci-app-* packages are in package/secubox/, not at the repo root.
Updated the workflow to copy packages from the correct location.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 18:02:04 +01:00
4b72126784 fix(ci): Handle gunzip trailing garbage warning in VM build
OpenWrt firmware images contain trailing data that gunzip reports
as "trailing garbage" with exit code 2. This is normal and the
extracted image is valid. The fix ignores the warning while still
checking that extraction produced output.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 17:47:36 +01:00
b2af68ac9a feat(ci): Add multi-platform firmware and VM appliance workflows
New workflows using OpenWrt Image Builder for fast builds:

build-firmware-imagebuilder.yml:
- 16+ devices: x86-64, RPi 3/4/5, NanoPi R4S/R5S/R6S, GL.iNet, Linksys, NETGEAR, Ubiquiti, GlobalScale
- Uses Image Builder (much faster than source compilation)
- Pre-installs SecuBox packages
- Preseed auto-configuration
- Configurable root filesystem size (256MB-2GB)

build-vm-appliance.yml:
- VM images in multiple formats: VMDK, VDI, QCOW2
- EFI and BIOS boot options
- Auto-resize filesystem on first boot
- Configurable disk size (1-8GB)
- Ready for VMware, VirtualBox, Proxmox

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 17:34:26 +01:00
5b3ee567c5 feat(ci): Add x86_64 VM firmware build workflow
- New build-secubox-vm.yml for ready-to-use SecuBox VM images
- Uses OpenWrt 24.10.5 (latest stable release)
- Builds VMDK, VDI, QCOW2 formats for all VM platforms
- Includes all SecuBox LuCI packages pre-installed
- Docker support enabled (dockerd, docker-compose)
- Virtio drivers and QEMU guest tools for KVM/Proxmox
- Configurable rootfs size (512MB-4GB)
- Manual dispatch + automatic on version tags

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 14:00:34 +01:00
1edb8c880c fix(ci): Handle luci.mk auto-generated PKG_NAME
- luci.mk auto-sets PKG_NAME from directory name
- Skip PKG_NAME check for packages using luci.mk
- PKG_VERSION/PKG_RELEASE are recommended for luci.mk packages
- PKG_LICENSE remains recommended for all packages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 13:00:34 +01:00
49a6090dcf fix(ci): Make PKG_LICENSE warning instead of error
- PKG_LICENSE is now recommended, not required
- Required: PKG_NAME, PKG_VERSION, PKG_RELEASE
- Warnings are reported but don't fail the build
- Also updated tracking docs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 12:48:12 +01:00
cb59c58617 docs: Update tracking for Metrics Dashboard v2 + caching
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 12:43:48 +01:00
a53d2b1d63 fix(metrics): Get WAF blocked count from CrowdSec mitmproxy decisions
- WAF blocked now counts mitmproxy scenario decisions (1031 blocks)
- Removed waf_threats field (redundant with waf_blocked)
- Fixed dashboard to show 3 WAF stats: Bans, Alerts, Blocked

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 12:41:14 +01:00
9263fd7e4b feat(metrics): KISS-styled dashboard with double-buffer caching
UI:
- Clean card grid with colored stat values
- Services status bar (HAProxy, WAF, CrowdSec) with glowing dots
- Two-panel layout for WAF/Security and Connections
- Live clock with pulsing indicator
- Proper KissTheme.wrap() integration

Performance:
- Double-buffer cache at /tmp/secubox/metrics-cache.json
- 30s TTL with async background refresh
- Cron job for periodic cache updates
- Instant RPCD response (no computation on request)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 12:37:57 +01:00
0a2b65b913 docs: Update tracking files for Metrics Dashboard + WAF hot-reload
- Added LuCI Metrics Dashboard to HISTORY.md
- Documented WAF hot-reload discovery
- Updated WIP.md with completed work
- Noted HAProxy health check fix and test site cleanup

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 11:59:17 +01:00
f25854b08b fix(metablogizer): Use mitmproxy hot-reload instead of restart
mitmproxy's haproxy_router.py addon already implements hot-reload:
- Checks routes file mtime on every request
- Auto-reloads when file changes

Removed unnecessary mitmproxy restart after adding routes.
Just ensure file permissions are correct (644) for hot-reload to work.

This makes publishing faster and avoids service disruption.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 11:56:11 +01:00
678e5a5921 feat(luci): Add Metrics Dashboard + fix WAF filters layout
New luci-app-metrics-dashboard with real-time system overview:
- System uptime, memory, load stats
- Core services status (HAProxy, mitmproxy, CrowdSec)
- vHosts, MetaBlog sites, Streamlit apps counts
- WAF alerts, bans, threats statistics
- Active connections (HTTP, HTTPS, SSH, TCP total)
- SSL certificates list
- Auto-refresh every 5 seconds

WAF Filters page:
- Changed stats display to single-line compact format
- Shows "17 Categories · 17 Active · 150 Rules" inline

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 11:54:37 +01:00
8e55757dee fix(metablogizer): Auto-restart mitmproxy after adding routes
- Add mitmproxy restart after _add_mitmproxy_route() to load new routes
- mitmproxy loads routes at startup only, so restart is required
- Run restart in background to avoid blocking publish command

Also fixed on router:
- Disabled health check for mitmproxy_inspector backend
- HAProxy health check fails because mitmproxy returns 404 for
  requests without valid Host header

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 11:46:53 +01:00
3127986fbc docs: Update tracking files for HAProxy/mitmproxy WAF routing fix
- Fixed 503 errors on published sites (testsite, santefr, etc.)
- Root cause: mitmproxy haproxy_router_enabled missing from UCI
- Root cause: mitmproxy routes not reloaded after file update
- Root cause: HAProxy config needed reload after changes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 10:56:14 +01:00
c8a5e1c19a fix(metablogizer): Route new sites through mitmproxy for WAF inspection
- Changed vhost backend from direct metablog_* to mitmproxy_inspector
- Added original_backend tracking for mitmproxy route resolution
- Changed server address from 192.168.255.1 to 127.0.0.1
- Added _add_mitmproxy_route helper for route registration
- Fixed both cmd_publish() and _emancipate_haproxy() functions

This ensures all newly published sites go through WAF inspection
rather than bypassing security checks.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 10:35:26 +01:00
e1f2a0e885 feat(droplet): Implement async publish to prevent UI timeout
- RPCD handler returns immediately with job_id (~0.04s)
- Background script uses file output to avoid pipe inheritance issues
- LuCI JS polls job_status every 2s until completion
- Uses setsid for proper process detachment
- jsonfilter for reliable parameter parsing

Fixes "Failed to publish" error caused by ubus timeout during
40+ second publish operations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 09:43:19 +01:00
ddf480e6ed fix(droplet,dpi): Resolve publish hang and broken pipe errors
- dropletctl: Remove pipe to grep that blocked on background children
- metablogizerctl: Background HAProxy generate/reload (~90s with 95 certs)
- dpi-lan-collector: Pre-compute flow counts in single pass instead of
  spawning grep per client (eliminates broken pipe errors)

Publish time reduced from ~2 min to ~35 seconds.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 07:39:09 +01:00
ece237d194 feat(mitmproxy): Add headless mode to reduce RAM from 3.4GB to 96MB
- Add headless UCI option to use mitmdump instead of mitmweb
- Enable headless by default for WAF (mitmproxy-in) instance
- Increase default memory limit from 256MB to 2GB
- Fix LXC config generation to always recreate on service start
- Fix rootfs check path (/usr/local/bin not /usr/bin)
- Use exec in startup script for proper foreground execution

Headless mode runs mitmdump (CLI) instead of mitmweb (web UI),
saving ~3.3GB RAM while maintaining full WAF functionality.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-17 07:14:05 +01:00
3fcad8e626 fix(waf): Prevent false positive bot detection on legitimate browsers
- Add LEGITIMATE_BROWSERS whitelist (Chrome, Firefox, Safari, Edge, etc.)
- Check for legitimate browser signatures BEFORE bot signature matching
- Fix CriOS (Chrome iOS) false positive: 'mozi' substring matched Mozi botnet
- Make botnet signatures more specific: 'mozi' → 'mozi/', 'mozi '
- Prevents banning real users loading pages with multiple JS requests

Fixes false positive on IP 82.65.224.119 (French ISP, Chrome iOS user)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 19:30:02 +01:00
a0825c73c1 feat(waf): Add honeypot detection categories and fix JSON escapes
- Fix invalid \x00 JSON escapes to valid \u0000 Unicode escapes
- Add 4 new WAF rule categories:
  - waf_fingerprint (12 rules): WAF bypass/fingerprinting detection
  - honeypot (16 rules): Decoy file and admin panel probes
  - recon_crawler (10 rules): Reconnaissance file enumeration
  - credential_harvest (8 rules): Password/token exposure detection
- Total: 17 categories, 150 rules
- UI: Inline stats header layout for WAF Filters page

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 09:52:43 +01:00
f46e145927 feat(crowdsec): Add geo heatmap visualization for threat origins
- New heatmap.js component with SVG world map and country centroids
- Colored dots show threat distribution: orange (local), cyan (CAPI), red (WAF)
- Dot size scales logarithmically with threat count (4-20px)
- Hover tooltips show country code and count
- Added geo_local_raw and geo_capi_raw fields to RPCD backend
- CAPI geo extraction from decisions with GeoIP metadata
- CSS styling for heatmap container, dots, and legend

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 09:28:48 +01:00
b02503eac4 fix(crowdsec): Count all mitmproxy scenarios in WAF bans
Changed waf_bans_today to count all mitmproxy-* scenarios instead of
only mitmproxy-waf (which doesn't exist). Now correctly counts
mitmproxy-scanner, mitmproxy-botscan, etc.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 09:13:14 +01:00
f424ec72c1 fix(crowdsec): Fix rpcd blocking and show active bans
- Make refresh_cache async to prevent rpcd watchdog kills
- Fix JSON escaping for top_scenarios/countries arrays
- Show decisions as "Active Bans" when alerts_raw is empty
- Display ban expiry time instead of creation time
- Update cron to run cache refresh in background

Fixes LuCI crashes caused by 16s blocking refresh calls.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 08:35:03 +01:00
b9f789fdb7 fix(crowdsec): Fix alerts/scenarios/countries stats in dashboard
- alerts_24h now uses local_decisions count instead of empty file
- top_scenarios_raw now extracts from decisions JSON (was parsing CAPI metrics)
- top_countries_raw now correctly parses IsoCode from alerts GeoIP metadata
- Double-buffer caching via cron job already in place

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 08:29:59 +01:00
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