chore(release): v0.4.1
This commit is contained in:
@@ -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
|
## [0.2.0] — 2026-06-01
|
||||||
|
|
||||||
### Ajouté
|
### Ajouté
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
## ──────────────────────────────────────────────
|
## ──────────────────────────────────────────────
|
||||||
|
|
||||||
APP := wgsecure
|
APP := wgsecure
|
||||||
VERSION := 0.4.0
|
VERSION := 0.4.1
|
||||||
VENV := .venv
|
VENV := .venv
|
||||||
PYTHON := $(VENV)/bin/python3
|
PYTHON := $(VENV)/bin/python3
|
||||||
PIP := $(VENV)/bin/pip
|
PIP := $(VENV)/bin/pip
|
||||||
|
|||||||
@@ -1,12 +1,6 @@
|
|||||||
# 🛡️ WGSecure (WGS)
|
# 🛡️ WGSecure (WGS)
|
||||||
|
|
||||||

|
🚀 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).
|
**WGSecure** est une interface graphique multiplateforme (Windows & Linux) pour gérer une connexion WireGuard avec une surcouche MFA (authentification à deux facteurs TOTP).
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ _WG_DEFAULT: dict[str, Any] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_DEFAULT: dict[str, Any] = {
|
_DEFAULT: dict[str, Any] = {
|
||||||
"version": "0.4.0",
|
"version": "0.4.1",
|
||||||
"admin_password_hash": "",
|
"admin_password_hash": "",
|
||||||
"admin_salt": "",
|
"admin_salt": "",
|
||||||
"mfa_enabled": False,
|
"mfa_enabled": False,
|
||||||
|
|||||||
@@ -675,7 +675,7 @@ class AdminWindow(QDialog):
|
|||||||
name_lbl.setStyleSheet("color: white;")
|
name_lbl.setStyleSheet("color: white;")
|
||||||
layout.addWidget(name_lbl)
|
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.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
version_lbl.setStyleSheet("color: rgba(255,255,255,0.7); font-size: 13px;")
|
version_lbl.setStyleSheet("color: rgba(255,255,255,0.7); font-size: 13px;")
|
||||||
layout.addWidget(version_lbl)
|
layout.addWidget(version_lbl)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""
|
"""
|
||||||
WGSecure (WGS) — Interface graphique WireGuard avec MFA
|
WGSecure (WGS) — Interface graphique WireGuard avec MFA
|
||||||
Version 0.4.0
|
Version 0.4.1
|
||||||
"""
|
"""
|
||||||
import sys
|
import sys
|
||||||
import argparse
|
import argparse
|
||||||
@@ -92,7 +92,7 @@ def main():
|
|||||||
)
|
)
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
app.setApplicationName("WGSecure")
|
app.setApplicationName("WGSecure")
|
||||||
app.setApplicationVersion("0.4.0")
|
app.setApplicationVersion("0.4.1")
|
||||||
app.setOrganizationName("WGS")
|
app.setOrganizationName("WGS")
|
||||||
# Icône globale multi-tailles — barre des tâches + alt-tab
|
# Icône globale multi-tailles — barre des tâches + alt-tab
|
||||||
app_icon = icons.icon_app()
|
app_icon = icons.icon_app()
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
; ──────────────────────────────────────────────
|
; ──────────────────────────────────────────────
|
||||||
|
|
||||||
#define MyAppName "WGSecure"
|
#define MyAppName "WGSecure"
|
||||||
#define MyAppVersion "0.4.0"
|
#define MyAppVersion "0.4.1"
|
||||||
#define MyAppPublisher "WGSecure"
|
#define MyAppPublisher "WGSecure"
|
||||||
#define MyAppExeName "wgsecure.exe"
|
#define MyAppExeName "wgsecure.exe"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user