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>
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
make install # crée l'environnement virtuel et installe les dépendances
|
||||
```
|
||||
|
||||
Dépendances : Python 3.11+, `PySide6`, `dnspython`, `ntplib`.
|
||||
|
||||
## Utilisation
|
||||
|
||||
### Interface graphique
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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](https://git.tuxtech.fr/tuxgyver/JoinDomainGUI) (`origin`) et
|
||||
[git.h3campus.fr](https://git.h3campus.fr/Johnny/JoinDomainGUI) (`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](CHANGELOG.md) pour l'historique des versions.
|
||||
Reference in New Issue
Block a user