chore(release): v0.7.12
Ajoute wgsecure-helper, un service Windows privilégié (LocalSystem) qui installe/désinstalle le tunnel et pose/retire les règles NRPT sans invite d'authentification répétée. L'ACL du service WireGuard (v0.7.6) ne délègue que démarrer/arrêter un tunnel déjà installé, jamais le créer/supprimer, ce que WGSecure fait pourtant à chaque connexion/déconnexion — d'où les prompts qui persistaient malgré v0.7.6-v0.7.11. Corrige aussi le handshake, qui échouait pour la même raison (wg show sans élévation complète). Purement additif : l'app retombe sur son chemin élevé existant si le service est absent (composant optionnel dans l'installeur). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
## ──────────────────────────────────────────────
|
||||
|
||||
APP := wgsecure
|
||||
VERSION := 0.7.11
|
||||
VERSION := 0.7.12
|
||||
VENV := .venv
|
||||
PYTHON := $(VENV)/bin/python3
|
||||
PIP := $(VENV)/bin/pip
|
||||
@@ -27,7 +27,7 @@ PI_OPTS := \
|
||||
--hidden-import cryptography.hazmat.primitives.asymmetric.x25519 \
|
||||
--collect-submodules PyQt6
|
||||
|
||||
.PHONY: all linux windows installer-deps release publish version changelog install install-gnome uninstall-gnome run run-admin icon reset-password setup-sudoers check-privileges clean clean-all help venv
|
||||
.PHONY: all linux windows helper installer-deps release publish version changelog install install-gnome uninstall-gnome run run-admin icon reset-password setup-sudoers check-privileges clean clean-all help venv
|
||||
|
||||
# ── Cible par défaut ────────────────────────────────────────────────────────
|
||||
all: linux
|
||||
@@ -108,6 +108,36 @@ windows: icon
|
||||
@echo " ✅ Binaire Windows → $(DIST)/$(APP).exe"
|
||||
@echo ""
|
||||
|
||||
# ── Service Windows privilégié (wgsecure-helper.exe) ─────────────────────────
|
||||
# Exécutable séparé de wgsecure.exe : installe/désinstalle le tunnel et pose/
|
||||
# retire les règles NRPT (split-DNS) en LocalSystem, pour éviter une invite
|
||||
# d'authentification à chaque connexion/déconnexion (cf. app/service/). Utilise
|
||||
# pywin32, installé uniquement dans ce venv Wine — jamais dans .venv (Linux) ni
|
||||
# dans les dépendances de wgsecure.exe. Cible explicite : ni `windows` ni
|
||||
# `release` ne la déclenchent implicitement, ce composant restant optionnel.
|
||||
# --hidden-import win32timezone : dépendance dynamique de pywin32 que
|
||||
# l'analyse statique de PyInstaller ne détecte pas seule (service qui
|
||||
# démarre mais plante à l'exécution sans ce forçage — cas connu).
|
||||
helper:
|
||||
@echo ""
|
||||
@echo " 🛡️ Compilation du service (Wine + PyInstaller)…"
|
||||
@echo ""
|
||||
@which wine > /dev/null 2>&1 \
|
||||
|| (echo " ❌ Wine non installé → sudo apt install wine"; exit 1)
|
||||
@test -f "$(WINE_PYTHON)" \
|
||||
|| (echo " ❌ Python Windows introuvable dans Wine → make setup-wine"; exit 1)
|
||||
@wine $(WINE_PYTHON) -m pip install -r requirements-helper.txt --quiet
|
||||
@wine $(WINE_PYTHON) -m PyInstaller \
|
||||
--noconfirm \
|
||||
--clean \
|
||||
--name wgsecure-helper \
|
||||
--onefile \
|
||||
--hidden-import win32timezone \
|
||||
app/service/helper_service.py
|
||||
@echo ""
|
||||
@echo " ✅ Service → $(DIST)/wgsecure-helper.exe"
|
||||
@echo ""
|
||||
|
||||
# ── Prérequis de l'installeur Windows (wgsecure.iss) ─────────────────────────
|
||||
# WireGuard n'est pas empaqueté avec WGSecure (c'est wg.exe et le pilote
|
||||
# tunnel qui manquent, pas une simple DLL) : wgsecure.iss l'installe donc en
|
||||
@@ -314,6 +344,7 @@ help:
|
||||
@echo " ║ make install Installe les dépendances ║"
|
||||
@echo " ║ make linux Binaire Linux (onefile) ║"
|
||||
@echo " ║ make windows Binaire Windows (Wine) ║"
|
||||
@echo " ║ make helper Service Windows (Wine) ║"
|
||||
@echo " ║ make installer-deps Prérequis wgsecure.iss ║"
|
||||
@echo " ║ make release Linux + nommage release ║"
|
||||
@echo " ║ make publish Tague + publie sur Gitea ║"
|
||||
|
||||
Reference in New Issue
Block a user