chore(release): v0.7.17
Corrige la cause racine des invites d'authentification persistantes : le service wgsecure-helper ne démarrait jamais réellement. Lancé par le SCM (sans commande sur la ligne d'appel), HandleCommandLine() se contentait d'afficher son aide et de sortir, sans entrer dans le dispatcher — SvcDoRun n'était donc jamais exécuté, aucun journal n'était créé, le pipe n'existait jamais, et l'app retombait toujours sur l'élévation UAC. Bascule sur PrepareToHostSingle() + StartServiceCtrlDispatcher() quand argv est vide. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -1,3 +1,3 @@
|
||||
__version__ = "0.7.16"
|
||||
__version__ = "0.7.17"
|
||||
APP_NAME = "WGSecure"
|
||||
APP_SHORT = "WGS"
|
||||
|
||||
@@ -23,6 +23,7 @@ import logging
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
from logging.handlers import RotatingFileHandler
|
||||
|
||||
import pywintypes
|
||||
@@ -271,7 +272,18 @@ class WGSecureHelperService(win32serviceutil.ServiceFramework):
|
||||
servicemanager.PYS_SERVICE_STARTED,
|
||||
(self._svc_name_, ""),
|
||||
)
|
||||
logger = _get_logger()
|
||||
# La création du journal fichier est elle-même faillible (dossier
|
||||
# non inscriptible…) : sans ce garde-fou, un échec ici laisserait
|
||||
# zéro trace nulle part. Le journal d'événements Windows sert donc
|
||||
# de canal de dernier recours (Observateur d'événements →
|
||||
# Applications, source « WGSecureHelper »).
|
||||
try:
|
||||
logger = _get_logger()
|
||||
except Exception as e:
|
||||
servicemanager.LogErrorMsg(
|
||||
f"WGSecureHelper : journal fichier impossible ({e})")
|
||||
raise
|
||||
|
||||
logger.info("Service démarré")
|
||||
try:
|
||||
self._serve_forever(logger)
|
||||
@@ -281,6 +293,8 @@ class WGSecureHelperService(win32serviceutil.ServiceFramework):
|
||||
# exploitable ici plutôt qu'un service qui disparaît en
|
||||
# silence sans rien dans le log.
|
||||
logger.exception("Arrêt inattendu de la boucle principale")
|
||||
servicemanager.LogErrorMsg(
|
||||
"WGSecureHelper : arrêt inattendu, cf. helper.log")
|
||||
finally:
|
||||
logger.info("Service arrêté")
|
||||
|
||||
@@ -327,4 +341,17 @@ class WGSecureHelperService(win32serviceutil.ServiceFramework):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
win32serviceutil.HandleCommandLine(WGSecureHelperService)
|
||||
if len(sys.argv) == 1:
|
||||
# Lancé par le gestionnaire de services (SCM), qui n'ajoute aucune
|
||||
# commande à la ligne d'appel : il faut entrer explicitement dans le
|
||||
# dispatcher. `HandleCommandLine()` seul, dans ce cas, se contente
|
||||
# d'afficher son aide et de sortir — le service démarrait donc puis
|
||||
# s'arrêtait aussitôt, sans jamais exécuter SvcDoRun (d'où l'absence
|
||||
# totale de fichier journal et un pipe qui n'existait jamais, l'app
|
||||
# retombant alors systématiquement sur l'élévation UAC).
|
||||
servicemanager.Initialize()
|
||||
servicemanager.PrepareToHostSingle(WGSecureHelperService)
|
||||
servicemanager.StartServiceCtrlDispatcher()
|
||||
else:
|
||||
# Invocation manuelle : install / remove / start / stop / debug…
|
||||
win32serviceutil.HandleCommandLine(WGSecureHelperService)
|
||||
|
||||
Reference in New Issue
Block a user