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:
@@ -38,6 +38,26 @@ class DomainJoinBackend(ABC):
|
||||
de ligne de commande : il est transmis via l'entrée standard du
|
||||
sous-processus pour ne pas apparaître dans la liste des processus."""
|
||||
|
||||
def can_leave(self) -> bool:
|
||||
"""True si ce backend sait faire quitter le domaine au poste."""
|
||||
return False
|
||||
|
||||
def leave(
|
||||
self,
|
||||
domain: str,
|
||||
username: str,
|
||||
password: str,
|
||||
remove_packages: bool = False,
|
||||
on_output: Optional[OutputCallback] = None,
|
||||
) -> JoinResult:
|
||||
"""Fait quitter le domaine au poste. Comme pour join(), le mot de passe
|
||||
ne passe jamais par la ligne de commande.
|
||||
|
||||
`remove_packages` demande en plus de désinstaller les paquets système
|
||||
devenus inutiles — sans effet sur les backends qui n'en installent pas.
|
||||
"""
|
||||
return JoinResult(success=False, message="Sortie de domaine non prise en charge pour ce backend.")
|
||||
|
||||
def can_install_prerequisites(self) -> bool:
|
||||
"""True si ce backend sait installer automatiquement les outils manquants."""
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user