secubox-deb/packages
CyberMind 2744758b9e
Health banner: live panel (visitor-origin + live-hosts + cert-status) (#98)
* docs(spec): Health banner live panel design (ref #92)

Three public banner sections sharing one polling/CORS pipeline:
- VisitorOrigin: nft set seen_src + GeoLite2-ASN.mmdb, threshold-gated
  rollup, raw IPs discarded before persistence
- LiveHosts: HAProxy admin socket, 60 x 1-min ring buffer over req_tot
  deltas, hostname-heuristic frontend filter
- CertStatus: scan /etc/letsencrypt/live + cryptography parse, classify
  valid / expiring_soon / expiring_critical / expired

Each section fails independently; section hidden on enabled=false,
empty entries, or fetch error. All three endpoints are unauthenticated,
CORS-open, Cache-Control max-age=300.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(plan): Health banner live panel implementation plan (ref #92)

14-task TDD plan: tests scaffold -> config helpers -> three aggregators
(visitor-origin / live-hosts / cert-status) -> FastAPI lifespan wiring ->
nftables ruleset -> geoipupdate timer -> debian packaging -> banner v1.3.0
-> README + tracking docs -> full-suite verification + PR.

Also reconciles spec with codebase conventions: service user is 'secubox'
(not 'secubox-metrics'); config lives in /etc/secubox/secubox.conf, not a
separate metrics.toml.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(metrics): Scaffold pytest layout for new aggregators (ref #92)

Adds tests/__init__.py and conftest.py that wire packages/secubox-metrics/api
and the repo-wide common/ onto sys.path so individual aggregator modules can
be imported in isolation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(core): Add visitor_origin / live_hosts / cert_status config helpers (ref #92)

Three new section helpers in secubox_core.config that merge defaults with
operator-supplied TOML overrides. Each section defaults to enabled=false so
the live-panel aggregators stay quiet on systems that haven't opted in.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(metrics): Use tmp_path fixture + drop unused import (ref #92)

Switches the config-helper tests from a hard-coded /tmp path to pytest's
tmp_path fixture, matching the pattern in packages/secubox-haproxy/tests/.
Removes the now-unused 'from unittest.mock import patch' line.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): VisitorOrigin aggregator (ref #92)

Pure-Python aggregator that polls the nft seen_src set, resolves ASNs via
GeoLite2 mmdb, and emits a threshold-gated top-N rollup. Private/loopback IPs
are skipped at lookup time; raw IPs never leave the function scope; the
threshold gate runs before persistence so the cache file never contains
attributable counts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(metrics): VisitorOrigin code-review followups (ref #92)

- mmdb auto-reopen on mtime change (Important): close + reopen when stat
  reports a different mtime; previously _mmdb_mtime was dead state.
- _read_nft_set defensive parse (Important): guard against {elem: str} shapes
  to prevent a latent TypeError.
- current() returns a defensive copy (Minor): no more by-reference leak of
  internal state.
- Drop unused ip_address import and unused monkeypatch parameter (Minor).
- Tighten tiebreak test to assert ASN order, not just count order (Minor).
- Add test for mtime-based reopen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(metrics): Pin VisitorOrigin error-path behaviour (ref #92)

Regression tests for refresh_once: disabled config, missing mmdb, and nft
subprocess failure must all yield a non-throwing degraded payload.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): LiveHosts aggregator with 60x1-min ring buffer (ref #92)

Reads HAProxy admin socket via raw AF_UNIX, parses 'show stat' CSV, filters
internal frontends (leading underscore or no dot), ring-buffers per-frontend
deltas over 60 minutes, and emits a top-N hostname rollup. Counter-reset
detection (cur < prev) yields a fresh-baseline bucket instead of a negative
delta. current() returns a defensive copy mirroring the VisitorOrigin fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(metrics): Pin LiveHosts CSV parser + missing-socket paths (ref #92)

Tests the show-stat CSV parser against the real HAProxy column order and
asserts that an absent admin socket returns a degraded payload rather than
raising.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): CertStatus aggregator (ref #92)

Scans /etc/letsencrypt/live for cert.pem files, classifies each by days
remaining (valid / expiring_soon / expiring_critical / expired) using the
operator's warn_days/critical_days thresholds, and emits a summary + soonest
next-renewal host. A single corrupt PEM never kills the scan. Days remaining
computed with math.ceil so a cert expiring in 2.99d reports 3d, consistent
with certbot/renewal tooling expectations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(metrics): correct expired boundary when using math.ceil (ref #92)

math.ceil maps any cert that expired within the last 24 h to days=0,
which the previous `days < 0` guard treated as expiring_critical instead
of expired. Changing the guard to `days <= 0` closes the gap: with ceil,
days=0 means actual remaining time is in (-86400, 0] — i.e. already
past or exactly at expiry — so classifying it as expired is correct.
All four existing tests continue to pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(metrics): Wire three live-panel aggregators into FastAPI lifespan (ref #92)

Adds the three asyncio background tasks under a single lifespan and exposes
their current() payloads on /api/v1/metrics/{visitor-origin,live-hosts,cert-status}
with a 5-min Cache-Control. Endpoints stay unauthenticated by design — the
aggregators only emit threshold-gated, hostname-only data.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(metrics): Await cancelled lifespan tasks + tidy import order (ref #92)

- Important: lifespan finally now awaits gather(*tasks, return_exceptions=True)
  after cancel(), so blocking subprocess/socket I/O in aggregator refreshes
  doesn't race uvicorn's shutdown timeout.
- Minor: move 'from contextlib import asynccontextmanager' into the stdlib
  import group at the top of the file.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): Ship nftables ingress tap for visitor-origin (ref #92)

Private inet secubox_metrics table with a timeout'd src-IP set, hooked from
prerouting at priority -300 so additions happen before secubox-firewall's
filter chain decides whether to drop the packet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(metrics): Weekly GeoLite2 ASN refresh timer (ref #92)

Conditional on /etc/secubox/secrets/maxmind.conf existing, so the unit is a
silent no-op on installs that haven't supplied a license key. RandomizedDelay
spreads load when many boxes deploy together.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* build(metrics): Package live-panel deps, nft ruleset, and geoipupdate timer (ref #92)

- control: add python3-maxminddb, python3-cryptography, geoipupdate, nftables
- rules: install nftables/ and systemd/ assets
- postinst: secubox -> haproxy group, cache + secrets + GeoIP dirs,
            nftables reload, timer enable
- service: ReadWritePaths gains /var/cache/secubox

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(metrics): Run geoipupdate as secubox + restart svc on upgrade (ref #92)

- secubox-geoipupdate.service: User/Group=secubox so .mmdb files inherit the
  ownership the metrics service expects when reading them. Previously the
  unit ran as root and created root-owned files that secubox-metrics could
  not open.
- postinst: switch 'systemctl start' to 'systemctl restart' so the secubox
  user's new haproxy-group membership is picked up by an already-running
  service after an upgrade.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(banner): v1.3.0 live panel — visitor origin, live hosts, cert status (ref #92)

Three independent fetch loops on a shared 30s cadence, three DOM sections,
per-section hide on enabled=false / empty / fetch error. Uses existing
design tokens (gold/cyan/matrix-green) so no new CSS variables are added.
A failing section never affects the others.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(banner): Correct banner element id lookup in live-panel (ref #92)

The new live-panel sectionContainer() helper looked up
getElementById('sbx-health-banner'), but the actual banner element is
created with id='health-banner'. The mismatch made banner null, so the
three live-panel sections were silently never appended to the DOM.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: Session 160 — Health Banner Live Panel (ref #92)

README documents the three new endpoints + config blocks. HISTORY / WIP /
MIGRATION-MAP entries describe the feature, the spec/plan paths, and the
session's outcome.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(metrics): Address whole-branch review findings (ref #92)

- Wrap _read_nft_set / _read_haproxy_stats in asyncio.to_thread so blocking
  I/O (subprocess up to 5s, AF_UNIX recv up to 2s) no longer stalls the
  event loop on every refresh tick.
- Replace falsy current() guard with explicit _refreshed flag. Previously,
  a successful refresh that produced entries=[] would fall through to the
  on-disk cache, serving stale non-empty data during low-traffic periods.
- Move geoipupdate from Depends to Recommends. It lives in bookworm/contrib,
  so a hard dependency breaks 'apt install secubox-metrics' on systems
  without contrib enabled. The aggregator already degrades gracefully when
  the mmdb is absent, making Recommends the correct strength. README
  documents the contrib note.
- prerm stops + disables secubox-geoipupdate.timer/service so 'apt remove'
  doesn't leave an orphan timer firing weekly with a missing unit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: CyberMind-FR <gandalf@Gk2.net>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 16:27:56 +02:00
..
secubox-ad-guard feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-admin feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-ai-gateway feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-ai-insights feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-auth feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-avatar feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-backup feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-c3box feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-cdn feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-cloner feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-config-advisor feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-console feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-cookies feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-core feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-crowdsec feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-cve-triage feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-cyberfeed feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-daemon/debian feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-defaults WebUI Obfuscation - admin.HOSTNAME.secubox.in Only (#96) 2026-05-12 14:07:11 +02:00
secubox-device-intel feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-dns feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-dns-guard feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-dns-provider feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-domoticz feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-dpi feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-droplet feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-exposure feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-eye-remote feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-full/debian feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-gitea feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-glances feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-gotosocial feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-haproxy fix(secubox-render-nginx-webui): use nginx -t exit code (not grep) 2026-05-12 14:14:13 +02:00
secubox-hardening feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-hexo feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-homeassistant feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-hub Health banner: live panel (visitor-origin + live-hosts + cert-status) (#98) 2026-05-12 16:27:56 +02:00
secubox-identity feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-interceptor feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-iot-guard feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-ipblock feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-jabber feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-jellyfin feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-jitsi feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-ksm feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-led-heartbeat feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-lite/debian feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-localai feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-localrecall feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-lyrion feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mac-guard feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-magicmirror feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mail feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mail-lxc feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-master-link feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-matrix feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mcp-server feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mediaflow feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mesh feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-meshname feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-metablogizer feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-metabolizer feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-metacatalog feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-metoblizer feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-metrics Health banner: live panel (visitor-origin + live-hosts + cert-status) (#98) 2026-05-12 16:27:56 +02:00
secubox-mirror feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mitmproxy feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mmpm feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-modem feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-mqtt feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-nac feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-ndpid feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-netdata feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-netdiag feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-netifyd feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-netmodes feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-nettweak feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-network-anomaly feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-newsbin feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-nextcloud feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-ollama feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-openclaw feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-ossec feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-p2p feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-peertube feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-photoprism feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-picobrew feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-portal feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-publish feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-qos feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-redroid feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-repo feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-reporter feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-rezapp feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-roadmap feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-routes feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-rtty feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-saas-relay feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-simplex feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-smart-strip feat(hardware): Add Smart-Strip HMI module (SBX-STR-01) + fix lite profile build 2026-04-27 19:03:08 +02:00
secubox-smtp-relay feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-soc feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-soc-agent feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-soc-gateway feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-soc-web feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-streamforge feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-streamlit feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-system feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-system-hub feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-threat-analyst feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-threats feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-tor feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-torrent feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-traffic feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-turn feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-ui-manager feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-users feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-vault feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-vhost feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-vm feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-voip feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-vortex-dns feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-vortex-firewall feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-waf feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-watchdog feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-wazuh feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-webmail feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-webmail-lxc feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-webradio feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-wireguard feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-zigbee feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
secubox-zkp feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00
zkp-hamiltonian feat(secubox): complete meta-script generator Tasks 14-17 2026-05-11 05:32:29 +02:00