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