From 50187ece858db0566cc8bf055e77f4689e0503b0 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Fri, 4 Sep 2026 09:50:20 +0000 Subject: [PATCH] =?UTF-8?q?[ADD]=20vpn=20install=20:=20v=C3=A9rifier=20la?= =?UTF-8?q?=20pr=C3=A9sence=20de=20vpnc-script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit openconnect appelle vpnc-script pour poser les routes et le DNS. Il vient d'un paquet distinct, dont le nom change de famille en famille et qui l'installe à des endroits différents. C'est un FICHIER qu'on cherche, pas un binaire du PATH : le contrôle des binaires ne peut donc pas le voir. Sans lui, la session s'ouvre, openconnect démarre, et l'interface tun n'apparaît jamais. La panne se manifeste trois étages au-dessus du paquet absent, sur un symptôme qui ne l'accuse pas. L'installateur nomme désormais le paquet à poser, par famille de distribution. --- EN --- openconnect calls vpnc-script to lay down routes and DNS. It ships in a separate package whose name varies by family and which installs it at different paths. It is a FILE we look for, not a binary on the PATH, so the binary check cannot see it. Without it the session opens, openconnect starts, and the tun interface never appears. The failure surfaces three stages above the missing package, on a symptom that does not accuse it. The installer now names the package to install, per distribution family. Assisted-by: Claude Opus 5 --- script/install/install_vpn.sh | 37 +++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/script/install/install_vpn.sh b/script/install/install_vpn.sh index 60e95aa..9837c83 100755 --- a/script/install/install_vpn.sh +++ b/script/install/install_vpn.sh @@ -153,14 +153,47 @@ binaries_for() { esac } +# Le script que openconnect appelle pour poser routes et DNS. Il vient d'un +# paquet à part, dont le nom change de famille en famille, et il s'installe à +# des endroits différents : c'est un FICHIER qu'on cherche, pas un binaire du +# PATH, donc `binaries_for` ne peut pas le voir. +# +# Sans lui, la session s'ouvre, openconnect se lance, et l'interface tun +# n'apparaît jamais : le montage échoue trois étages plus haut, sur un +# symptôme qui n'accuse pas le paquet manquant. +VPNC_SCRIPT_PATHS=" +/etc/vpnc/vpnc-script +/usr/share/vpnc-scripts/vpnc-script +/usr/libexec/openconnect/vpnc-script +/usr/lib/openconnect/vpnc-script +" + +verify_vpnc_script() { + local fam="$1" path package + for path in ${VPNC_SCRIPT_PATHS}; do + if [ -x "$path" ]; then + log "vpnc-script : ${path}" + return 0 + fi + done + case "$fam" in + rhel|suse) package="vpnc-script" ;; + *) package="vpnc-scripts" ;; + esac + die "vpnc-script introuvable — installer le paquet ${package}" +} + verify() { - local driver="$1" missing="" + local driver="$1" fam="$2" missing="" for b in $(binaries_for "$driver"); do command -v "$b" >/dev/null || missing="${missing} ${b}" done if [ -n "$missing" ]; then die "toujours absents après installation :${missing}" fi + if [ "$driver" = "openconnect" ]; then + verify_vpnc_script "$fam" + fi log "vérifié : tout est en place pour ${driver}" } @@ -180,7 +213,7 @@ main() { for driver in ${drivers}; do log "── ${driver} ──" install_packages "$fam" "$(packages_for "$driver" "$fam")" - verify "$driver" + verify "$driver" "$fam" done disable_autostart log "Terminé. Monter un tunnel : ./script/vpn/vpn.py up --profile "