feat: sortie de domaine, et corrections issues d'un echec reel de jointure

Sortie de domaine (demandee) :
- Bouton « Quitter le domaine » et commande CLI `leave`, via Remove-Computer
  sous Windows et realm leave sous Linux.
- Nettoyage optionnel des paquets sous Linux. packagekit est exclu de la
  liste : il sert aussi au gestionnaire de logiciels du bureau.
- Le champ « Nom de la machine » passe en lecture seule : il ne peut pas
  etre modifie depuis cette fenetre.

Corrections tirees de la sortie PowerShell rapportee :
- Les barres de progression etaient serialisees en CLIXML et polluaient le
  journal ; les accents arrivaient illisibles (console OEM lue en cp1252).
  Progression desactivee, console en UTF-8, CLIXML residuel filtre.
- Le marqueur interne JOIN_FAILURE: n'apparait plus dans le message affiche.

Diagnostic :
- Ajout du SRV `_ldap._tcp.dc._msdcs`, celui que DsGetDcName utilise pour
  localiser un DC. Son absence donne exactement l'erreur rencontree, et le
  diagnostic ne le verifiait pas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 07:11:20 +02:00
co-authored by Claude Opus 5
parent 04a7b5dc64
commit eba4d0b843
9 changed files with 547 additions and 78 deletions
+9 -2
View File
@@ -11,8 +11,12 @@ le backend étant choisi automatiquement selon la plateforme.
(LDAP / Kerberos), ping des contrôleurs de domaine, test des ports AD
(53, 88, 389, 445, 464, 636, 3268), synchronisation NTP et présence des
outils système requis.
- **Jointure de domaine** avec unité d'organisation et nom de machine
optionnels, et détection du besoin de redémarrage.
- **Jointure de domaine** avec unité d'organisation optionnelle et détection du
besoin de redémarrage. Le nom de la machine est affiché mais non modifiable :
il vient du nom d'hôte système (Linux) ou des paramètres système (Windows).
- **Sortie de domaine** (`Remove-Computer` sous Windows, `realm leave` sous
Linux), avec sous Linux une option de désinstallation des paquets devenus
inutiles.
- **Installation des prérequis Linux** manquants en un clic ou une commande
(`realmd`, `sssd`, `adcli`, `samba-common-bin`, `packagekit` via `apt-get`).
- **Interface graphique** à trois onglets : Diagnostic réseau, Rejoindre le
@@ -54,6 +58,9 @@ make diagnose DOMAIN=exemple.lan
echo 'motdepasse' | sudo python main.py join \
--domain exemple.lan --username administrateur --password-stdin
# Sortie de domaine (--username optionnel sous Linux, requis sous Windows)
sudo python main.py leave --domain exemple.lan --remove-packages
# Installation des prérequis système (Linux / apt uniquement)
sudo python main.py install-prereqs
```