secubox-deb/docs
CyberMind 45f8397efd
Some checks are pending
License Headers / check (push) Waiting to run
Rapport kbin fidèle (PDF donut-grids + media types) + WebUI DPI + incident hardening (#787)
* docs(spec): rapport kbin fidèle + media types + WebUI DPI (ref #785)

* docs(plan): rapport kbin media types implementation plan (ref #785)

* feat(core): shared media-catch JSONL aggregator (ref #785)

* fix(core): guard media-catch aggregate against malformed fields + full SPDX header (ref #785)

* feat(toolbox): _media_stats + wire media_exfil into report routes (ref #785)

* feat(toolbox): PDF DPI-exfil/overall donut-grids + media-type block (ref #785)

Replaces the text-bullet DPI/EXFIL section (per-device + overall) with
_pdf_donut_grid 4-donut grids and adds a new "TYPES DE MEDIAS CAPTES"
section (kinds/content-types donut grid + top-hosts emoji table), for
parity with the HTML report. Also guards the PDF footer's italic
set_font against DejaVu-Oblique not being registered (fonts-dejavu-core
ships Regular+Bold only) — a pre-existing latent crash on any full
render_pdf() call, uncovered because no prior test exercised the whole
function end-to-end.

* fix(toolbox): per-grid captions so network/media donuts aren't mislabeled as device stats (ref #785)

* feat(toolbox): media-type cards in report web page (me + overall) (ref #785)

* fix(toolbox): close media card divs so Overall tab + footer aren't nested in DPI pane (ref #785)

* feat(dpi): WebUI card — services by category (bytes) (ref #785)

* feat(dpi): /media_types endpoint (MIME media-catch, fail-empty) (ref #785)

* feat(dpi): WebUI card — MIME media types + refreshAll wiring (ref #785)

* chore: gitignore SDD run scratch + drop stray task report (ref #785)

* perf(core): bounded tail-read for media-catch + import-in-try for uniform fail-empty (ref #785)

* fix(dpi): backport board-live async control endpoints (drift reconciliation, ref #785)

The board ran a manually-deployed main.py with status/restart/start/stop/logs/
interface_list/tc_status/remove_mirred as 'async def' — never committed to git.
Backported so the next .deb install doesn't revert them. Signature-only change,
verified identical to the live-validated deployed file.

* fix(toolbox): PDF render must not wedge the event loop (#785 incident)

Heavier #785 report PDFs (more matplotlib donut-grids, ~9s render) + the WAF
504-page auto-retry storm pegged the single uvicorn worker and 504'd the whole
toolbox vhost. Fixes:
- run render off the event loop (threadpool) so HTML report / landing stay live
- serialize renders through one asyncio lock (pyplot is not thread-safe; also
  bounds CPU so retries can't render in parallel)
- short per-device PDF cache with a double-checked lock: a retry storm now
  triggers exactly ONE render, all other hits return cached bytes instantly
- persistent MPLCONFIGDIR (systemd drop-in + postinst dir) so matplotlib builds
  its font cache once instead of on every process start

Validated live on gk2: cold render caches, 8-request retry storm all served
from cache (~0.1s), /landing 0.012s throughout.

---------

Co-authored-by: CyberMind-FR <gandalf@Gk2.net>
2026-07-03 12:27:28 +02:00
..
architecture
assets feat(secubox-toolbox): 3 QR code endpoints + splash QR display + 9th dashboard widget (device fingerprint) + README poster integration (ref #495 #497) 2026-06-05 11:24:03 +02:00
cspn docs(cspn): draft CSPN test matrix (criteria → runnable tests) 2026-06-15 10:14:40 +02:00
design
errata
eye-remote
hardware docs(mochabin): EP06 mPCIe GPIO investigation runbook + hardened probe script (closes #345) (#359) 2026-05-22 17:50:33 +02:00
marketing docs: add Cartographie sociale 'You Have Been Tracked' README section + poster brief (ref #502) 2026-06-10 12:52:36 +02:00
notes docs(notes): Gondwana trust-substrate poster research-note — vulgarized sketch + image-gen prompt + roadmap 2026-07-01 15:15:44 +02:00
reference
references/gst
reports
screenshots docs(wiki): refonte 126 modules — snapshots WebUI déterministes + READMEs 4 langues (ref #742) 2026-06-26 10:14:14 +02:00
specs docs(specs): integrate CM-WALL-EGRESS-2026-06 v0.1.0-draft + agent context 2026-06-02 11:13:44 +02:00
superpowers Rapport kbin fidèle (PDF donut-grids + media types) + WebUI DPI + incident hardening (#787) 2026-07-03 12:27:28 +02:00
wiki docs(wiki): refonte 126 modules — snapshots WebUI déterministes + READMEs 4 langues (ref #742) 2026-06-26 10:14:14 +02:00
AI-BUILD-PROMPT.md
AI-HANDOVER-cabine-evolution.md docs: AI-HANDOVER tech brief for external LLM (GPT-5/Gemini/Claude) (ref #492) 2026-06-05 11:05:13 +02:00
AI-HANDOVER-mistral.md docs: Mistral.ai handover prompt (reprise code + analyse projet) 2026-06-15 09:37:48 +02:00
CACHE-PATTERN.md
FAQ-BUSYBOX-RESCUE.md
FAQ-KBIN-TOR.md chore(toolbox): 2.7.0 middle release — kbin milestone + Tor chapter (ref #683) 2026-06-19 11:48:32 +02:00
FAQ-LXC-DNS.md fix(nextcloud): give LXC systemd-resolved a DNS upstream; document LXC DNS gotcha 2026-05-29 07:10:39 +02:00
grammar.md docs: MODULE-GUIDELINES + grafana/yacy/rustdesk LXC plan 2026-05-20 06:43:04 +02:00
LED-HEALTHBUMP.md
LIVE-USB.md
MODULE-GUIDELINES.md docs: codify dual-vhost MUST for modules with a real web UI 2026-05-24 10:06:56 +02:00
MODULES.md docs: MODULE-GUIDELINES + grafana/yacy/rustdesk LXC plan 2026-05-20 06:43:04 +02:00
OPENWRT-CRT-THEME.md
OPENWRT-DEBIAN-COMPARISON.md
OPENWRT-MASTERLINK.md
OPENWRT-MESH-DAEMON.md
P2P-EVOLUTIONS-POSTER-PROMPT.md secubox-p2p: Kademlia DHT + federation health-checks + hierarchical master-link (#774) (#775) 2026-07-03 06:59:35 +02:00
PROMPT-BUSYBOX-TECHTIP.md
SCREENSHOTS-VM.md
SECUBOX-DEV-METHODOLOGY.md
TOOLS.md
UI-GUIDE.md