Files
kguerineau b12ebea0e8 refactor: refactorisation, validation et corrections mail/DNS
Refactorisation
- Hook useApi centralisé (hooks/useApi.js) — supprime 200 lignes dupliquées
- Helpers backend : get_or_404, _sync_domain_from_state, _sync_zone_from_state, _stable_id
- Constantes de rôles RBAC dans auth.py (ROLE_GLOBAL_ADMIN, etc.)
- handle_apply_domain découpé en _sync_domain_row / _sync_mailboxes / _sync_aliases (169→32 lignes)
- oidc_callback découpé en _exchange_oidc_token / _provision_oidc_user (159→54 lignes)
- Extraction composants : AccountModal, AliasModal, DnssecResultModal, DnssecManageModal
- Suppression MailingLists.jsx (inutilisé)

Corrections
- Notification de connexion différée après validation TOTP
- Création domaine : validation complète avant tout appel API (quota bal > quota global bloqué)
- Création domaine : service Mail non tenté si création DNS échoue
- Alias goto : validation email bloquante (frontend + backend)
- Alias : vérification conflit avec compte mail existant (409)
- delete_domain : notifie l'agent mail pour suppression dans netadmin_mail
- Clés DNSSEC archivées dans key_dir/old/ avant activation et à la suppression de zone
- _get_ds_records : exclut le dossier old/ (évitait la lecture de doublons)
- Modale TOTP : remplace window.confirm par une vraie modale
- "Mon compte" accessible sans rôle
- Suppression champ "Serveur API" de la sidebar
2026-04-24 15:36:29 +02:00

144 lines
6.4 KiB
YAML

# ═══════════════════════════════════════════════════════════════════
# NetAdmin — fichier de configuration
# Emplacement par défaut : /etc/netadmin/config.yaml
# ═══════════════════════════════════════════════════════════════════
# ── Serveur ─────────────────────────────────────────────────────────
server:
host: "0.0.0.0"
port: 8000
cors_origins:
- "http://localhost:3000"
behind_proxy: false
# ── Redis (broker de messages) ──────────────────────────────────────
redis:
host: "localhost"
port: 6380
password: ""
db: 0
ack_timeout: 10
tls:
enabled: true
ca_cert: "/etc/netadmin/certs/ca.crt"
client_cert: "/etc/netadmin/certs/backend.crt"
client_key: "/etc/netadmin/certs/backend.key"
check_hostname: true
# ── Notifications email ──────────────────────────────────────────────
smtp:
enabled: false
host: "smtp.example.com"
port: 587
username: ""
password: ""
from_addr: "netadmin@example.com"
from_name: "NetAdmin"
use_tls: true
use_ssl: false
notify_login: true
notify_role_added: true
# ── Synchronisation ─────────────────────────────────────────────────
sync:
interval: 300
# ── DNS (backend) ────────────────────────────────────────────────────
dns:
default_ns:
- "ns1.infolix.fr."
- "ns2.infolix.fr."
# Email admin SOA par défaut (sans arobase, @ → .)
default_soa_admin: "hostmaster.infolix.fr"
dnssec_enabled: true
keygen_cmd: "dnssec-keygen"
key_dir: "/etc/bind/keys"
# ── Alias mail créés automatiquement à la création d'un domaine mail ───
mail_default_aliases:
abuse: "postmaster@infolix.fr" # RFC 2142 obligatoire
hostmaster: "postmaster@infolix.fr" # gestionnaire DNS
postmaster: "admin@infolix.fr" # RFC 5321 obligatoire
webmaster: "admin@infolix.fr" # gestionnaire web
# ── Base de données MariaDB ───────────────────────────────────────────
database:
host: "localhost"
port: 3306
user: "netadmin"
password: "changeme"
name: "netadmin"
# ── Authentification ─────────────────────────────────────────────────
auth:
session_secret: ""
session_ttl_hours: 8
oidc:
enabled: false
issuer: ""
client_id: ""
client_secret: ""
redirect_uri: "http://localhost:3000/auth/callback"
use_pkce: true
auto_provision: true
admin_group: ""
scopes:
- "openid"
- "email"
- "profile"
# ═══════════════════════════════════════════════════════════════════
# Configuration des AGENTS
# Ces sections sont lues par dns_agent.py / mail_agent.py uniquement
# ═══════════════════════════════════════════════════════════════════
# ── Agent DNS (serveur BIND9) ────────────────────────────────────────
dns_agent:
zones_dir: "/etc/bind/zones"
named_conf_local: "/etc/bind/named.conf.local"
rndc_cmd: "rndc"
# ── DNSSEC ──────────────────────────────────────────────────────
key_dir: "/etc/bind/keys" # répertoire des clés DNSSEC (key-directory BIND9)
dnssec_policy: "default" # nom de la dnssec-policy dans named.conf
# ── Redis ────────────────────────────────────────────────────────
redis_host: "netadmin.example.com"
redis_port: 6380
redis_password: ""
redis_db: 0
tls:
enabled: true
ca_cert: "/etc/netadmin/certs/ca.crt"
client_cert: "/etc/netadmin/certs/dns-agent.crt"
client_key: "/etc/netadmin/certs/dns-agent.key"
check_hostname: true
# ── Agent Mail (serveur Postfix/Dovecot) ─────────────────────────────
mail_agent:
# ── MariaDB PostfixAdmin ─────────────────────────────────────────
db_host: "localhost"
db_port: 3306
db_name: "postfix"
db_user: "postfix"
db_password: "mot_de_passe_db"
# ── Postfix ──────────────────────────────────────────────────────
postfix_reload_cmd: "postfix reload"
# ── DKIM (Rspamd sur ce même serveur) ───────────────────────────
dkim_dir: "/var/lib/rspamd/dkim"
dkim_selector: "mail"
# ── Redis ────────────────────────────────────────────────────────
redis_host: "netadmin.example.com"
redis_port: 6380
redis_password: ""
redis_db: 0
tls:
enabled: true
ca_cert: "/etc/netadmin/certs/ca.crt"
client_cert: "/etc/netadmin/certs/mail-agent.crt"
client_key: "/etc/netadmin/certs/mail-agent.key"
check_hostname: true