tuxgyverandClaude Opus 5 599192fd67 build: Makefile categorise, README et compilation Windows depuis Linux
- Makefile avec aide auto-documentee par categories (`make help`) :
  installation, utilisation, compilation, publication, nettoyage.
- packaging/build_windows_wine.sh : produit le .exe Windows natif depuis
  Linux via un PyInstaller Windows execute dans un prefixe Wine dedie
  (PyInstaller ne cross-compilant pas). Installation des dependances
  idempotente, builds suivants incrementaux.
- README.md : fonctionnalites, usage GUI/CLI, compilation, publication.
- `make publish` pousse branche et tags vers tous les depots configures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 22:11:39 +02:00
2026-09-04 15:04:46 +02:00
2026-09-04 15:04:46 +02:00

JoinDomainGUI

Outil de diagnostic réseau Active Directory et de jointure de domaine, avec interface graphique (PySide6) et interface en ligne de commande. Fonctionne sous Linux (realmd) et sous Windows (PowerShell Add-Computer), le backend étant choisi automatiquement selon la plateforme.

Fonctionnalités

  • Diagnostic réseau AD : résolution DNS du domaine, enregistrements SRV (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.
  • 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 domaine, À propos.
  • Interface en ligne de commande utilisable sans environnement graphique (SSH, déploiement scripté) : la CLI n'importe jamais PySide6.
  • Le mot de passe ne transite jamais par la ligne de commande : il est transmis au sous-processus via stdin ou son environnement, et n'apparaît donc pas dans ps ni dans l'historique du shell.

Installation

make install     # crée l'environnement virtuel et installe les dépendances

Dépendances : Python 3.11+, PySide6, dnspython, ntplib.

Utilisation

Interface graphique

make run                      # depuis les sources
sudo ./dist/JoinDomainGUI     # binaire autonome Linux

La jointure de domaine nécessite les droits root / administrateur ; le diagnostic, non.

Ligne de commande

# Diagnostic réseau
python main.py diagnose --domain exemple.lan
make diagnose DOMAIN=exemple.lan

# Jointure de domaine (root / administrateur requis)
echo 'motdepasse' | sudo python main.py join \
    --domain exemple.lan --username administrateur --password-stdin

# Installation des prérequis système (Linux / apt uniquement)
sudo python main.py install-prereqs

Sans mot de passe fourni, il est demandé de façon interactive et masquée. --password existe mais est déconseillé (visible dans ps et l'historique).

Code de sortie : 0 si tout va bien, 1 si un test échoue ou si la jointure échoue, 2 en cas de droits insuffisants ou de backend indisponible.

Compilation des binaires

make build-linux      # -> dist/JoinDomainGUI          (ELF autonome)
make build-windows    # -> dist/windows/JoinDomainGUI.exe (PE64 autonome)
make build            # les deux

PyInstaller ne fait pas de cross-compilation. Le binaire Windows est donc produit depuis Linux en exécutant un vrai PyInstaller Windows dans un préfixe Wine dédié (packaging/build_windows_wine.sh) : le .exe obtenu est un binaire Windows natif. Le premier appel télécharge un Python Windows embarqué et les dépendances (plusieurs minutes) ; les suivants sont incrémentaux.

Sur une machine Windows, packaging/build_windows.bat fait le même travail nativement.

Le .exe s'appuie sur l'ICU fourni par le système (icuuc.dll dans System32), présent depuis Windows 10 1703 et Windows Server 2019. Il ne peut pas être testé sous Wine, qui ne fournit pas cette bibliothèque.

Publication

make publish     # pousse la branche courante et les tags vers tous les dépôts

Le projet est publié sur deux instances Gitea : git.tuxtech.fr (origin) et git.h3campus.fr (h3campus).

Structure

main.py                            Point d'entrée : GUI sans argument, CLI sinon
domainjoin/
├── cli.py                         Interface en ligne de commande
├── gui.py                         Interface PySide6
├── diagnostics.py                 Moteur de diagnostic réseau
├── worker.py                      Exécution en arrière-plan pour la GUI
├── privileges.py                  Détection des droits root/administrateur
└── backend/
    ├── base.py                    Interface commune de jointure
    ├── linux_realmd.py            Backend Linux (realmd / adcli)
    └── windows_addcomputer.py     Backend Windows (Add-Computer)
packaging/                         Scripts de compilation PyInstaller

Voir CHANGELOG.md pour l'historique des versions.

S
Description
Diagnostic reseau et jointure de domaine Active Directory (Linux/Windows), PySide6 + CLI
Readme
101 KiB
2026-09-09 05:18:14 +00:00
Languages
Python 87.8%
Shell 7.3%
Makefile 3.9%
Batchfile 1%