Commit Graph

774 Commits

Author SHA1 Message Date
38fbddd2a9 fix: CDN cache ACL permissions and Tor Shield IP detection
CDN Cache:
- Add file read permissions for cache, logs, and SSL dirs
- Add new RPCD methods to ACL (get_ca_cert, set_ssl_bump)

Tor Shield:
- Create tor-ip-update.sh for caching exit/real IPs
- Use --socks5-hostname for DNS through Tor
- Add cron job for periodic IP updates

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 15:15:46 +01:00
189715e2ee feat(cdn-cache): Add MITM SSL bump support for HTTPS caching
- Generate CA certificate for SSL bumping
- Initialize SSL certificate database with security_file_certgen
- Selective SSL bump: only cache-worthy domains (Windows Update, Steam, etc.)
- Exclude security-sensitive sites (banking, Google accounts, etc.)
- Proper firewall integration for both HTTP and HTTPS redirect
- RPCD methods for CA cert download and SSL bump control

Ports:
- 3128: Forward proxy
- 3129: HTTP transparent intercept
- 3130: HTTPS SSL bump intercept

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 15:11:14 +01:00
5a40e8a61e feat: Major updates - CDN cache with Squid, network modes UI rework, bugfixes
CDN Cache:
- Migrate from nginx to Squid proxy for better caching
- Add aggressive caching rules for Windows Update, Linux repos, Steam, Apple
- Proper firewall integration via UCI (transparent proxy)
- Real-time stats from Squid access logs

Network Modes:
- Complete UI rework with MirrorBox dark theme
- 9 network modes with emojis and descriptions
- Dynamic CSS animations and modern styling

Fixes:
- Fix jshn boolean handling in secubox-recovery (1/0 vs true/false)
- Fix nDPId RPCD to use netifyd as fallback DPI provider
- Update media-flow and security-threats dashboards

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 15:03:02 +01:00
55ef43aa54 feat(p2p): Add MirrorBox overview and profiles pages
Overview Page (SOC Admin Landing):
- Architecture diagram with layer visualization
- Modular component cards with status indicators
- Network topology with animated orbital nodes
- System status grid with health indicators
- Development roadmap timeline

Profiles Page (Dynamic Cloning):
- Component readiness tracking with progress bars
- Quick presets for common configurations
- Package feeds management with toggles
- Saved profiles list with load/delete
- Clone & deploy actions (export, import, sync, push)

Menu Structure:
- Renamed P2P Hub to MirrorBox
- Added Overview as landing page
- Added Profiles for cloning management

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:40:01 +01:00
a68d8b638f feat(p2p): Add MirrorBox auto-init, self-recovery, and ACL fixes
MirrorBox Auto-Init:
- Add blockchain-like gigogne P2P structure with peer zero (P0) genesis
- Auto-create self-mesh on page load with configurable depth
- Preserve MirrorBox peers during refresh cycles

Self-Recovery System:
- Add secubox-restore script for bootstrapping new OpenWrt boxes
- Generate customized bootstrap.sh in Gitea backups
- Support interactive and command-line restore modes

ACL Fixes:
- Add missing deploy/pull methods to luci-app-secubox-p2p ACL
- Add luci.gitea and luci.secubox-p2p access to luci-app-secubox ACL
- Fix null display issue in hub.js (changed to empty string)

Backup Enhancements:
- Fix syntax error in RPCD heredoc (openwrt_version line)
- Add branch reference to Gitea API calls (main branch)
- Include bootstrap.sh and secubox-restore in backup push

Documentation:
- Add comprehensive README.md for SecuBox P2P module

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:34:12 +01:00
2687e863a6 feat(gitea): Add RPCD methods for user, token, and repo creation
Add new RPCD methods to luci.gitea for P2P mesh auto-setup:

- create_user: Create regular Gitea user via CLI
- generate_token: Generate access token with configurable scopes
- create_repo: Create repository for a user via admin API

These methods enable automated P2P mesh repository setup without
requiring manual token generation in Gitea web UI.

Requires lxc-attach package for container access.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:40:29 +01:00
874185951b fix(p2p): Add ACL permissions for Gitea and backup RPCD methods
Add missing ACL permissions for new RPCD methods:

Read permissions:
- get_gitea_config
- list_gitea_repos
- get_gitea_commits
- list_local_backups

Write permissions:
- set_gitea_config
- create_gitea_repo
- push_gitea_backup
- pull_gitea_backup
- create_local_backup
- restore_local_backup

Fixes: RPC call failed with error -32002: Access denied

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:22:04 +01:00
f4c8f40b3e feat(p2p): Auto-create mesh repository without modal parameters
Add autoCreateMeshRepo() function that automatically:
- Generates repo name from hostname: secubox-mesh-{hostname}
- Detects local Gitea server (gitea.local, git.local, etc.)
- Only prompts for access token on first use (one-time setup)
- Creates private repository with README
- Pushes initial mesh state immediately

Replace manual " Create" button with "🚀 Auto Setup" for seamless
mesh repository initialization.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:19:44 +01:00
5287a7b807 feat(p2p): Add backend Gitea and backup support via secubox-core RPCD
Add complete backend implementation for Gitea integration and local backups
with admin permissions:

RPCD Methods (luci.secubox-p2p):
- get_gitea_config / set_gitea_config - Gitea server configuration
- create_gitea_repo - Create new Gitea repository via API
- list_gitea_repos - List user's Gitea repositories
- get_gitea_commits - Fetch commit history
- push_gitea_backup - Push config/packages/scripts to Gitea
- pull_gitea_backup - Restore from Gitea commit
- create_local_backup - Create local backup snapshot
- list_local_backups - List available local backups
- restore_local_backup - Restore from local backup

UCI Config (secubox-p2p):
- gitea section: server_url, repo_name, access_token, auto_backup options
- backup section: backup_dir, max_backups, auto_cleanup

Frontend (hub.js):
- Updated createGiteaRepo() to use backend API
- Updated backup functions to use backend storage
- Added refreshGiteaCommits() for real API calls
- Load function now fetches Gitea config and backup list

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:17:18 +01:00
18a5f441ba feat(p2p): Add Gitea repository creation feature
Add createGiteaRepo() function with modal interface for creating new Gitea
repositories directly from the P2P Hub. Users can configure server URL,
repo name, description, access token, and options (private, init README,
push current state).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:08:25 +01:00
a75e41b5e8 feat(p2p): Add parallel component sources and auto-self mesh
- Add 6 parallel component sources: ipk, sets, profiles, scripts, macros, workflows
- Add component sources grid with enable/sync controls per source
- Add component list modal with import functionality
- Add auto-self mesh configuration with options:
  - Auto-create self peer
  - Full backup on create
  - Real test mode
  - Parallel sync
- Add runAutoSelfMesh() for automated mesh setup workflow
- Add exportFullState() for complete state export to JSON
- Add syncAllComponents() for parallel synchronization
- Add comprehensive CSS for component sources grid and auto-self section

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:03:59 +01:00
105d946c19 feat(p2p): Add mesh backup, test cloning, and Gitea history feed
- Add Backup & Versioning panel with three cards:
  - Mesh Auto-Backup: scheduled snapshots with configurable targets
  - Test Cloning: clone config from any peer with auto-sync option
  - Gitea History: connect to Gitea for version control and commit feed
- Add backup history modal with restore/delete actions
- Add Gitea configuration modal with server/repo/token settings
- Add formatTime helper for relative timestamps
- Add comprehensive CSS for backup panel, gitea commits, history modal

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:01:01 +01:00
28dc602cda feat(p2p): Add self-peer testing and gigogne distribution mode
- Add self-peer for local mesh testing without remote nodes
- Add gigogne (nested matryoshka) distribution mode with configurable depth
- Add distribution mode selector: gigogne, mono, ring, full-mesh
- Add visual indicators for self/gigogne peers on globe and peers panel
- Add test mode badge and clear test button
- Add rebuildGigogneStructure for dynamic mode switching
- Update CSS with gigogne/self peer styles and animations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:55:21 +01:00
afd761a239 feat(p2p): Add master deployment, DNS bridge, and WireGuard mirror
- Add renderServiceItemWithDeploy() for services with mesh deployment status
- Add deployment action handlers: deployAllRegistry, deployRegistryEntry,
  deployAllServices, deployLocalServices, pullAllServices, deployService, pullService
- Add deployment modals: showDeployRegistryModal, showDeployServicesModal
- Add DNS Bridge with load balancing strategies (round-robin, weighted, geo, latency)
- Add Onion Relay integration for privacy/fallback routing
- Add WireGuard Mirror inverse system with modes (active-passive, active-active, ring, full-mesh)
- Add showDNSBridgeModal and showWGMirrorModal configuration dialogs
- Add new API functions for deployment, DNS bridge, and WG mirror
- Add comprehensive CSS styles for deploy banners, mesh status dots, modal styles

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:46:47 +01:00
4ab61b96e0 feat(p2p): Add globe visualization with peer map
- Animated 3D globe with CSS transformations
- Peer nodes positioned around globe with depth sorting
- Master node at center with pulse animation
- Connection lines between master and peers
- Stars background with twinkle animation
- Health indicators with emoji status (💚💛❤️)
- Quick stats (Peers, Online, Services, Registry)
- Quick actions (Discover, Sync All, Add Peer)
- Responsive layout for mobile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:11:43 +01:00
417afe8017 feat(p2p): Add complete Hub Registry and Services Registry panels
- Hub Registry Panel with:
  - Short URL table with copy, status, hits
  - MaaS toggles (enabled, auto-register, cache)
  - DNS config modal with zone preview
  - Register URL, Sync Peers, Flush Cache actions

- Services Registry Panel with:
  - Service type legend with color coding
  - Local services / Network services columns
  - Service sharing toggles
  - Register Service, Subscribe, Export actions

- Extensible panel grid layout
- Service type categorization (dns, vpn, ids, proxy, firewall, etc.)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 10:53:05 +01:00
ef914b0b9f feat(p2p): Add SecuBox P2P Hub packages and Services Registry
- Add secubox-p2p backend package:
  - UCI configuration for P2P settings, DNS federation, WireGuard mesh, HAProxy
  - RPCD handler for peer management, service discovery, mesh configuration
  - Init script and main P2P manager daemon

- Add luci-app-secubox-p2p frontend package:
  - Main hub view with master control, network matrix visualization
  - Peers management with discovery and manual add
  - Services view showing local and shared services
  - Mesh network configuration (DNS, WireGuard, HAProxy)
  - Settings for P2P and registry configuration

- Add Services Registry view to luci-app-secubox
- Add listProfiles/applyProfile to secubox-admin API
- Fix P2P ACL permissions
- Remove old hub.js from luci-app-secubox (moved to dedicated package)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 10:46:50 +01:00
8be28001d7 fix(crowdsec-dashboard): Add UCI ubus permissions to ACL
Add ubus uci method permissions:
- Read: get, state, configs
- Write: set, add, delete, rename, order, commit, apply, confirm, rollback

Fixes "Permission denied" error when saving theme settings.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:39:27 +01:00
ab44a306f3 feat(secubox): Add P2P Hub backend and fix theme module
- Add P2P Hub RPCD methods for collaborative catalog sharing:
  - p2p_get_peers, p2p_discover, p2p_add_peer, p2p_remove_peer
  - p2p_get_peer_catalog, p2p_share_catalog
  - p2p_get_settings, p2p_set_settings
- Fix crowdsec-dashboard theme.js to use baseclass.extend()
  instead of baseclass.singleton() for LuCI compatibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:34:14 +01:00
b35b86684e fix(crowdsec-dashboard): Use baseclass.singleton for theme manager
Fix "not a constructor" error by using baseclass.singleton()
pattern instead of baseclass.extend() with manual instantiation.
Theme module now exports a singleton directly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:30:54 +01:00
2d15c641f1 feat(secubox): Add P2P Hub API and wizard-first menu
- Make Setup Wizard the first menu item in SecuBox (order 5)
- Add P2P Hub collaborative catalog API methods:
  - Peer discovery and management
  - Catalog sharing between SecuBox instances
  - Settings for P2P sharing preferences
- Fix crowdsec-dashboard theme.js to return class instead of instance
- Update views to properly instantiate theme class

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:27:56 +01:00
19e8a67acd feat(crowdsec-dashboard): Add extensible theming system
Add theme manager with selectable themes and profiles:
- classic: Professional SOC-style dark theme (default)
- cards: Modern card-based UI with gradients
- cyberpunk: Neon glow effects with terminal aesthetics

Profiles extend themes with custom options:
- default, soc, modern, hacker

Theme selection available in Settings > Appearance with live preview.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:16:50 +01:00
e887785311 fix(crowdsec-dashboard): Move menu to SecuBox security section
Move CrowdSec dashboard from admin/services/crowdsec to
admin/secubox/security/crowdsec to integrate with SecuBox menu structure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:11:40 +01:00
fda106c0e0 fix(core): Fix module detection, health check, quick actions, and HAProxy status
- Fix jshn boolean handling in secubox-core (use 1/0 instead of true/false)
- Fix BusyBox-compatible package cache generation (grep instead of awk)
- Add quick_action RPCD method for dashboard quick actions
- Enhance health check with module status (total, installed, enabled, active, failed)
- Add resource details to health check output
- Fix HAProxy container detection without lxc-info (fallback to pgrep)
- Rebuild secubox-feed packages with fixes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 07:55:31 +01:00
98a98c888d feat(bonus): Add 'secubox-feed install all' command
Installs all packages from the local feed in dependency order:
1. secubox-core and secubox-app (base)
2. secubox-app-* backend packages
3. luci-app-* frontend packages
4. luci-theme-* themes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 06:43:57 +01:00
c00d468617 fix(bonus): Fix secubox-app-bonus build and opkg feed installation
- Fix recursive inclusion bug where secubox-app-bonus was including itself
  causing 1GB package size (now 7.5MB with 73 packages)
- Fix Packages index generation to strip Source/SourceName/SourceDateEpoch/URL
  fields that caused opkg parsing issues
- Add rebuild_bonus_package() to local-build.sh for proper feed embedding
- Update secubox-feed install command to handle local dependencies from files
  (workaround for opkg signature bug with file:// URLs)
- Clean up libc dependency stripping in Packages generation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 06:39:31 +01:00
7066c9dd85 fix(deps): Remove ALL dependencies from secubox-core and luci-app-secubox-admin
Even rpcd, bash, jsonfilter, jq depend on libc themselves. Since these
packages are always present on a working OpenWrt/SecuBox system, we should
not declare any dependencies at all.

- secubox-core 0.10.0-r9: DEPENDS:= (empty)
- luci-app-secubox-admin 1.0.0-r19: LUCI_DEPENDS:= (empty)

This prevents opkg from trying to resolve any feed packages and their
cascading libc dependencies.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 05:06:34 +01:00
92a82967bb fix(deps): Remove libubox/libubus/libuci from all SecuBox package dependencies
These base OpenWrt libraries are always present on the system but their
versions in the SDK-built feed don't match the router's installed versions,
causing opkg to fail with "Cannot satisfy dependencies" errors.

Fixed packages (18 total):
- secubox-core: removed libubox, libubus, libuci
- luci-app-ksm-manager: removed libubus, libubox
- luci-app-mqtt-bridge: removed libuci
- secubox-app-adguardhome: removed uci, libuci
- secubox-app-auth-logger: removed libubox-lua
- secubox-app-domoticz: removed uci, libuci
- secubox-app-gitea: removed uci, libuci
- secubox-app-glances: removed uci, libuci
- secubox-app-hexojs: removed uci, libuci
- secubox-app-lyrion: removed uci, libuci
- secubox-app-magicmirror2: removed uci, libuci
- secubox-app-mailinabox: removed uci, libuci
- secubox-app-mitmproxy: removed uci, libuci
- secubox-app-nextcloud: removed uci, libuci
- secubox-app-ollama: removed uci, libuci
- secubox-app-picobrew: removed uci, libuci
- secubox-app-streamlit: removed uci, libuci
- secubox-app-zigbee2mqtt: removed uci, libuci

The packages still work because these libs are implicitly available.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 19:49:27 +01:00
430e42cec9 fix(deps): Add PKG_FLAGS:=nonshared to prevent automatic libc dependency
The OpenWrt SDK automatically adds libc as a dependency to all packages,
even pure shell/JavaScript packages that don't need it. This causes
opkg installation failures when the local feed version of libc doesn't
match the router's installed version.

Solution: Add PKG_FLAGS:=nonshared to Makefiles of arch-independent
packages (secubox-core, luci-app-secubox-admin, secubox-app-bonus).
This tells the build system these packages don't link against libc.

Changes:
- secubox-core: 0.10.0-r6 → r7 with PKG_FLAGS:=nonshared
- luci-app-secubox-admin: 1.0.0-r17 → r18 with PKG_FLAGS:=nonshared
- secubox-app-bonus: 0.3.0-r1 → r2 with PKG_FLAGS:=nonshared
- Regenerated Packages index without libc dependencies

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 18:08:01 +01:00
066bedafef feat(appstore): Implement KISS Evolution - feeds, profiles, skills, feedback
Add four major features to enhance SecuBox AppStore:

1. Feed Source Management:
   - Feed types: published, unpublished, development
   - Share tokens for private feed access
   - CLI: secubox feed list/add/share/import
   - LuCI: Feed type badges and share URLs in catalog-sources

2. Profile Export/Import:
   - Export configurations with feed sources embedded
   - Import from URL or file with merge/replace modes
   - CLI: secubox profile export/import/share
   - LuCI: New profiles.js view with export/import dialogs

3. Skill System:
   - Capability discovery from module catalogs
   - Quality indicators based on provider count
   - CLI: secubox skill list/providers/install/check
   - LuCI: New skills.js view with provider browser

4. Feedback Loop:
   - Issue reporting and resolution tracking
   - Search existing resolutions
   - CLI: secubox feedback report/resolve/search/list
   - LuCI: New feedback.js view for knowledge base

Technical changes:
- RPCD backend with 17 new API methods
- POSIX shell compatibility fixes (ESC via printf, tr A-Z a-z)
- LuCI menu entries for new views

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 10:13:54 +01:00
06faaabc19 refactor(bonus): Rename luci-app-secubox-bonus to secubox-app-bonus
- Remove all LuCI dependencies (luci-base, rpcd, luci-lib-jsonc)
- Remove LuCI-specific files (RPCD backend, ACL, menu, JS views)
- Package now only provides local opkg feed and documentation
- Remove Packages.sig to avoid signature verification errors
- Update local-build.sh to skip signature generation for local feeds

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:21:19 +01:00
26b1f476f8 fix(bonus): Strip libc dependency from local feed packages
- Update local-build.sh to remove libc from Packages index
- Prevents opkg architecture mismatch errors on install
- Regenerate secubox-feed with 74 packages
- Update RPCD scripts for lyrion, mailinabox, metablogizer, nextcloud

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 06:32:00 +01:00
3cff626582 refactor(menu): Move WireGuard to Services menu
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 18:05:42 +01:00
413ebb45a0 fix(mitmproxy,tor-shield): Add transparent mode firewall support
- Add RPCD methods to mitmproxy: settings, save_settings, set_mode,
  setup_firewall, clear_firewall
- Add apply_now parameter to tor-shield save_settings to restart
  service and apply iptables rules immediately
- Update ACL files with new permissions
- Add Save & Apply button to tor-shield settings page
- Update api.js files to use correct RPCD method signatures

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 17:58:53 +01:00
8207c05376 fix(service-registry): Disable slow direct services aggregation by default
The direct services provider was calling jsonfilter in a loop for each
listening port (~40 ports), causing XHR timeouts in the UI.

Changes:
- Disable direct provider by default (set enabled=0)
- Add limit of 20 services if enabled
- Skip common system ports (22, 53, 67, 68, 123, 547, 953)
- Add note about enabling via UCI if needed

The real services come from HAProxy vhosts and UCI published services.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 16:37:02 +01:00
d2e7836ab7 fix(lyrion): Fix LXC container startup and user permissions
- Run Lyrion as nobody (uid 65534) via LXC init.uid/gid settings
- Use cgroup2 memory limit format (lxc.cgroup2.memory.max)
- Convert memory limit string (1G, 256M) to bytes for cgroup2
- Skip opkg install if LXC binaries already exist
- Set proper file ownership during rootfs creation
- Remove su command from start.sh (handled by LXC config)

Fixes the container crash loop caused by Lyrion refusing to run as root.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 16:23:03 +01:00
2d861656ed refactor(menu): Move Network Diagnostics to Services menu
- Network Diagnostics: admin/secubox/netdiag -> admin/services/network-diagnostics

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:41:34 +01:00
37c8e37e6a refactor(menu): Move CrowdSec and Threat Monitor to Services menu
- CrowdSec: admin/secubox/security/crowdsec -> admin/services/crowdsec
- Threat Monitor: admin/secubox/security/threats -> admin/services/threat-monitor

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:31:13 +01:00
06a70c2968 fix(tor-shield,security-threats): Preset persistence and firewall stats
Tor Shield:
- Store current_preset in UCI when enabling with preset
- Return current_preset in status response
- Initialize currentPreset from stored UCI value on page load

Security Threats:
- Fix get_security_stats() firewall packet counting
- Use correct nftables chain names (input_wan, handle_reject)
- Fix grep -c exit code issue (returns 1 when no matches)
- Improve numeric validation (use tr -cd to strip non-digits)
- Add fallbacks for HAProxy socket paths

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:29:24 +01:00
89073b96cf feat(tor-shield): Add exit node hostname (reverse DNS) to dashboard
- refresh_ips now fetches reverse DNS for exit IP
- Status includes exit_hostname from cache
- Dashboard displays hostname below exit IP
- get_exit_ip also returns hostname

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:18:38 +01:00
52e9fbd866 fix(tor-shield): Fix RPC expect declarations breaking API calls
The expect: { success: false } was causing LuCI RPC to return false
instead of the actual response. Changed all expect declarations to
empty objects to get raw API responses.

Also improved error messages to show actual response for debugging.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:15:06 +01:00
39d29e8308 fix(tor-shield): Preset selection now immediately activates preset
- Clicking a preset card now enables/restarts Tor with that preset
- Previously it only selected the preset for next toggle
- Added better error handling for toggle and preset changes
- Page reloads after successful preset change

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:12:46 +01:00
e44f801f36 fix(tor-shield): Fix toggle using stale status, fetch fresh before action
The toggle handler was receiving status captured at render time which
could be stale due to polling. Now fetches fresh status before deciding
to enable or disable, and does a full page reload after action.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 14:57:17 +01:00
98fafccf05 fix(network-tweaks): Count HAProxy vhosts, LXC, firewall ports in cumulative impact
The cumulative impact summary was showing zeros because it only checked
the plugins catalog. Now also counts:
- HAProxy vhosts directly from UCI
- Running LXC containers
- Running Docker containers
- Firewall WAN ACCEPT rules with ports
- DNSmasq entries

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 14:31:52 +01:00
ef3e26561d fix: Button clickability, AdGuard ports, Tor Shield links
- Fix disabled buttons in Network Tweaks using conditional rendering
- Change AdGuard Home ports to avoid conflicts (web: 3003, dns: 5353)
- Add DNS & Proxy link from Tor Shield to Network Tweaks

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 14:20:57 +01:00
25dcee0f4f feat(tor-shield): Add prominent master protection switch
- Add always-visible toggle switch at top of dashboard
- Clear visual indication: green when protected, red when exposed
- Shows protection status text and toggle switch
- Easier one-click enable/disable of Tor protection

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 14:16:56 +01:00
4254919dd7 feat(network-tweaks): Add AdGuard Home DNS control
- Add AdGuard Home status card with enable/disable and Open UI button
- Add setAdGuardEnabled RPCD method for Docker container control
- Rename section to "DNS & Proxy Services"
- Responsive grid layout for 3 service cards

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 14:15:10 +01:00
dc4ec3f102 feat(network-tweaks): Add CDN cache and WPAD proxy controls
- Add CDN cache status card with enable/disable and restart buttons
- Add WPAD auto-proxy card with enable/disable toggle
- Add getProxyStatus, getWpadStatus, setWpadEnabled RPCD methods
- Move menu to Services section
- Update ACL for CDN cache and WPAD control

Also fixes:
- security-threats: Fix HAProxy socket path for connection stats
- tor-shield: Add missing ACL methods for excluded destinations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 14:07:38 +01:00
aa5b8097c5 docs(cdn-cache): Comprehensive README with API and troubleshooting
- Full RPCD API documentation with all methods
- UCI configuration examples
- Client setup instructions (manual proxy and transparent mode)
- Nginx cache configuration details
- Troubleshooting guide
- Default cache policies table

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 13:44:23 +01:00
ad8d25256d feat(tor-shield): Add excluded destinations for direct/CDN access
- Add get_excluded_destinations() method to list bypassed destinations
- Add add_excluded_destination() to exclude IPs/CIDRs/domains from Tor
- Add remove_excluded_destination() to remove exclusions
- Add apply_exclusions() to restart tor-shield with new rules
- Domain resolution attempts to get IP for iptables compatibility
- Existing private network CIDRs (192.168/10/172.16/127) are default excluded

Also includes metablogizer fixes:
- reload_haproxy() helper function
- Server address uses 127.0.0.1 for uhttpd backends
- fix_permissions() on file uploads

PKG_RELEASE: tor-shield=3, metablogizer=3

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 13:41:07 +01:00