diff --git a/CHANGELOG.md b/CHANGELOG.md index d83749d..446adee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,36 @@ Ce projet suit le [Versionnage Sémantique](https://semver.org/lang/fr/). --- +## [0.4.1] — 2026-08-31 + +### Corrigé +- **Plus d'accès internet après déconnexion du VPN** : `wg-quick down` refusait de s'exécuter + quand l'interface avait disparu sans passage par lui (crash, arrêt brutal, veille) et ne + retirait donc jamais l'entrée DNS posée par `wg-quick up` — la résolution de noms restait + pointée vers un serveur devenu injoignable. Nettoyage DNS désormais garanti à la connexion, + la déconnexion, la fermeture de l'application et au démarrage suivant. +- **Détection de connexion fiabilisée** : `wg show` retourne un code de succès même en cas de + refus de permission pour un utilisateur non administrateur — l'application se croyait + déconnectée en permanence et ne démontait donc jamais le tunnel à la fermeture. Détection + réécrite sans nécessiter de privilèges. +- **Interface figée pendant la connexion/déconnexion** : les commandes réseau (souvent + accompagnées d'une demande de mot de passe) tournaient sur le thread graphique et gelaient + la fenêtre. Déportées en tâche de fond. +- **Dialogues d'authentification répétés à chaque connexion** : la détection « sudo demande un + mot de passe » ne fonctionnait pas en session non anglophone ni pour les comptes disposant + de tous les droits sudo, et l'écriture de la configuration WireGuard n'était couverte par + aucune règle sudo autorisée. Chaîne de privilèges revue de bout en bout. +- Restauration garantie de l'état réseau à la fermeture de l'application, sous Linux comme + sous Windows (fermeture normale, icône système, signal d'arrêt, plantage). + +### Ajouté +- Diagnostic des droits d'exécution (`make check-privileges` et bouton dans le panneau Admin) + pour identifier précisément quelle commande déclenche un dialogue d'authentification. +- Avertissement lorsqu'un tunnel WireGuard tourne en dehors de WGSecure (autre nom + d'interface), cause fréquente de coupure DNS non détectée jusqu'ici. + +--- + ## [0.2.0] — 2026-06-01 ### Ajouté diff --git a/Makefile b/Makefile index 5833b16..9ae7b20 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ ## ────────────────────────────────────────────── APP := wgsecure -VERSION := 0.4.0 +VERSION := 0.4.1 VENV := .venv PYTHON := $(VENV)/bin/python3 PIP := $(VENV)/bin/pip diff --git a/README.md b/README.md index f295a32..872cec9 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,6 @@ # 🛡️ WGSecure (WGS) -![Version](https://img.shields.io/badge/version-0.4.0-blue?style=flat-square) -![Python](https://img.shields.io/badge/Python-3.11+-3776ab?style=flat-square&logo=python&logoColor=white) -![PyQt6](https://img.shields.io/badge/PyQt6-6.4+-41cd52?style=flat-square&logo=qt&logoColor=white) -![Linux](https://img.shields.io/badge/Linux-compatible-fcc624?style=flat-square&logo=linux&logoColor=black) -![Windows](https://img.shields.io/badge/Windows-10%2B-0078d4?style=flat-square&logo=windows&logoColor=white) -![MFA](https://img.shields.io/badge/MFA-TOTP-e74c3c?style=flat-square) -![WireGuard](https://img.shields.io/badge/WireGuard-VPN-88171a?style=flat-square) +🚀 v0.4.1 · 🐍 · 🪟🐧 · 🔐 MFA TOTP · 🛡️ WireGuard **WGSecure** est une interface graphique multiplateforme (Windows & Linux) pour gérer une connexion WireGuard avec une surcouche MFA (authentification à deux facteurs TOTP). diff --git a/app/core/config.py b/app/core/config.py index cdc8fae..122ed61 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -24,7 +24,7 @@ _WG_DEFAULT: dict[str, Any] = { } _DEFAULT: dict[str, Any] = { - "version": "0.4.0", + "version": "0.4.1", "admin_password_hash": "", "admin_salt": "", "mfa_enabled": False, diff --git a/app/ui/admin_window.py b/app/ui/admin_window.py index 4f6c0ce..ef967e5 100644 --- a/app/ui/admin_window.py +++ b/app/ui/admin_window.py @@ -675,7 +675,7 @@ class AdminWindow(QDialog): name_lbl.setStyleSheet("color: white;") layout.addWidget(name_lbl) - version_lbl = QLabel("Version 0.3.0") + version_lbl = QLabel("Version 0.4.1") version_lbl.setAlignment(Qt.AlignmentFlag.AlignCenter) version_lbl.setStyleSheet("color: rgba(255,255,255,0.7); font-size: 13px;") layout.addWidget(version_lbl) diff --git a/main.py b/main.py index 996ebbe..44b6272 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """ WGSecure (WGS) — Interface graphique WireGuard avec MFA -Version 0.4.0 +Version 0.4.1 """ import sys import argparse @@ -92,7 +92,7 @@ def main(): ) app = QApplication(sys.argv) app.setApplicationName("WGSecure") - app.setApplicationVersion("0.4.0") + app.setApplicationVersion("0.4.1") app.setOrganizationName("WGS") # Icône globale multi-tailles — barre des tâches + alt-tab app_icon = icons.icon_app() diff --git a/wgsecure.iss b/wgsecure.iss index 1424e12..eb1ce36 100644 --- a/wgsecure.iss +++ b/wgsecure.iss @@ -4,7 +4,7 @@ ; ────────────────────────────────────────────── #define MyAppName "WGSecure" -#define MyAppVersion "0.4.0" +#define MyAppVersion "0.4.1" #define MyAppPublisher "WGSecure" #define MyAppExeName "wgsecure.exe"