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
144 lines
6.4 KiB
YAML
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
|