Files
JoinDomainGUI/domainjoin/backend/base.py
T
tuxgyverandClaude Sonnet 5 1feb72bf17 Version initiale : diagnostic réseau AD + jointure de domaine
Application PySide6 (GUI + CLI) fonctionnant sous Linux et Windows :
- Diagnostic réseau complet AD (DNS, SRV, ports, NTP, outils requis)
- Jointure de domaine via realmd (Linux) ou Add-Computer (Windows)
- Installation automatique des prérequis Linux (apt)
- CLI colorée (diagnose/join/install-prereqs), sans dépendance PySide6
- Scripts de packaging PyInstaller pour Linux et Windows

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 11:40:11 +02:00

48 lines
1.5 KiB
Python

"""Interface commune aux backends de jointure de domaine (Linux/Windows)."""
from __future__ import annotations
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Callable, Optional
@dataclass
class JoinResult:
success: bool
message: str
needs_reboot: bool = False
OutputCallback = Callable[[str], None]
class DomainJoinBackend(ABC):
"""Backend de jointure à un domaine Active Directory."""
@abstractmethod
def is_available(self) -> tuple[bool, str]:
"""Indique si les outils nécessaires sont présents. Retourne (disponible, message)."""
@abstractmethod
def join(
self,
domain: str,
username: str,
password: str,
ou: Optional[str] = None,
computer_name: Optional[str] = None,
on_output: Optional[OutputCallback] = None,
) -> JoinResult:
"""Rejoint le domaine. Le mot de passe n'est jamais passé en argument
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_install_prerequisites(self) -> bool:
"""True si ce backend sait installer automatiquement les outils manquants."""
return False
def install_prerequisites(self, on_output: Optional[OutputCallback] = None) -> JoinResult:
"""Installe les outils manquants. À surcharger si can_install_prerequisites() est vrai."""
return JoinResult(success=False, message="Installation automatique non prise en charge pour ce backend.")