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>
49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Point d'entrée : lance la GUI si aucun argument n'est fourni, sinon la CLI.
|
|
|
|
Exemples CLI :
|
|
python main.py diagnose --domain h3adm.lan
|
|
python main.py join --domain h3adm.lan --username administrateur --password-stdin
|
|
python main.py install-prereqs
|
|
python main.py --help
|
|
"""
|
|
|
|
import sys
|
|
|
|
|
|
def _attach_windows_console() -> None:
|
|
"""Rattache le binaire packagé (--windowed, sans console) au terminal appelant
|
|
afin que la sortie de la CLI reste visible sous Windows."""
|
|
import ctypes
|
|
|
|
ATTACH_PARENT_PROCESS = -1
|
|
if ctypes.windll.kernel32.AttachConsole(ATTACH_PARENT_PROCESS):
|
|
try:
|
|
sys.stdout = open("CONOUT$", "w")
|
|
sys.stderr = open("CONOUT$", "w")
|
|
except OSError:
|
|
pass
|
|
|
|
|
|
def main() -> int:
|
|
if len(sys.argv) > 1:
|
|
if sys.platform == "win32":
|
|
_attach_windows_console()
|
|
from domainjoin.cli import run_cli
|
|
|
|
return run_cli(sys.argv[1:])
|
|
|
|
from PySide6.QtWidgets import QApplication
|
|
|
|
from domainjoin.gui import MainWindow
|
|
|
|
app = QApplication(sys.argv)
|
|
app.setApplicationName("JoinDomainGUI")
|
|
window = MainWindow()
|
|
window.show()
|
|
return app.exec()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|