From d8818953011f47094cf4277733b17f72a84fc44d Mon Sep 17 00:00:00 2001 From: nathaninline Date: Sat, 8 Aug 2026 20:05:18 +0200 Subject: [PATCH] Le drapeau de neutralisation du pare-feu passe cote commun Declare dans sys_firewall_windows.go, il n'etait qu'ECRIT par les tests sur les autres plateformes : staticcheck le signalait mort (U1000) et la CI cassait. Il vit desormais dans sys_network.go, ou setLANExposure le lit sur les trois plateformes. --- internal/ajean/sys_firewall_other.go | 4 ---- internal/ajean/sys_firewall_windows.go | 6 ------ internal/ajean/sys_network.go | 15 +++++++++++++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/internal/ajean/sys_firewall_other.go b/internal/ajean/sys_firewall_other.go index c0e2904..59def08 100644 --- a/internal/ajean/sys_firewall_other.go +++ b/internal/ajean/sys_firewall_other.go @@ -8,10 +8,6 @@ package ajean // n'en pilote donc aucun : « inconnu » dit exactement ça, et l'interface // n'affiche pas d'avertissement de pare-feu là où il n'y a rien à avertir. -// firewallInert n'a de rôle que sous Windows (voir sys_firewall_windows.go) ; -// il existe ici pour que le code de test reste commun aux trois plateformes. -var firewallInert bool - func firewallOpen(int) error { return nil } func firewallClose(int) error { return nil } diff --git a/internal/ajean/sys_firewall_windows.go b/internal/ajean/sys_firewall_windows.go index bf570b3..8857a30 100644 --- a/internal/ajean/sys_firewall_windows.go +++ b/internal/ajean/sys_firewall_windows.go @@ -29,12 +29,6 @@ func firewallRuleName(port int) string { // netsh exécute netsh sans faire clignoter de console (hideCmd) et renvoie sa // sortie combinée. -// -// firewallInert coupe tout appel à netsh. Positionné par les tests : une suite -// qui laisse une règle entrante derrière elle est un effet de bord inacceptable, -// et sur un runner élevé elle ouvrirait le port pour de bon. -var firewallInert bool - func netsh(args ...string) (string, error) { if firewallInert { return "", fmt.Errorf("pare-feu non piloté") diff --git a/internal/ajean/sys_network.go b/internal/ajean/sys_network.go index 1c2271f..ac245ea 100644 --- a/internal/ajean/sys_network.go +++ b/internal/ajean/sys_network.go @@ -25,6 +25,14 @@ import ( // faire (poser une règle de pare-feu exige les droits administrateur, que // l'installation d'AJEAN ne réclame pas). +// firewallInert coupe tout pilotage du pare-feu. Positionné par les tests : une +// suite qui laisse une règle entrante derrière elle est un effet de bord +// inacceptable, et sur un runner élevé elle ouvrirait le port pour de bon. +// Déclaré ici, et non dans sys_firewall_windows.go, pour être LU sur les trois +// plateformes (sinon il n'est qu'écrit par les tests hors Windows, ce que +// staticcheck signale à juste titre comme une variable morte). +var firewallInert bool + // hostLocalOnly est l'adresse d'écoute « cette machine seulement ». const hostLocalOnly = "127.0.0.1" @@ -84,9 +92,12 @@ func setLANExposure(on bool) (netStatus, error) { return netStatus{}, err } port := LLMPort() - if on { + switch { + case firewallInert: + // rien : voir la note sur firewallInert + case on: _ = firewallOpen(port) - } else { + default: _ = firewallClose(port) } return networkStatus(), nil