Commit Graph
39 Commits
Author SHA1 Message Date
tuxgyverandClaude Sonnet 5 4d8abc07d3 build: ajoute la cible make publish
Enchaîne release (build Linux versionné) puis gitea_release.sh
(BorisSkill) pour taguer et publier sur Gitea, en joignant aussi les
artefacts Windows déjà présents dans dist/ pour la version courante
s'ils existent.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:29:11 +02:00
tuxgyverandClaude Sonnet 5 6a3e8700c3 chore(release): v0.7.6
Ajoute un fichier log texte rotatif (wgsecure.log) dans le dossier
applicatif, en complément du journal JSON interne, pour diagnostiquer
un échec (ex. split-DNS) sans dépendre de l'UI. Corrige le panneau
Journal qui coupait les messages longs sans moyen de les lire en
entier (défilement horizontal réactivé + infobulle).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:25:01 +02:00
tuxgyverandClaude Sonnet 5 66faf5e661 chore(release): v0.7.5
Corrige l'échec silencieux « Accès refusé » à la connexion Windows :
wireguard.exe /install|uninstalltunnelservice était lancé sans élévation
en misant sur son manifeste UAC natif, qui ne s'auto-déclenche jamais via
un appel process-à-process. L'appel tente maintenant sans élévation
(compatible avec les ACLs accordées via le bouton dédié), puis retente
avec une vraie élévation UAC si le premier essai échoue. Le diagnostic
d'élévation est mis à jour pour refléter les deux cas.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 14:24:56 +02:00
tuxgyver 3b869aeae8 docs: mise à jour de la page À propos pour v0.7.4
La version s'affiche déjà dynamiquement depuis app.__version__ ; seul le
contenu curaté (FEATURES) devait suivre les apports réels de la 0.7.4 :
diagnostic du split-DNS et verrouillage des champs après import .conf.
2026-09-04 09:18:25 +02:00
tuxgyver 92d3d7f96e docs: mise à jour README pour v0.7.4
Badges de version et règles sudoers manuelles resynchronisées avec les
deux nouvelles commandes resolvectl (dns/domain) du split-DNS par lien.
2026-09-04 09:16:57 +02:00
tuxgyver 835d8e2bfb chore: synchronise la version de l'installeur Windows (0.7.4)
wgsecure.iss dupliquait encore 0.7.3, manqué lors du bump de version —
l'installeur généré aurait porté le mauvais numéro.
2026-09-04 09:06:15 +02:00
tuxgyver 5c53cf2500 chore(release): v0.7.4
Split-DNS repose désormais sur resolvectl par interface (Linux) et une
règle NRPT complète (Windows), avec diagnostic de résolution distante,
verrouillage des champs après import d'un .conf, et consolidation des
couleurs de l'UI dans theme.py.
2026-09-04 08:57:52 +02:00
tuxgyver 902c177330 Add Remote DNS 2026-09-04 08:55:35 +02:00
tuxgyver 910c04f845 docs: mise à jour README, CHANGELOG et page About pour v0.7.3
- Mise à jour du README avec la version 0.7.3 et le badge
- Mise à jour du CHANGELOG avec les notes de version 0.7.3
- Ajout du Split-DNS dans les fonctionnalités de la page About

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-09-03 07:21:26 +02:00
tuxgyver 38b48fc428 feat: support split-DNS, infobulles UI et corrections Windows
- Ajout du support complet du split-DNS pour Linux (systemd-resolved) et Windows (NRPT)
- Bouton de configuration des permissions ACL pour WireGuard sous Windows
- Suppression de tous les appels à sc.exe (remplacés par PowerShell + wireguard.exe)
- UAC gérée par wireguard.exe lui-même (pas par WGSecure)
- Infobulles ajoutées sur tous les champs de configuration principaux
- Correction du blocage du handshake lié au redémarrage de systemd-resolved
- Incrémentation de la version à 0.7.3

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-09-03 07:20:13 +02:00
tuxgyver e747f2a1ea fix(windows): suppression de sc.exe, bouton de configuration des permissions
- Supprime tous les appels à sc.exe (remplacés par PowerShell Get-Service + wireguard.exe)
- wireguard.exe appelé via run_command() sous Windows (UAC gérée par son manifeste)
- Supprime le double appel à uninstalltunnelservice (évite l'erreur 'service inexistant')
- Ajoute un bouton dans l'onglet Élévation pour configurer les ACLs du service WireGuard
  (permet à un utilisateur standard de gérer ses tunnels sans UAC après configuration admin)
- Incrémente la version à 0.7.2

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-09-02 18:33:57 +02:00
tuxgyver 8e40812f76 v0.7.1 : diagnostics non-bloquants, DNS hors tunnel détecté
- Nouveau diagnostic : signale un DNS non couvert par les IPs autorisées
  sur un tunnel scindé (résolution forcée via une interface qui n'a pas
  de route vers ce serveur).
- Corrige le test de connexion, l'analyse DNS et la réparation DNS qui
  gelaient l'application (sondes lancées sur le thread graphique).
- Corrige le CHANGELOG absent de l'exécutable compilé (page « À propos »
  vide) et le badge de latence bloqué sur « hors ligne » quand l'ICMP est
  filtré alors que le tunnel fonctionne.
- wgsecure.iss installe désormais WireGuard for Windows automatiquement.
2026-09-01 22:05:20 +02:00
tuxgyver ce4df4edb4 fix: changelog embarqué manquant, badge hors-ligne trompeur, installeur WireGuard
- CHANGELOG.md n'était pas empaqueté par PyInstaller (datas=[]) et son
  chemin, calculé depuis __file__, ne survivait pas à l'extraction
  onefile : la page « À propos » restait vide une fois compilée. Le
  fichier est désormais embarqué (--add-data) et son chemin bascule sur
  sys._MEIPASS en mode frozen.
- Le badge de latence se basait uniquement sur un ping ICMP vers
  l'endpoint : de nombreux serveurs/pare-feux le bloquent alors que le
  tunnel WireGuard fonctionne, d'où « hors ligne » permanent. Repli sur
  l'âge du dernier handshake réel quand l'ICMP échoue.
- wgsecure.iss installe désormais WireGuard for Windows en silencieux
  (prérequis manquant jusqu'ici), au même titre que le VC++
  Redistributable ; make installer-deps télécharge les deux binaires.
2026-09-01 21:23:12 +02:00
tuxgyver 8c09c02362 v0.7.0 : instance unique, handshake ré-affiché, sudoers fiabilisé, À propos refaite
- Instance unique : un second lancement réveille l'instance active.
- Autostart et reconnexion auto activés par défaut (nouvelle installation).
- Page « À propos » refaite en 5 onglets (contenu séparé dans app_info.py).
- Corrige le handshake/RX-TX qui ne s'affichaient plus (wg show sans élévation).
- Corrige le diagnostic sudo trompeur (sondes qui ne matchaient jamais les règles).
- Corrige make setup-sudoers bloqué hors session graphique (pkexec -> sudo), idempotent.
- Corrige le README : Kill Switch inexistant retiré, ordre d'élévation réel documenté.
2026-09-01 19:18:24 +02:00
tuxgyver 6251a3ea8e chore(release): v0.6.0 2026-09-01 15:09:38 +02:00
tuxgyver 1f555eafc7 feat: test de handshake réel sans monter le tunnel
Le diagnostic s'arrêtait sur « le port UDP ne rejette rien ». C'est le maximum
qu'une sonde aveugle puisse dire : un serveur WireGuard ignore silencieusement
tout paquet non authentifié, si bien qu'un port non redirigé, une clé inconnue
du serveur et un serveur en parfaite santé produisent exactement la même
absence de réponse. Le tunnel n'étant pas monté, les étapes suivantes étaient
sautées et le rapport concluait « chaîne validée » sur une configuration qui
n'avait aucune chance de négocier.

WGSecure construit désormais un vrai message d'initiation (Noise_IKpsk2_25519_
ChaChaPoly_BLAKE2s) et interprète la réponse. Le serveur ne répond que si notre
clé publique statique lui est connue et si sa propre clé est celle que nous
croyons : une réponse prouve la configuration, et son déchiffrement dit quelle
clé pré-partagée est en jeu. Aucun tunnel n'est monté, aucun privilège demandé,
aucun état conservé.

Quand le serveur reste muet, une seconde tentative part depuis le port du
serveur. S'il répond alors, c'est qu'un équipement en chemin n'accepte le
trafic que si le port source égale le port de destination — une règle courante
sur FortiGate, dont l'objet Service porte un udp-portrange 51820:51820. Un
client WireGuard émettant depuis un port aléatoire ne peut jamais la
satisfaire, et rien nulle part ne le disait.

Corrige aussi le verdict rendu quand le tunnel est inactif : « chaîne validée »
laissait croire que tout avait été vérifié, alors que les étapes sautées sont
précisément celles qui échouent. Le rapport les nomme désormais.

La fenêtre d'administration revient à 720x600 et les encarts posés au-dessus
des sous-onglets disparaissent, où ils répétaient ce que les sous-onglets
annoncent déjà.
2026-09-01 15:09:28 +02:00
tuxgyver c4a9c59fec chore(release): v0.5.0 2026-09-01 14:25:24 +02:00
tuxgyver 1ad1df361e feat: option clé pré-partagée et refonte des onglets du panneau admin
La présence d'une clé pré-partagée se devinait au fait que le champ soit
rempli. Un serveur qui n'en utilise pas — le cas par défaut de WireGuard —
déclenchait donc un avertissement à chaque diagnostic, et une clé oubliée dans
le champ finissait écrite dans la configuration alors que le serveur n'en
attendait aucune, ce qui casse le handshake aussi sûrement qu'une clé
manquante. Une case à cocher tranche désormais, et le diagnostic distingue les
quatre états au lieu d'un avertissement unique.

Le drapeau vaut None par défaut et non False : _merge() recopie le défaut dans
toute configuration antérieure, et False aurait désactivé la PSK d'un tunnel
qui fonctionnait.

Refonte des onglets, qui passaient de sept à cinq :

- WireGuard et Clés se chevauchaient — la clé publique du serveur se saisissait
  dans l'un pendant que l'assistant qui la produit vivait dans l'autre, et les
  quatre façons de sortir une configuration étaient réparties entre les deux.
  Fusionnés en sous-onglets Tunnel, Clés, Profils & fichiers.
- Les trois tests s'empilaient sur une page unique où le rapport de diagnostic
  se retrouvait comprimé. Chacun a son sous-onglet.
- MFA et Sécurité répondent à la même question et sont regroupés.
- La section des droits parlait de sudo et de setup-sudoers sous Windows, où
  rien de tout cela n'existe, et concluait « privilèges root » sur un rapport
  simplement vide. Elle vérifie maintenant l'élévation UAC et WireGuard.

Chaque onglet s'ouvre sur un encart expliquant ce qu'on y décide, et les
couleurs — vingt-quatre valeurs en dur, cinq bandeaux sans rapport de teinte,
des blocs de résultat au fond incohérent — passent par app/ui/theme.py.
2026-09-01 14:25:15 +02:00
tuxgyver 97bf27be16 chore(release): v0.4.6 2026-09-01 13:36:02 +02:00
tuxgyver f6c3622e1d fix: handshake bloqué par la passerelle dans les IPs autorisées
Quand la passerelle qui mène au serveur appartient à une plage des « IPs
autorisées », wg-quick pose sa route vers le tunnel avec une métrique de 0.
Elle bat la route de lien de la carte réseau : la passerelle n'est plus
joignable que par le tunnel, alors que le tunnel a besoin d'elle pour sortir.
Le tunnel montait, l'interface existait, et plus aucun paquet de handshake ne
quittait la machine.

Le diagnostic détecte désormais ce cas via _next_hop() (ip route get sous
Linux, Find-NetRoute sous Windows) et le classe en échec, au lieu du simple
avertissement sur l'imprimante et le NAS qui n'en disait pas la gravité.

Corrige aussi le rapport de test de connexion : un QLabel que la mise en page
comprimait à quelques lignes tronquées, remplacé par une zone de texte
défilante ; la fenêtre d'administration, figée à 700x600, devient
redimensionnable.
2026-09-01 13:35:56 +02:00
tuxgyverandClaude Opus 5 9d785c00cc chore(release): v0.4.5
fix: la clé pré-partagée n'était écrite dans aucune config client

L'assistant de génération produisait une PresharedKey affichée à l'écran mais
stockée nulle part, et l'import d'un .conf ignorait la ligne. Face à un serveur
qui en attend une, le tunnel montait et l'interface existait — sans qu'aucun
handshake n'aboutisse jamais. La PSK devient un champ à part entière.

fix: options de ligne de commande wireguard.exe incorrectes sous Windows

/installtunnel et /uninstalltunnel n'existent pas ; les vrais verbes sont
/installtunnelservice et /uninstalltunnelservice. S'y ajoutaient l'absence de
résolution du chemin d'installation (WireGuard n'est pas dans le PATH),
l'absence totale d'élévation UAC alors que ces commandes l'exigent, et une
détection d'installation qui sondait une application graphique avec --help.

feat: diagnostic de bout en bout de la chaîne de connexion

Le bouton de test s'arrêtait à la joignabilité UDP et concluait « serveur
joignable » sur un tunnel qui n'échangeait rien. Il déroule désormais quatorze
étapes, de la configuration locale jusqu'au DNS dans le tunnel, et désigne
l'étape qui bloque.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 15:41:43 +02:00
tuxgyver 09724f4e4f chore(release): v0.4.3 2026-08-31 14:22:24 +02:00
tuxgyverandClaude Opus 5 32b44ec323 fix: fenêtres console Windows apparaissant en boucle
Sous Windows, tout processus console lancé depuis une application GUI ouvre
une fenêtre cmd. WGSecure interroge `ping` et `wireguard` à chaque cycle de
rafraîchissement du statut, ce qui faisait clignoter des fenêtres DOS en
permanence pendant toute la durée d'exécution.

Tous les appels externes passent par run_command() : le drapeau
CREATE_NO_WINDOW y est désormais posé sous Windows, doublé d'un startupinfo
SW_HIDE pour les lanceurs qui l'ignorent. Sans effet sous Linux.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 14:19:58 +02:00
tuxgyver 60e85b1c20 chore(release): v0.4.2 2026-08-31 13:58:52 +02:00
tuxgyver 84868526fc maj 2026-08-31 13:48:41 +02:00
tuxgyverandClaude Sonnet 5 790d302645 fix: binaire Windows crashait au lancement (Qt platform plugin manquant)
Le hook PyQt6 de pyinstaller-hooks-contrib échoue silencieusement à
localiser Qt6/plugins/platforms quand PyInstaller tourne sous Wine,
donc qwindows.dll n'était jamais embarqué dans l'exe. Résultat :
"This application failed to start because no Qt platform plugin
could be initialized" au premier lancement sur Windows.

On force désormais l'ajout des dossiers platforms/ et styles/ via
--add-data, avec un contrôle préalable que qwindows.dll existe bien
côté Wine.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-31 12:05:11 +02:00
tuxgyver c2ac02ee7b chore(release): v0.4.1 2026-08-31 11:16:04 +02:00
tuxgyver 1b74719204 fix: DNS coupée après arrêt du tunnel, gel UI, dialogues sudo à répétition
- wg-quick down échoue silencieusement si l'interface a déjà disparu
  (crash, kill, veille) et ne retire donc jamais l'entrée DNS posée par
  wg-quick up : la résolution reste pointée sur un résolveur mort.
  Ajout d'un nettoyage DNS inconditionnel (app/core/dns.py) déclenché à
  la connexion, la déconnexion, la fermeture et au démarrage suivant.
- is_connected() se basait sur `wg show`, qui rend un code 0 même en cas
  d'échec de permission pour un utilisateur non-root : l'app se croyait
  déconnectée en permanence et ne démontait donc jamais le tunnel à la
  fermeture. Détection réécrite via sysfs (sans privilèges).
- Connexion/déconnexion et ping tournaient sur le thread Qt : gel de
  l'UI pendant les élévations de privilèges. Déportés dans des
  QThread (app/ui/worker.py).
- Restauration réseau garantie sur toutes les sorties (croix, tray,
  SIGINT/SIGTERM, atexit, exception) via app/core/shutdown.py.
- run_privileged() : la détection "sudo veut un mot de passe" ratait en
  session non-anglophone et sur les comptes ALL=(ALL) ALL ; réécrite
  pour se fier au message d'erreur réel plutôt qu'à `sudo -l`.
- Écriture de la config WireGuard dans /etc/wireguard (root:root 0700)
  passe maintenant par install -D via la chaîne de privilèges complète
  au lieu d'un tee non autorisé par les sudoers.
- Ajout d'un diagnostic des droits (make check-privileges, bouton
  Admin) et mise à jour de setup-sudoers pour couvrir toutes les
  commandes désormais utilisées.
2026-08-31 11:16:04 +02:00
tuxgyver 2fa50a5873 Ajoute tuxmarket.yaml pour l'entrée au store 2026-08-18 20:53:59 +02:00
tuxgyver 36b948425a Windows 2026-07-21 11:05:48 +02:00
tuxgyver d03a75057e Windows 2026-07-21 10:21:13 +02:00
tuxgyver ea2e6d772b update 2026-06-29 10:19:16 +02:00
Johnny 2f9ca6b553 Fix bugs 2026-06-03 09:55:39 +02:00
Johnny b3f0a2eecc Update 2026-06-02 07:34:09 +02:00
Johnny d927afbb87 Update 2026-06-01 23:24:38 +02:00
Johnny d23d0c15be Update 2026-06-01 23:22:18 +02:00
Johnny f061da654d fix 2026-06-01 22:35:37 +02:00
Johnny 0d2646a9ad Initial release 2026-06-01 22:31:22 +02:00
Johnny ab5ba103fe first commit 2026-06-01 22:30:40 +02:00