107 lines
6.0 KiB
Markdown
107 lines
6.0 KiB
Markdown
# 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.2] — 2026-08-31
|
||
|
||
### Corrigé
|
||
- **Binaire Windows qui ne démarrait pas** : le paquetage PyInstaller sous Wine oubliait
|
||
d'embarquer le plugin Qt nécessaire au rendu de l'interface graphique sous Windows, faisant
|
||
échouer l'application dès le lancement avec l'erreur « no Qt platform plugin could be
|
||
initialized ». Le plugin est désormais inclus systématiquement dans le binaire.
|
||
|
||
## [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)
|