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>
121 lines
4.3 KiB
Markdown
121 lines
4.3 KiB
Markdown
[English](README.md) | Francais | [中文](README.zh.md)
|
|
|
|
# secubox-app-dns-provider
|
|
|
|
Gestion programmatique des enregistrements DNS via les APIs REST des fournisseurs. Fait partie de l'ecosysteme SecuBox.
|
|
|
|
## Presentation
|
|
|
|
Gere les zones DNS via les APIs OVH, Gandi et Cloudflare. Fournit un outil CLI (`dnsctl`) pour les operations CRUD sur les enregistrements, la synchronisation des vhosts HAProxy, la verification de la propagation DNS et l'emission de certificats ACME DNS-01.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
dnsctl (CLI)
|
|
|-- load_provider() -> sources /usr/lib/secubox/dns/{provider}.sh
|
|
|-- cmd_list/add/rm -> delegue a dns_list/dns_add/dns_rm
|
|
|-- cmd_sync -> itere sur les vhosts UCI HAProxy -> dns_add par domaine
|
|
|-- cmd_verify -> nslookup sur 1.1.1.1, 8.8.8.8, 9.9.9.9
|
|
+-- cmd_acme_dns01 -> exporte les variables d'env du fournisseur -> acme.sh --dns
|
|
```
|
|
|
|
## Adaptateurs de Fournisseurs
|
|
|
|
Chaque adaptateur dans `/usr/lib/secubox/dns/` implemente :
|
|
|
|
| Fonction | Description |
|
|
|---|---|
|
|
| `dns_list(zone)` | Lister tous les enregistrements de la zone |
|
|
| `dns_add(zone, type, subdomain, target, ttl)` | Creer un enregistrement |
|
|
| `dns_rm(zone, type, subdomain)` | Supprimer un enregistrement |
|
|
| `dns_verify(fqdn)` | Verifier la resolution |
|
|
| `dns_test_credentials()` | Valider les cles API |
|
|
|
|
### Fournisseurs Supportes
|
|
|
|
- **OVH** -- API v1 signee HMAC-SHA1 (app_key + app_secret + consumer_key)
|
|
- **Gandi** -- LiveDNS v5 avec token Bearer
|
|
- **Cloudflare** -- API v4 avec token Bearer + zone_id
|
|
|
|
## Configuration UCI
|
|
|
|
```
|
|
/etc/config/dns-provider
|
|
config dns_provider 'main' -> enabled, provider, zone
|
|
config ovh 'ovh' -> endpoint, app_key, app_secret, consumer_key
|
|
config gandi 'gandi' -> api_key
|
|
config cloudflare 'cloudflare' -> api_token, zone_id
|
|
```
|
|
|
|
## Utilisation CLI
|
|
|
|
### Operations de Base
|
|
|
|
```bash
|
|
dnsctl status # Afficher le statut de configuration
|
|
dnsctl test # Verifier les credentials API
|
|
dnsctl list # Lister les enregistrements de la zone
|
|
dnsctl add A myservice 1.2.3.4 # Creer un enregistrement A
|
|
dnsctl add CNAME www mycdn.net # Creer un CNAME
|
|
dnsctl update A myservice 5.6.7.8 # Mettre a jour un enregistrement existant
|
|
dnsctl get A www # Obtenir la valeur d'un enregistrement
|
|
dnsctl rm A myservice # Supprimer un enregistrement
|
|
dnsctl domains # Lister tous les domaines du compte
|
|
```
|
|
|
|
### Synchronisation HAProxy
|
|
|
|
```bash
|
|
dnsctl sync # Synchroniser les vhosts HAProxy vers les enregistrements A DNS
|
|
dnsctl verify myservice.example.com # Verifier la propagation (1.1.1.1, 8.8.8.8, 9.9.9.9)
|
|
```
|
|
|
|
### Generateur de Sous-domaines
|
|
|
|
```bash
|
|
dnsctl generate gitea # Creer automatiquement gitea.zone avec l'IP publique
|
|
dnsctl generate api prod # Creer prod-api.zone
|
|
dnsctl suggest web # Afficher les suggestions de noms de sous-domaines
|
|
dnsctl suggest mail # Suggestions : mail, smtp, imap, webmail, mx
|
|
dnsctl suggest dev # Suggestions : git, dev, staging, test, ci
|
|
```
|
|
|
|
### DynDNS
|
|
|
|
```bash
|
|
dnsctl dyndns # Mettre a jour l'enregistrement A racine avec l'IP WAN
|
|
dnsctl dyndns api 300 # Mettre a jour api.zone avec un TTL de 5min
|
|
```
|
|
|
|
### Configuration DNS Mail
|
|
|
|
```bash
|
|
dnsctl mail-setup # Creer les enregistrements MX, SPF, DMARC
|
|
dnsctl mail-setup mail 10 # Nom d'hote et priorite personnalises
|
|
dnsctl dkim-add mail '<public-key>' # Ajouter un enregistrement TXT DKIM
|
|
```
|
|
|
|
### Certificats SSL
|
|
|
|
```bash
|
|
dnsctl acme-dns01 example.com # Emettre un certificat via challenge DNS-01
|
|
dnsctl acme-dns01 '*.example.com' # Certificat wildcard via DNS-01
|
|
```
|
|
|
|
## Dependances
|
|
|
|
- `curl` -- Client HTTP pour les appels API
|
|
- `openssl-util` -- Signature HMAC-SHA1 (OVH)
|
|
- `jsonfilter` -- Parsing JSON (natif OpenWrt)
|
|
- `acme.sh` -- Emission de certificats (optionnel, pour DNS-01)
|
|
|
|
## Fichiers
|
|
|
|
```
|
|
/etc/config/dns-provider Configuration UCI
|
|
/usr/sbin/dnsctl Controleur CLI
|
|
/usr/lib/secubox/dns/ovh.sh Adaptateur OVH
|
|
/usr/lib/secubox/dns/gandi.sh Adaptateur Gandi
|
|
/usr/lib/secubox/dns/cloudflare.sh Adaptateur Cloudflare
|
|
```
|