secubox-openwrt/package/secubox/PUNK-EXPOSURE.fr.md
CyberMind-FR ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
Add complete French (fr) and Chinese (zh) translations for all documentation:

- Root files: README, CHANGELOG, SECURITY, BETA-RELEASE
- docs/: All 16 core documentation files
- DOCS/: All 19 deep-dive documents including embedded/ and archive/
- package/secubox/: All 123+ package READMEs
- Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/

Total: 346 translation files created

Each file includes language switcher links for easy navigation between
English, French, and Chinese versions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:00:18 +01:00

11 KiB

Punk Exposure Engine

Langues: English | Francais | 中文

Vision

Chaque noeud SecuBox est une station generative — il decouvre ce qui tourne localement et offre un flux unifie pour rendre n'importe quel service accessible via tous les canaux disponibles : Tor .onion, DNS/HTTPS classique, maillage P2P, ou les trois a la fois.

Trois verbes definissent le workflow :

  • Peek — Scanner, decouvrir, observer. Qu'est-ce qui tourne ? Qu'est-ce qui est expose ? Quels domaines sont mappes ? Quels pairs sont en ligne ?
  • Poke — Cibler un service. Choisir les canaux d'exposition. Configurer le flux de liaison.
  • Emancipate — Activer. Le service devient accessible. Les enregistrements DNS sont crees, les certificats sont emis, les adresses .onion sont generees, les pairs du maillage sont notifies.

Architecture

                          EMANCIPATE
                              |
             +----------------+----------------+
             |                |                |
         Tor Layer      DNS/SSL Layer      Mesh Layer
         (.onion)       (HTTPS+ACME)       (P2P peers)
             |                |                |
     tor-shield          haproxyctl        secubox-p2p
     hidden svc       + dns-provider-api   + gossip sync
                      + acme.sh
                              |
                     DNS Provider APIs
                    (OVH, Gandi, Cloudflare)
                              |
                     A/AAAA/CNAME records
                     created programmatically

Composants

Existants (deja construits)

Composant Package Ce qu'il fait
Scanner de services secubox-app-exposure Scan netstat enrichi avec noms UCI/Docker/processus
Exposition Tor secubox-app-tor + secubox-app-exposure tor_add() cree le repertoire hidden service + entree torrc
Exposition SSL/HAProxy secubox-app-haproxy + secubox-app-exposure ssl_add() cree le backend HAProxy + vhost + certificat ACME
Certificats ACME secubox-app-haproxy acme.sh avec validation HTTP-01 webroot via port 8402
Gestionnaire VHost luci-app-vhost-manager CRUD vhost Nginx avec ACME + templates
Maillage P2P secubox-p2p Decouverte mDNS, maillage WireGuard, registre de services, chaine gossip
Master-Link secubox-master-link Onboarding hierarchique de noeuds avec tokens HMAC + audit blockchain
Registre de services luci-app-service-registry Agregation des services a travers le maillage, health checks, page d'accueil
Tableau de bord Exposure luci-app-exposure Vue KISS mono-table : scan + toggles Tor/SSL par service

Manquants (a construire)

Composant Objectif Priorite
API fournisseur DNS Gestion programmatique des enregistrements DNS (OVH, Gandi, Cloudflare) Haute
ACME DNS-01 Certificats wildcard + domaines sans acces port 80 Haute
Flux Poke unifie Action unique pour exposer un service sur tous les canaux Moyenne
Agregation Peek Vue combinee : scan local + pairs maillage + enregistrements DNS + Tor Moyenne
Orchestrateur Emancipate Activation multi-canaux atomique avec rollback Moyenne

Integration API Fournisseur DNS

Conception

Nouveau package : secubox-app-dns-provider

package/secubox/secubox-app-dns-provider/
  files/etc/config/dns-provider     # UCI: type fournisseur, cles API, zone
  files/etc/init.d/dns-provider     # (optionnel) cron pour sync enregistrements
  files/usr/sbin/dnsctl             # CLI: record add/rm/list/sync
  files/usr/lib/secubox/dns/        # Adaptateurs fournisseurs
    ovh.sh                          # API OVH (app key + secret + consumer key)
    gandi.sh                        # Gandi LiveDNS (cle API)
    cloudflare.sh                   # Cloudflare (token API + zone ID)

Config UCI

config dns_provider 'main'
    option enabled '1'
    option provider 'ovh'          # ovh | gandi | cloudflare
    option zone 'example.com'      # zone DNS geree

config ovh 'ovh'
    option endpoint 'ovh-eu'       # ovh-eu | ovh-ca | ovh-us
    option app_key ''
    option app_secret ''
    option consumer_key ''

config gandi 'gandi'
    option api_key ''

config cloudflare 'cloudflare'
    option api_token ''
    option zone_id ''

Commandes dnsctl

dnsctl list                          # Lister tous les enregistrements DNS de la zone
dnsctl add A myservice 1.2.3.4      # Creer enregistrement A
dnsctl add CNAME blog mycdn.net     # Creer CNAME
dnsctl rm A myservice               # Supprimer enregistrement
dnsctl sync                         # Synchroniser vhosts locaux vers enregistrements DNS
dnsctl verify myservice.example.com # Verifier propagation DNS

Integration acme.sh DNS-01

Une fois que dnsctl fonctionne, activer les challenges DNS-01 dans haproxyctl cert add :

# Actuel (HTTP-01 uniquement):
acme.sh --issue -d "$domain" --webroot /var/www/acme-challenge

# Nouveau (DNS-01 via fournisseur):
provider=$(uci -q get dns-provider.main.provider)
case "$provider" in
    ovh)
        export OVH_END_POINT=$(uci -q get dns-provider.ovh.endpoint)
        export OVH_APPLICATION_KEY=$(uci -q get dns-provider.ovh.app_key)
        export OVH_APPLICATION_SECRET=$(uci -q get dns-provider.ovh.app_secret)
        export OVH_CONSUMER_KEY=$(uci -q get dns-provider.ovh.consumer_key)
        acme.sh --issue -d "$domain" --dns dns_ovh
        ;;
    gandi)
        export GANDI_LIVEDNS_KEY=$(uci -q get dns-provider.gandi.api_key)
        acme.sh --issue -d "$domain" --dns dns_gandi_livedns
        ;;
    cloudflare)
        export CF_Token=$(uci -q get dns-provider.cloudflare.api_token)
        export CF_Zone_ID=$(uci -q get dns-provider.cloudflare.zone_id)
        acme.sh --issue -d "$domain" --dns dns_cf
        ;;
esac

Cela debloque les certificats wildcard (*.example.com) et les domaines derriere des firewalls sans port 80.

Le Flux Emancipate

Quand un utilisateur poke un service et choisit "Emancipate", l'orchestrateur execute tous les canaux selectionnes de maniere atomique :

L'utilisateur selectionne : Gitea (port 3001) → Emancipate [Tor + DNS + Mesh]

1. Canal Tor:
   secubox-exposure tor add gitea 3001 80
   → adresse .onion generee

2. Canal DNS:
   dnsctl add A gitea <public-ip>
   haproxyctl vhost add gitea.example.com 3001
   haproxyctl cert add gitea.example.com --dns
   → HTTPS actif sur gitea.example.com

3. Canal Mesh:
   secubox-p2p publish gitea 3001 "Gitea"
   gossip_sync
   → Tous les pairs du maillage decouvrent le service

4. Mise a jour du registre:
   Registre de services rafraichi
   Page d'accueil regeneree
   Tableau de bord Exposure affiche les trois badges

Rollback en cas d'echec

Si un canal echoue, les canaux precedemment completes ne sont pas demontes — ils restent actifs. L'echec est signale, et l'utilisateur peut reessayer ou supprimer des canaux individuels via les toggles du tableau de bord Exposure.

Peek : Ce Qui Existe Aujourd'hui

Le tableau de bord Exposure actuel (luci-app-exposure/services.js) implemente deja Peek :

  • Scanne tous les ports en ecoute via netstat -tlnp
  • Enrichit avec les vrais noms depuis uhttpd, streamlit, Docker, configs glances
  • Reference croisee des hidden services Tor par port backend
  • Reference croisee des vhosts HAProxy par port backend
  • Affiche des interrupteurs toggle pour Tor et SSL par service

Ce dont Peek a besoin ensuite

  • Colonne enregistrements DNS : Montrer quels services ont des enregistrements DNS A/CNAME via dnsctl list
  • Colonne visibilite Mesh : Montrer quels services sont publies aux pairs du maillage
  • Vue multi-noeuds : Agreger les services de tous les pairs du maillage (deja disponible via secubox-p2p get_shared_services)

Poke : Ce Qui Existe Aujourd'hui

Les interrupteurs toggle dans le tableau de bord Exposure sont deja des actions "Poke" :

  • Toggle Tor ON → modal → nom du service + port onion → Activer
  • Toggle SSL ON → modal → nom du service + domaine → Activer

Ce dont Poke a besoin ensuite

  • Toggle DNS : Troisieme colonne toggle pour la gestion des enregistrements DNS
  • Bouton Emancipate : Action unique "Exposer partout" par service
  • Selection du fournisseur : Choisir quelle zone DNS/fournisseur pour le domaine

Points d'Integration avec les Packages Existants

Package Integration Direction
secubox-app-exposure Scan Peek + ajout/suppression Tor/SSL Deja fonctionnel
secubox-app-haproxy Vhost HAProxy + certificat ACME Deja fonctionnel
secubox-app-tor Cycle de vie hidden service Deja fonctionnel
secubox-p2p Publication service + gossip sync Ajouter appel RPC publish
luci-app-exposure Tableau de bord : ajouter colonne DNS + bouton Emancipate Extension frontend
secubox-app-dns-provider NOUVEAU : CRUD enregistrements DNS via APIs fournisseurs A construire
luci-app-dns-provider NOUVEAU : Config LuCI pour identifiants fournisseur A construire

Ordre d'Implementation

  1. secubox-app-dns-provider — Outil CLI + config UCI + adaptateurs fournisseurs (OVH d'abord)
  2. DNS-01 dans haproxyctl — Connecter dnsctl au flux ACME comme alternative a HTTP-01
  3. luci-app-dns-provider — Frontend LuCI pour configuration fournisseur
  4. Colonne DNS du tableau de bord Exposure — Ajouter toggle DNS + integration dnsctl
  5. Flux Emancipate — Orchestrateur unifie dans secubox-exposure emancipate
  6. Integration publication Mesh — Connecter secubox-p2p publish a Emancipate

Convention de Nommage

Le projet utilise des metaphores punk/DIY :

Terme Signification Equivalent technique
Peek Decouvrir, scanner, observer secubox-exposure scan + registre de services
Poke Cibler, configurer, viser Interrupteurs toggle + config modal
Emancipate Activer, liberer, exposer Activation multi-canaux atomique
Station Un noeud SecuBox Un appareil OpenWrt executant le maillage
Generative Chaque station peut creer de nouveaux endpoints Apps Docker + canaux d'exposition

Considerations de Securite

  • Cles API fournisseur DNS stockees dans UCI avec ACL restreint
  • Cles privees ACME dans /etc/acme/ avec permissions 600
  • Cles hidden service Tor dans /var/lib/tor/ proprietaire tor:tor
  • Le flux Emancipate n'expose jamais les services 127.0.0.1 uniquement (garde dans le scan)
  • Enregistrements DNS crees uniquement pour les services que l'utilisateur Poke explicitement
  • Le rollback ne supprime PAS automatiquement — l'utilisateur doit explicitement retirer l'exposition