summary refs log tree commit diff
path: root/pkgs/tools
diff options
context:
space:
mode:
authortimor <timor.dd@googlemail.com>2017-05-29 17:56:52 +0200
committerobadz <obadz-git@obadz.com>2017-05-29 17:24:22 +0100
commit1d56c2fa434b2cf875aab4eabcfd69fa89fe25eb (patch)
tree32acec6b1c44064d370bff300f5f084f221688b3 /pkgs/tools
parenta49c2366efad78d296375b7c17065cacee3c3975 (diff)
downloadnixlib-1d56c2fa434b2cf875aab4eabcfd69fa89fe25eb.tar
nixlib-1d56c2fa434b2cf875aab4eabcfd69fa89fe25eb.tar.gz
nixlib-1d56c2fa434b2cf875aab4eabcfd69fa89fe25eb.tar.bz2
nixlib-1d56c2fa434b2cf875aab4eabcfd69fa89fe25eb.tar.lz
nixlib-1d56c2fa434b2cf875aab4eabcfd69fa89fe25eb.tar.xz
nixlib-1d56c2fa434b2cf875aab4eabcfd69fa89fe25eb.tar.zst
nixlib-1d56c2fa434b2cf875aab4eabcfd69fa89fe25eb.zip
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
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/networking/network-manager/default.nix5
-rw-r--r--pkgs/tools/networking/network-manager/openconnect_helper_path.patch29
2 files changed, 33 insertions, 1 deletions
diff --git a/pkgs/tools/networking/network-manager/default.nix b/pkgs/tools/networking/network-manager/default.nix
index 58e5e9343a76..585ffe1d3b19 100644
--- a/pkgs/tools/networking/network-manager/default.nix
+++ b/pkgs/tools/networking/network-manager/default.nix
@@ -3,7 +3,7 @@
 , libgcrypt, dnsmasq, bluez5, readline
 , gobjectIntrospection, modemmanager, openresolv, libndp, newt, libsoup
 , ethtool, iputils, gnused, coreutils, file, inetutils, kmod, jansson, libxslt
-, python3Packages, docbook_xsl, fetchpatch }:
+, python3Packages, docbook_xsl, fetchpatch, openconnect }:
 
 stdenv.mkDerivation rec {
   name    = "network-manager-${version}";
@@ -41,6 +41,8 @@ stdenv.mkDerivation rec {
       --replace /bin/sed ${gnused}/bin/sed
     substituteInPlace data/NetworkManager.service.in \
       --replace /bin/kill ${coreutils}/bin/kill
+    substituteInPlace clients/common/nm-vpn-helpers.c \
+      --subst-var-by openconnect ${openconnect}
     # to enable link-local connections
     configureFlags="$configureFlags --with-udev-dir=$out/lib/udev"
   '';
@@ -76,6 +78,7 @@ stdenv.mkDerivation rec {
       name = "null-dereference.patch";
       url = "https://github.com/NetworkManager/NetworkManager/commit/4e8eddd100bbc8429806a70620c90b72cfd29cb1.patch";
     })
+    ./openconnect_helper_path.patch
   ];
 
   buildInputs = [ systemd libgudev libnl libuuid polkit ppp libndp
diff --git a/pkgs/tools/networking/network-manager/openconnect_helper_path.patch b/pkgs/tools/networking/network-manager/openconnect_helper_path.patch
new file mode 100644
index 000000000000..597fb753e268
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/openconnect_helper_path.patch
@@ -0,0 +1,29 @@
+diff --git a/clients/common/nm-vpn-helpers.c b/clients/common/nm-vpn-helpers.c
+index 15611c45c..4a7444d3a 100644
+--- a/clients/common/nm-vpn-helpers.c
++++ b/clients/common/nm-vpn-helpers.c
+@@ -203,23 +203,8 @@ nm_vpn_openconnect_authenticate_helper (const char *host,
+ 	gboolean ret;
+ 	char **strv = NULL, **iter;
+ 	char *argv[4];
+-	const char *path;
+-	const char *const DEFAULT_PATHS[] = {
+-		"/sbin/",
+-		"/usr/sbin/",
+-		"/usr/local/sbin/",
+-		"/bin/",
+-		"/usr/bin/",
+-		"/usr/local/bin/",
+-		NULL,
+-	};
+-
+-	path = nm_utils_file_search_in_paths ("openconnect", "/usr/sbin/openconnect", DEFAULT_PATHS,
+-	                                      G_FILE_TEST_IS_EXECUTABLE, NULL, NULL, error);
+-	if (!path)
+-		return FALSE;
+ 
+-	argv[0] = (char *) path;
++	argv[0] = "@openconnect@/bin/openconnect";
+ 	argv[1] = "--authenticate";
+ 	argv[2] = (char *) host;
+ 	argv[3] = NULL;