NetworkManager: fix openconnect for console tools

This patch allows `nmcli` and `nmtui to work correctly with
openconnect. This is dony by hard-coding the openconnect binary location.

see #25915

authored by timor and committed by obadz 1d56c2fa a49c2366

+33 -1
+4 -1
pkgs/tools/networking/network-manager/default.nix
··· 3 3 , libgcrypt, dnsmasq, bluez5, readline 4 4 , gobjectIntrospection, modemmanager, openresolv, libndp, newt, libsoup 5 5 , ethtool, iputils, gnused, coreutils, file, inetutils, kmod, jansson, libxslt 6 - , python3Packages, docbook_xsl, fetchpatch }: 6 + , python3Packages, docbook_xsl, fetchpatch, openconnect }: 7 7 8 8 stdenv.mkDerivation rec { 9 9 name = "network-manager-${version}"; ··· 41 41 --replace /bin/sed ${gnused}/bin/sed 42 42 substituteInPlace data/NetworkManager.service.in \ 43 43 --replace /bin/kill ${coreutils}/bin/kill 44 + substituteInPlace clients/common/nm-vpn-helpers.c \ 45 + --subst-var-by openconnect ${openconnect} 44 46 # to enable link-local connections 45 47 configureFlags="$configureFlags --with-udev-dir=$out/lib/udev" 46 48 ''; ··· 76 78 name = "null-dereference.patch"; 77 79 url = "https://github.com/NetworkManager/NetworkManager/commit/4e8eddd100bbc8429806a70620c90b72cfd29cb1.patch"; 78 80 }) 81 + ./openconnect_helper_path.patch 79 82 ]; 80 83 81 84 buildInputs = [ systemd libgudev libnl libuuid polkit ppp libndp
+29
pkgs/tools/networking/network-manager/openconnect_helper_path.patch
··· 1 + diff --git a/clients/common/nm-vpn-helpers.c b/clients/common/nm-vpn-helpers.c 2 + index 15611c45c..4a7444d3a 100644 3 + --- a/clients/common/nm-vpn-helpers.c 4 + +++ b/clients/common/nm-vpn-helpers.c 5 + @@ -203,23 +203,8 @@ nm_vpn_openconnect_authenticate_helper (const char *host, 6 + gboolean ret; 7 + char **strv = NULL, **iter; 8 + char *argv[4]; 9 + - const char *path; 10 + - const char *const DEFAULT_PATHS[] = { 11 + - "/sbin/", 12 + - "/usr/sbin/", 13 + - "/usr/local/sbin/", 14 + - "/bin/", 15 + - "/usr/bin/", 16 + - "/usr/local/bin/", 17 + - NULL, 18 + - }; 19 + - 20 + - path = nm_utils_file_search_in_paths ("openconnect", "/usr/sbin/openconnect", DEFAULT_PATHS, 21 + - G_FILE_TEST_IS_EXECUTABLE, NULL, NULL, error); 22 + - if (!path) 23 + - return FALSE; 24 + 25 + - argv[0] = (char *) path; 26 + + argv[0] = "@openconnect@/bin/openconnect"; 27 + argv[1] = "--authenticate"; 28 + argv[2] = (char *) host; 29 + argv[3] = NULL;