Commit Graph

1444 Commits

Author SHA1 Message Date
c739104bca feat: add local build tool that replicates GitHub Actions workflows
- Add local-build.sh: comprehensive local build system
  - Validates packages (Makefiles, JSON, JavaScript, shell scripts)
  - Downloads and caches OpenWrt SDK
  - Builds .ipk packages locally
  - Supports multiple architectures (x86-64, ARM, MIPS)
  - Collects artifacts with SHA256 checksums

- Update CLAUDE.md with local build documentation
  - Add Local Build section with usage examples
  - Update Development Workflow to include local testing
  - List supported architectures and environment variables

- Update secubox-tools/README.md
  - Add comprehensive local-build.sh documentation
  - Update workflow examples to include local building
  - Add dependencies and installation instructions

Benefits:
- Test builds locally before CI/CD
- Faster development iteration
- Reduced GitHub Actions usage
- Offline development support

Usage:
  ./secubox-tools/local-build.sh validate
  ./secubox-tools/local-build.sh build
  ./secubox-tools/local-build.sh build luci-app-<name>
  ./secubox-tools/local-build.sh build --arch <arch>
  ./secubox-tools/local-build.sh full

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 11:37:26 +01:00
34fe2dc26a feat: complete System Hub implementation - central control dashboard
Implements comprehensive system control and monitoring dashboard with health
metrics, service management, system logs, and backup/restore functionality.

Features:
- Real-time system monitoring with visual gauges (CPU, RAM, Disk)
- Comprehensive system information (hostname, model, uptime, kernel)
- Health metrics with temperature monitoring and storage breakdown
- Service management with start/stop/restart/enable/disable actions
- System log viewer with filtering and configurable line count
- Configuration backup creation and download (base64 encoded)
- Configuration restore from backup file
- System reboot functionality with confirmation

Components:
- RPCD backend (luci.system-hub): 10 ubus methods
  * status, get_system_info, get_health
  * list_services, service_action
  * get_logs, backup_config, restore_config
  * reboot, get_storage
- 4 JavaScript views: overview, services, logs, backup
- ACL with read/write permissions segregation
- Comprehensive README with API documentation

Technical implementation:
- System info from /proc filesystem and sysinfo
- Health metrics: CPU load, memory breakdown, disk usage, temperature
- Service control via /etc/init.d scripts
- Log retrieval via logread with filtering
- Backup/restore using sysupgrade with base64 encoding
- Visual gauges with SVG circular progress indicators
- Color-coded health status (green/orange/red)

Dashboard Features:
- Circular gauges for CPU, Memory, Disk (120px with 10px stroke)
- System information cards with detailed metrics
- Temperature monitoring with thermal zone detection
- Storage table for all mount points with progress bars
- Service table with inline action buttons
- Terminal-style log display (black bg, green text)
- File upload for backup restore
- Modal confirmations for destructive actions

Architecture follows SecuBox standards:
- RPCD naming convention (luci. prefix)
- Menu paths match view file structure
- All JavaScript in strict mode
- Form-based configuration management
- Comprehensive error handling

Dependencies: coreutils, coreutils-base64

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 11:02:07 +01:00
fa9bb2aee7 feat: complete Bandwidth Manager implementation with QoS and quotas
Implements comprehensive bandwidth management system with QoS traffic shaping,
client quotas, and SQM/CAKE integration for OpenWrt.

Features:
- QoS traffic shaping with rule-based control (application/port/IP/MAC)
- Per-rule download/upload limits with 8-level priority system
- Time-based scheduling support for rules
- Monthly data quotas per client (MAC address)
- iptables-based usage tracking with real-time statistics
- Configurable quota actions: throttle, block, or notify
- Automatic monthly reset with configurable reset day
- SQM/CAKE integration with NAT-aware configuration
- Link overhead compensation (Ethernet, PPPoE, VLAN)
- Alternative FQ_CoDel and HTB qdisc support

Components:
- RPCD backend (luci.bandwidth-manager): 10 ubus methods
  * status, list_rules, add_rule, delete_rule
  * list_quotas, get_quota, set_quota, reset_quota
  * get_usage_realtime, get_usage_history
- 5 JavaScript views: overview, rules, quotas, usage, settings
- ACL with read/write permissions for all methods
- UCI config with global, SQM, tracking, alerts, rules, and quotas sections
- Comprehensive README with API docs and examples

Technical implementation:
- Traffic tracking via iptables BW_TRACKING chain
- Usage database in /tmp/bandwidth_usage.db (pipe-delimited format)
- Real-time client usage with 5-second auto-refresh
- Historical data with configurable timeframes (1h to 30d)
- Per-client quota progress visualization with color-coded bars
- TC (traffic control) integration for QoS enforcement

Architecture follows SecuBox standards:
- RPCD naming convention (luci. prefix)
- Menu paths match view file structure
- All JavaScript in strict mode
- Form-based configuration management
- Comprehensive error handling

Dependencies: tc, kmod-sched-core, kmod-sched-cake, kmod-ifb, sqm-scripts,
iptables, iptables-mod-conntrack-extra, ip-full

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 10:48:51 +01:00
77d40a1f89 feat: implement VHost Manager - nginx reverse proxy and SSL management
Implements a comprehensive virtual host management system for OpenWrt with
nginx reverse proxy and Let's Encrypt SSL certificate integration.

Features:
- Virtual host management with nginx reverse proxy configuration
- Backend connectivity testing before deployment
- SSL/TLS certificate provisioning via acme.sh and Let's Encrypt
- Certificate expiry monitoring with color-coded warnings
- HTTP Basic Authentication support
- WebSocket protocol support with upgrade headers
- Real-time nginx access log viewer per domain
- Automatic nginx configuration generation and reload

Components:
- RPCD backend (luci.vhost-manager): 11 ubus methods for vhost and cert management
  * status, list_vhosts, get_vhost, add_vhost, update_vhost, delete_vhost
  * test_backend, request_cert, list_certs, reload_nginx, get_access_logs
- 4 JavaScript views: overview, vhosts, certificates, logs
- ACL with read/write permissions for all ubus methods
- UCI config with global settings and vhost sections
- Comprehensive README with API docs, examples, and troubleshooting

Configuration:
- Nginx vhost configs generated in /etc/nginx/conf.d/vhosts/
- SSL certificates managed via ACME in /etc/acme/{domain}/
- Access logs per domain: /var/log/nginx/{domain}.access.log
- HTTP Basic Auth htpasswd files in /etc/nginx/htpasswd/

Architecture follows SecuBox standards:
- RPCD naming convention (luci. prefix)
- Menu paths match view file structure
- All JavaScript in strict mode
- Backend connectivity validation
- Comprehensive error handling

Dependencies: nginx-ssl, acme, curl

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 10:37:01 +01:00
6200167434 feat: implement Media Flow streaming detection and monitoring module
Complete implementation of Media Flow module for real-time detection and
monitoring of streaming services with quality estimation and alerts.

Features:
---------

1. Streaming Service Detection
   - Video: Netflix, YouTube, Disney+, Prime Video, Twitch, HBO, Hulu, Vimeo
   - Audio: Spotify, Apple Music, Deezer, SoundCloud, Tidal, Pandora
   - Visio: Zoom, Teams, Google Meet, Discord, Skype, WebEx

2. Quality Estimation
   - SD (< 1 Mbps), HD (1-3 Mbps), FHD (3-8 Mbps), 4K (> 8 Mbps)
   - Based on real-time bandwidth analysis

3. Real-time Monitoring
   - Active streams dashboard with 5-second auto-refresh
   - Bandwidth consumption per stream
   - Client IP tracking
   - Service categorization (video/audio/visio)

4. Historical Data
   - Session history with timestamps
   - Usage statistics per service
   - Usage statistics per client
   - Configurable retention (last 1000 entries)

5. Configurable Alerts
   - Service-specific usage thresholds
   - Actions: notify, limit, block
   - UCI-based alert configuration

RPCD Backend:
-------------

Script: root/usr/libexec/rpcd/luci.media-flow

Methods implemented:
- status: Module status and netifyd integration check
- get_active_streams: Currently active streaming sessions
- get_stream_history: Historical sessions (configurable timeframe)
- get_stats_by_service: Aggregated stats per service
- get_stats_by_client: Aggregated stats per client IP
- get_service_details: Detailed info for specific service
- set_alert: Configure usage alerts
- list_alerts: List all configured alerts

Integration with netifyd DPI for application detection.

Views:
------

1. dashboard.js - Main overview with active streams and service stats
2. services.js - Detailed per-service statistics and details modal
3. clients.js - Per-client streaming activity
4. history.js - Chronological session list with filters
5. alerts.js - Alert configuration interface

All views follow naming conventions:
- Menu paths match view file locations (media-flow/*)
- RPC object: 'luci.media-flow' matches RPCD script name
- All views use 'use strict'
- All RPC methods exist in RPCD implementation

Files Structure:
----------------

✓ Makefile: Complete with all required fields
✓ RPCD: luci.media-flow (matches ubus object)
✓ ACL: All 8 RPCD methods covered (read/write separated)
✓ Menu: 5 views with correct paths
✓ Views: All menu paths have corresponding .js files
✓ UCI Config: media_flow with global settings and alerts
✓ README: Complete documentation with API reference

Validation:
-----------

✓ RPCD script name matches ubus object (luci.media-flow)
✓ Menu paths match view file locations
✓ ACL permissions cover all RPCD methods
✓ RPCD script is executable
✓ JSON files have valid syntax
✓ All views use strict mode
✓ RPC method calls match RPCD implementations

Dependencies:
-------------

- netifyd: Deep Packet Inspection for application detection
- luci-app-netifyd-dashboard: Integration with Netifyd dashboard
- jq: JSON processing for historical data aggregation

Usage:
------

# View status
ubus call luci.media-flow status

# Get active streaming sessions
ubus call luci.media-flow get_active_streams

# Get 24h history
ubus call luci.media-flow get_stream_history '{"hours": 24}'

# Set alert for Netflix
ubus call luci.media-flow set_alert '{"service": "Netflix", "threshold_hours": 4, "action": "notify"}'

Data Storage:
-------------

- History: /tmp/media-flow-history.json (last 1000 entries)
- Stats: /tmp/media-flow-stats/ (aggregated data)
- Alerts: /etc/config/media_flow (UCI persistence)

All data stored locally, no external telemetry.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 10:20:28 +01:00
4caf3c14bd feat: add module generation validation and pre-push hooks
Comprehensive validation tooling for SecuBox module generation and git workflow.

New Tools:
-----------

1. validate-module-generation.sh
   - Deep validation of single module during/after generation
   - Checks 9 categories: Makefile, RPCD, ACL, Menu, JS Views, UCI, Permissions, Security, Docs
   - Validates RPCD naming (luci.* prefix) vs JavaScript ubus objects
   - Validates menu paths vs actual view file locations
   - Cross-checks RPC methods between JavaScript and RPCD
   - Security scans for hardcoded credentials and dangerous commands
   - Exit codes: 0=pass, 1=critical errors

2. pre-push-validation.sh
   - Git pre-push hook that blocks push if critical errors found
   - Validates all modules before allowing remote push
   - Detects modified modules and runs comprehensive checks
   - Prevents deployment of broken modules
   - Can be bypassed with --no-verify (not recommended)

3. install-git-hooks.sh
   - One-command installation of git hooks
   - Creates symlink from .git/hooks/pre-push to pre-push-validation.sh
   - Enables automatic validation before every push

Documentation:
--------------

4. VALIDATION-GUIDE.md
   - Complete guide to validation workflow
   - Critical naming convention rules with examples
   - Module generation checklist (5 phases)
   - Common validation errors and fixes
   - Best practices and troubleshooting
   - CI/CD integration examples

Updated:
--------

5. secubox-tools/README.md
   - Added descriptions for new validation tools
   - Added recommended workflows for module generation and modification
   - Organized tools into categories (Validation, Maintenance)

Key Validation Rules Enforced:
-------------------------------

✓ RPCD script name MUST match ubus object name (exact match with luci. prefix)
  Example: object: 'luci.cdn-cache' → file: luci.cdn-cache

✓ Menu paths MUST match view file locations (prevent HTTP 404)
  Example: "path": "cdn-cache/overview" → view/cdn-cache/overview.js

✓ All ubus objects MUST use luci.* prefix
   'luci.cdn-cache'  'cdn-cache'

✓ ACL permissions MUST cover all RPCD methods

✓ JavaScript RPC method calls MUST exist in RPCD implementation

✓ RPCD scripts MUST be executable (chmod +x)

✓ All JSON files MUST have valid syntax

✓ Security: No hardcoded credentials or dangerous commands

Benefits:
---------

- Prevents RPC errors (-32000: Object not found)
- Prevents HTTP 404 errors (view files not found)
- Catches naming mismatches before deployment
- Ensures ACL permissions are complete
- Enforces consistent naming conventions
- Blocks broken modules from being pushed
- Provides detailed error messages with fix suggestions

Usage:
------

# Validate new/modified module:
./secubox-tools/validate-module-generation.sh luci-app-cdn-cache

# Install git hooks (one-time):
./secubox-tools/install-git-hooks.sh

# After installation, validation runs automatically:
git push  # Pre-push validation blocks if errors found

# Manual pre-push validation:
./secubox-tools/pre-push-validation.sh

See VALIDATION-GUIDE.md for complete documentation and workflows.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 10:06:20 +01:00
92f3318729 feat: add comprehensive module validation tooling
Add validate-modules.sh script that validates critical naming conventions
and module structure to prevent common RPC and HTTP 404 errors.

New validation checks:
- RPCD script names must match ubus object names (luci.* prefix)
- Menu paths must match view file locations
- View files must have corresponding menu entries
- RPCD scripts must be executable
- JSON files must have valid syntax
- ubus objects must follow naming convention

Updated CLAUDE.md documentation with:
- Critical naming conventions section with examples
- Common error patterns and solutions
- Updated development workflow to include validation
- Enhanced troubleshooting guide for RPC and 404 errors
- Updated package structure diagram with correct RPCD naming

Added secubox-tools/README.md:
- Detailed usage instructions for validation script
- Common fixes for naming issues
- CI/CD integration examples
- Quick reference for critical naming rules

This tooling prevents deployment of modules with naming mismatches that
cause runtime errors like:
- RPC call failed with error -32000: Object not found
- HTTP error 404 while loading view files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 09:56:42 +01:00
16ad6d6a43 fix: rename all RPCD scripts to match ubus object names
All RPCD scripts must use the 'luci.' prefix to match their JavaScript
ubus object declarations. This fixes RPC errors like:
- "RPC call to luci.cdn-cache/status failed with error -32000: Object not found"

Renamed RPCD scripts:
- cdn-cache → luci.cdn-cache
- client-guardian → luci.client-guardian
- crowdsec → luci.crowdsec-dashboard
- netdata → luci.netdata-dashboard
- netifyd-dashboard → luci.netifyd-dashboard
- network-modes → luci.network-modes
- system-hub → luci.system-hub
- wireguard-dashboard → luci.wireguard-dashboard

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 09:51:45 +01:00
73e28cd806 fix: correct view paths in all dashboard module menus
Tous les modules dashboard pointaient vers des chemins incorrects:
- crowdsec/overview → crowdsec-dashboard/overview
- netdata/dashboard → netdata-dashboard/dashboard
- netifyd/overview → netifyd-dashboard/overview
- wireguard/overview → wireguard-dashboard/overview

Les fichiers JS sont dans {module}-dashboard/ mais les menus pointaient
vers {module}/, causant des erreurs HTTP 404.

Modules corrigés:
- luci-app-crowdsec-dashboard (5 vues)
- luci-app-netdata-dashboard (2 vues)
- luci-app-netifyd-dashboard (4 vues)
- luci-app-wireguard-dashboard (4 vues)

Fixes: NetworkError HTTP 404 pour tous les dashboards
2025-12-24 09:30:46 +01:00
f83203de60 fix: rename RPCD script to luci.secubox to match ubus object name
Le fichier RPCD 'secubox' a été renommé en 'luci.secubox' pour correspondre
au nom d'objet ubus utilisé par l'API JavaScript (object: 'luci.secubox').

Cela permet aux appels ubus comme 'ubus call luci.secubox get_dashboard_data'
de fonctionner correctement.

Fixes: Method not found error for all luci.secubox/* methods
2025-12-24 09:27:43 +01:00
4e23037a22 feat: implement network mode switcher with rollback protection
Implémente un switcher de mode réseau complet avec 4 modes:
- Router: NAT, DHCP server, firewall (default)
- Access Point: Bridge mode, no NAT, DHCP client
- Repeater: WiFi client + AP relay with optimizations
- Bridge: Pure L2 bridge, DHCP client

Nouvelles méthodes RPCD:
- get_current_mode: Détails du mode actif avec statut rollback
- get_available_modes: Liste des modes avec features
- set_mode: Préparer le changement de mode
- preview_changes: Prévisualiser les modifications
- apply_mode: Appliquer avec reconfiguration réseau complète
- confirm_mode: Confirmer et annuler le timer de rollback
- rollback: Restaurer la configuration précédente

Sécurité:
- Backup automatique avant changement
- Rollback automatique après 2 minutes sans confirmation
- Timer affiché en temps réel dans l'interface
- Restauration complète de network/wireless/firewall/dhcp

Vue wizard.js:
- Cards interactives pour chaque mode avec icônes
- Preview des changements avant application
- Progress bar et instructions post-switch
- Polling du timer de rollback
- Boutons de confirmation et rollback manuel

ACL mis à jour pour toutes les nouvelles méthodes.
2025-12-24 00:45:19 +01:00
5bd25d9b8e fix: improve feed update error handling and validation
Major improvements to feed management across all workflows:

1. **build-openwrt-packages.yml:**
   - Removed 'base' feed (not needed for SDK)
   - Added comprehensive error handling with retry logic
   - Verify feed directories exist after update
   - Fail fast if feeds don't update successfully
   - Log feed update/install output for debugging

2. **build-secubox-images.yml & test-validate.yml:**
   - Added feed verification after update/install
   - Capture logs for debugging feed issues
   - Exit with error if critical feeds missing
   - Show feed directory sizes for verification

Key changes:
- Feeds are now validated to exist before continuing
- Better error messages when feeds fail to update
- Logs captured for troubleshooting
- Workflow fails immediately if feeds missing

This should fix the 'find: feeds/packages: No such file or directory'
error by ensuring feeds are actually cloned successfully.
2025-12-24 00:37:12 +01:00
2432001fcd fix: improve firmware image collection and diagnostics
Enhanced the firmware build workflow with better diagnostics:

1. Added directory listing before artifact collection to show what was built
2. Changed collection strategy to copy all files from target dir (excluding
   metadata like .ipk, .manifest, .json, .buildinfo)
3. Added warnings when no firmware images are found
4. Added file listing after successful builds to verify output
5. Show file sizes during collection

This should help identify why firmware artifacts might be missing:
- Shows exactly what files were generated
- Provides clear warnings if target directory is empty
- Helps debug firmware build issues

The new approach copies all firmware image files regardless of extension,
which is more robust than pattern matching specific file types.
2025-12-24 00:23:02 +01:00
fde352369a docs: add LuCI menu structure section to secubox README
Added comprehensive documentation about the SecuBox menu hierarchy:
- Visual tree representation of the complete menu structure
- Explanation of category parent menus
- Troubleshooting guide for menu visibility issues

This helps users understand how modules are organized in LuCI
and how to resolve common menu-related issues.
2025-12-24 00:20:17 +01:00
dd1b848e19 fix: add category parent menus for SecuBox modules
Added missing category parent menu entries that other SecuBox modules
depend on:
- admin/secubox/security (Security & Monitoring)
- admin/secubox/network (Network Management)
- admin/secubox/system (System & Performance)

Without these parent menus, individual modules like crowdsec, network-modes,
and system-hub couldn't register their menu entries under admin/secubox/*/

This allows all SecuBox modules to appear in the LuCI menu hierarchy.

Fixes: luci-app-secubox menu structure
2025-12-24 00:19:15 +01:00
4401c66da9 fix: convert dashes to underscores in module ID detection
The RPCD backend was generating module IDs with dashes (network-modes,
client-guardian, etc.) but the UCI config uses underscores (network_modes,
client_guardian, etc.). This mismatch prevented modules from being loaded
and displayed in the dashboard.

Fixed by adding conversion of dashes to underscores when generating
module IDs from RPCD script names.

Fixes: luci-app-secubox/root/usr/libexec/rpcd/secubox:18
2025-12-24 00:15:12 +01:00
3cd072382a fix: also remove routing feed to prevent indexing errors
Extended the feed removal to also exclude the routing feed, which was
causing the same indexing error during make defconfig.

Now removing both telephony and routing feeds from feeds.conf.default
before updating feeds in all three workflows.

This ensures only base, packages, and luci feeds are used.
2025-12-23 22:53:35 +01:00
3aa8cbf27e fix: remove telephony feed BEFORE updating feeds
Moved telephony removal to occur BEFORE './scripts/feeds update' to prevent
the telephony feed from ever being cloned or indexed. The previous fix tried
to remove telephony after feeds were already updated, which was too late.

Key changes:
- Remove telephony from feeds.conf.default BEFORE feed updates
- Keep final cleanup before make defconfig as safety measure
- Applies to all three workflows

This should completely eliminate the 'Collecting package info: feeds/telephony'
error during make defconfig.
2025-12-23 22:50:13 +01:00
d562b64c49 fix: remove telephony feed from defconfig to prevent indexing errors
The telephony feed was causing 'Collecting package info' failures during
make defconfig. This fix removes the telephony feed directory and references
from feeds.conf.default before running defconfig in all workflows.

Fixes applied to:
- build-openwrt-packages.yml
- build-secubox-images.yml
- test-validate.yml
2025-12-23 22:19:29 +01:00
3c1aef6a39 fix: add contents write permission for release creation 2025-12-23 21:53:54 +01:00
a23cfb6dd1 sniffer mode 2025-12-23 21:10:33 +01:00
782675e5b3 enhence git action artifacts showing 2025-12-23 21:01:07 +01:00
1f6b5dc393 single ipk build capacity 2025-12-23 20:54:06 +01:00
eb72e12a72 crowdswc full 2025-12-23 20:38:36 +01:00
ff20666817 fix: hope modules refresh 2025-12-23 18:56:15 +01:00
b86a58887b fix: hope modules refresh 2025-12-23 18:55:22 +01:00
f08c14f1d7 fix: hope modules refresh 2025-12-23 18:53:18 +01:00
6971fda569 fix: improve artifact publishing and build diagnostics 2025-12-23 18:40:35 +01:00
60f2ffde67 fix: improve artifact publishing and build diagnostics 2025-12-23 18:29:51 +01:00
60d1637a5d github fix actions 2025-12-23 17:48:17 +01:00
f7c06d4d13 reset to v1 2025-12-23 09:32:28 +01:00
df74fade80 add claude instructions 2025-12-23 09:31:00 +01:00
2e1fd21d18 css ready 2025-12-23 09:16:28 +01:00
da6fab39d4 fix gitaction secubox luci 2025-12-23 08:56:08 +01:00
d020678c2f Mise à jour des références des submodules 2025-12-23 02:23:44 +01:00
c81788b9c3 fix: auto-repair all SecuBox modules 2025-12-23 01:30:26 +01:00
9bad706ec6 Initial commit: SecuBox v1.0.0 - fixed packages makefiles 2025-12-22 16:13:16 +01:00
ca90702f6f debug 2025-12-22 13:30:17 +01:00
ef240b650b Initial commit: SecuBox v1.0.0-try2 2025-12-22 10:43:52 +01:00
b05776c24a Initial commit: Add GitHub Action 2025-12-21 18:24:13 +01:00
da4c3c118f Initial commit: SecuBox v1.0.0 2025-12-21 13:45:08 +01:00
008a3a4c13 Initial commit: SecuBox v1.0.0 2025-12-21 10:04:25 +01:00
3df2cbf2f0 Initial commit: SecuBox v1.0.0 2025-12-21 09:57:05 +01:00
0981987c10 Initial commit: SecuBox v1.0.0 2025-12-21 09:46:33 +01:00