Files
WGSecure/CHANGELOG.md
T
2026-08-31 11:16:04 +02:00

99 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog — WGSecure (WGS)
Toutes les modifications notables de ce projet sont documentées ici.
Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/).
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é
- **Onglet "À propos"** dans le panneau admin : logo bouclier, version, branding JT-Tools by Johnny
- **Icône bouclier vectorielle** générée par QPainter (7 résolutions : 16→256 px)
- Vert connecté / Rouge déconnecté / Orange connexion en cours / Bleu app / Violet admin
- **Icône barre des tâches** : installation automatique de `~/.local/share/icons/wgsecure.png`
et `~/.local/share/applications/wgsecure.desktop` au premier démarrage
- **Thème sombre uniforme** sur les 6 onglets du panneau admin (CSS partagé `_TAB_CSS`)
- Fond `#1c2833`, texte blanc, champs semi-transparents
- Bandeau coloré par onglet (bleu/navy/teal/bleu/rouge)
- TabBar cohérente avec onglet actif mis en évidence
- **Makefile** : compilation binaire Linux (`make linux`) et Windows (`make windows` via Wine)
- **README** enrichi avec badges shields.io (version, Python, PyQt6, plateformes) et emojis
### Corrigé
- **Bug MDP vide** : `set_admin_password("")` effaçait incorrectement — hashait la chaîne vide,
forçant une demande de mot de passe vide après suppression
- **Menu systray incomplet** : `QAction` en variables locales GC'd par Python avant affichage →
toutes les actions passent désormais `self` comme parent Qt
- **Section infos invisible** : `QWidget` sans `autoFillBackground` ne peignait pas son fond ;
remplacé par `QFrame` avec `setAutoFillBackground(True)` et couleurs explicites
- **Bouton agrandir persistant** : `setWindowFlag` seul ignoré par Mutter/XWayland →
`setWindowFlags()` complet sans `WindowMaximizeButtonHint`
### Amélioré
- Fenêtre principale agrandie 380×460 → 400×520 pour afficher les 6 lignes d'infos
- Police des labels infos : 11 → 12 px, couleurs explicites `#2c3e50`
- Panneau admin : largeur 620 → 700 px pour éviter le débordement des onglets
- `app.setWindowIcon()` posé sur `QApplication` (multi-tailles) + `setDesktopFileName()`
- Page About : icône 96 → 86 px (10 %), texte en blanc sur fond sombre `#1c2833`
---
## [0.1.0] — 2026-06-01
### Ajouté
- Interface graphique PyQt6 avec icône systray (Linux & Windows)
- **Mode User** (défaut) : connexion / déconnexion WireGuard en un clic, statut en temps réel
- **Mode Admin** (`--admin` ou via le menu) protégé par mot de passe
- Panneau Admin avec 5 onglets :
- **WireGuard** : configuration serveur (adresse, port UDP, clé publique, DNS, IP client)
- **Clés** : génération de paires Curve25519 (clé privée / publique), aperçu config exportable
- **MFA** : génération de secret TOTP, QR Code compatible Google Authenticator / Aegis
- **Test connexion** : vérification UDP du serveur avant tunnel
- **Sécurité** : gestion du mot de passe administrateur (SHA-256 + salt)
- Surcouche MFA : dialogue TOTP avec minuterie de validité (fenêtre glissante ±1)
- Génération de clés WireGuard via `cryptography` (X25519, sans `wg` binaire)
- Écriture automatique du fichier `.conf` WireGuard avec permissions `0600`
- Connexion via `wg-quick` (Linux) ou `wireguard /installtunnel` (Windows)
- Statut temps réel : trafic RX/TX, dernier handshake
- Réduction dans le systray à la fermeture de la fenêtre principale
- Configuration persistante JSON (`~/.wgsecure/config.json`)
---
*Versions planifiées :*
- `0.3.0` — Import/export de profils WireGuard (.conf), support multi-profils
- `0.4.0` — MFA par clé matérielle (FIDO2/YubiKey)
- `0.5.0` — Paquet installable (Windows .exe / Linux .deb)