parent
86eace12c6
commit
4ca7c28463
@ -1,471 +0,0 @@
|
|||||||
From 40ee847d32c11d0bc7c1b06fefa9a9ef8e2b0570 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thomas Haller <thaller@redhat.com>
|
|
||||||
Date: Mon, 13 Feb 2017 12:30:16 +0100
|
|
||||||
Subject: [PATCH 1/4] service: avoid strlen() for checking whether a string is
|
|
||||||
empty
|
|
||||||
|
|
||||||
Possibly the compiler can optimize it not to evaluate the full string length,
|
|
||||||
just to verify whether the string is empty. Still, I think it's bad style.
|
|
||||||
|
|
||||||
(cherry picked from commit 2a4a4a49d8b97e3cbe37307f6b6c1053df946ce4)
|
|
||||||
---
|
|
||||||
src/nm-openvpn-service.c | 26 +++++++++++++-------------
|
|
||||||
1 file changed, 13 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/nm-openvpn-service.c b/src/nm-openvpn-service.c
|
|
||||||
index d7bd29f..d6e36a6 100644
|
|
||||||
--- a/src/nm-openvpn-service.c
|
|
||||||
+++ b/src/nm-openvpn-service.c
|
|
||||||
@@ -1406,7 +1406,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
|
|
||||||
/* Cipher */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_CIPHER);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--cipher");
|
|
||||||
add_openvpn_arg (args, tmp);
|
|
||||||
}
|
|
||||||
@@ -1419,7 +1419,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
|
|
||||||
/* Keysize */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_KEYSIZE);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--keysize");
|
|
||||||
if (!add_openvpn_arg_int (args, tmp)) {
|
|
||||||
g_set_error (error,
|
|
||||||
@@ -1440,25 +1440,25 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
|
|
||||||
/* TA */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_TA);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--tls-auth");
|
|
||||||
add_openvpn_arg_utf8safe (args, tmp);
|
|
||||||
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_TA_DIR);
|
|
||||||
- if (tmp && strlen (tmp))
|
|
||||||
+ if (tmp && tmp[0])
|
|
||||||
add_openvpn_arg (args, tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* tls-remote */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_TLS_REMOTE);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--tls-remote");
|
|
||||||
add_openvpn_arg (args, tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* verify-x509-name */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_VERIFY_X509_NAME);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
const char *name;
|
|
||||||
gs_free char *type = NULL;
|
|
||||||
|
|
||||||
@@ -1483,7 +1483,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
|
|
||||||
/* remote-cert-tls */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_REMOTE_CERT_TLS);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--remote-cert-tls");
|
|
||||||
add_openvpn_arg (args, tmp);
|
|
||||||
}
|
|
||||||
@@ -1500,7 +1500,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
if (!connection_type_is_tls_mode (connection_type)) {
|
|
||||||
/* Ignore --reneg-sec option if we are not in TLS mode (as enabled
|
|
||||||
* by --client below). openvpn will error out otherwise, see bgo#749050. */
|
|
||||||
- } else if (tmp && strlen (tmp)) {
|
|
||||||
+ } else if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--reneg-sec");
|
|
||||||
if (!add_openvpn_arg_int (args, tmp)) {
|
|
||||||
g_set_error (error,
|
|
||||||
@@ -1532,7 +1532,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
|
|
||||||
/* TUN MTU size */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_TUNNEL_MTU);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--tun-mtu");
|
|
||||||
if (!add_openvpn_arg_int (args, tmp)) {
|
|
||||||
g_set_error (error,
|
|
||||||
@@ -1546,7 +1546,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
|
|
||||||
/* fragment size */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_FRAGMENT_SIZE);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--fragment");
|
|
||||||
if (!add_openvpn_arg_int (args, tmp)) {
|
|
||||||
g_set_error (error,
|
|
||||||
@@ -1620,12 +1620,12 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
add_cert_args (args, s_vpn);
|
|
||||||
} else if (!strcmp (connection_type, NM_OPENVPN_CONTYPE_STATIC_KEY)) {
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_STATIC_KEY);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--secret");
|
|
||||||
add_openvpn_arg_utf8safe (args, tmp);
|
|
||||||
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_STATIC_KEY_DIRECTION);
|
|
||||||
- if (tmp && strlen (tmp))
|
|
||||||
+ if (tmp && tmp[0])
|
|
||||||
add_openvpn_arg (args, tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1659,7 +1659,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
add_openvpn_arg (args, "--auth-user-pass");
|
|
||||||
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_CA);
|
|
||||||
- if (tmp && strlen (tmp)) {
|
|
||||||
+ if (tmp && tmp[0]) {
|
|
||||||
add_openvpn_arg (args, "--ca");
|
|
||||||
add_openvpn_arg_utf8safe (args, tmp);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
||||||
|
|
||||||
From 1a21babccc3eb77c5b4a2953e7c45aaec670b120 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thomas Haller <thaller@redhat.com>
|
|
||||||
Date: Mon, 13 Feb 2017 11:31:40 +0100
|
|
||||||
Subject: [PATCH 2/4] service: minor refactoring of nm_find_openvpn()
|
|
||||||
|
|
||||||
And rename to openvpn_binary_find_exepath().
|
|
||||||
The prefix "openvpn_binary_" will be used for related functions.
|
|
||||||
|
|
||||||
(cherry picked from commit 05cb6356bb4d27fb1c2ca5f8a7bfdf23fe424f0c)
|
|
||||||
---
|
|
||||||
src/nm-openvpn-service.c | 41 ++++++++++++++++++++---------------------
|
|
||||||
1 file changed, 20 insertions(+), 21 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/nm-openvpn-service.c b/src/nm-openvpn-service.c
|
|
||||||
index d6e36a6..d88ed19 100644
|
|
||||||
--- a/src/nm-openvpn-service.c
|
|
||||||
+++ b/src/nm-openvpn-service.c
|
|
||||||
@@ -188,6 +188,25 @@ _LOGD_enabled (void)
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
+static const char *
|
|
||||||
+openvpn_binary_find_exepath (void)
|
|
||||||
+{
|
|
||||||
+ static const char *paths[] = {
|
|
||||||
+ "/usr/sbin/openvpn",
|
|
||||||
+ "/sbin/openvpn",
|
|
||||||
+ "/usr/local/sbin/openvpn",
|
|
||||||
+ };
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < G_N_ELEMENTS (paths); i++) {
|
|
||||||
+ if (g_file_test (paths[i], G_FILE_TEST_EXISTS))
|
|
||||||
+ return paths[i];
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*****************************************************************************/
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
pids_pending_data_free (PidsPendingData *pid_data)
|
|
||||||
{
|
|
||||||
@@ -886,26 +905,6 @@ connection_type_is_tls_mode (const char *connection_type)
|
|
||||||
|| strcmp (connection_type, NM_OPENVPN_CONTYPE_PASSWORD_TLS) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static const char *
|
|
||||||
-nm_find_openvpn (void)
|
|
||||||
-{
|
|
||||||
- static const char *openvpn_binary_paths[] = {
|
|
||||||
- "/usr/sbin/openvpn",
|
|
||||||
- "/sbin/openvpn",
|
|
||||||
- "/usr/local/sbin/openvpn",
|
|
||||||
- NULL
|
|
||||||
- };
|
|
||||||
- const char **openvpn_binary = openvpn_binary_paths;
|
|
||||||
-
|
|
||||||
- while (*openvpn_binary != NULL) {
|
|
||||||
- if (g_file_test (*openvpn_binary, G_FILE_TEST_EXISTS))
|
|
||||||
- break;
|
|
||||||
- openvpn_binary++;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return *openvpn_binary;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void
|
|
||||||
add_openvpn_arg (GPtrArray *args, const char *arg)
|
|
||||||
{
|
|
||||||
@@ -1154,7 +1153,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/* Find openvpn */
|
|
||||||
- openvpn_binary = nm_find_openvpn ();
|
|
||||||
+ openvpn_binary = openvpn_binary_find_exepath ();
|
|
||||||
if (!openvpn_binary) {
|
|
||||||
g_set_error_literal (error,
|
|
||||||
NM_VPN_PLUGIN_ERROR,
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
||||||
|
|
||||||
From adc7dd5148c12917eee1c2c92ddb605e2ecd6b2c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thomas Haller <thaller@redhat.com>
|
|
||||||
Date: Mon, 13 Feb 2017 12:30:26 +0100
|
|
||||||
Subject: [PATCH 3/4] service: for OpenVPN 2.4 and newer, handle --tls-remote
|
|
||||||
option via --verify-x509-name
|
|
||||||
|
|
||||||
The tls-remote option got removed from OpenVPN 2.4. This requires users
|
|
||||||
to fix their existing configurations to use verify-x509-name instead.
|
|
||||||
|
|
||||||
Using tls-remote on a recent OpenVPN binary thus fails to establish
|
|
||||||
the connection, which is an annoyance for the user. Let the plugin
|
|
||||||
automatically convert the "tls-remote $NAME" option to "verify-x509-name
|
|
||||||
$NAME name". Note that the two options are not entirely equivalent, thus
|
|
||||||
the is a chance that this wrongly rejects a server that would have worked
|
|
||||||
before, or ever worse, that it wronlgy accepts a server that would have
|
|
||||||
been rejected.
|
|
||||||
|
|
||||||
But in most common cases, the workaround should work fine.
|
|
||||||
The user is still strongly encouraged to update his configuration.
|
|
||||||
|
|
||||||
https://bugzilla.gnome.org/show_bug.cgi?id=776045
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=1421241
|
|
||||||
(cherry picked from commit f7421ef277222bd640c432afefc21ef5a98477bc)
|
|
||||||
---
|
|
||||||
src/nm-openvpn-service.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++--
|
|
||||||
1 file changed, 85 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/nm-openvpn-service.c b/src/nm-openvpn-service.c
|
|
||||||
index d88ed19..fa59537 100644
|
|
||||||
--- a/src/nm-openvpn-service.c
|
|
||||||
+++ b/src/nm-openvpn-service.c
|
|
||||||
@@ -70,6 +70,13 @@ G_DEFINE_TYPE (NMOpenvpnPlugin, nm_openvpn_plugin, NM_TYPE_VPN_SERVICE_PLUGIN)
|
|
||||||
|
|
||||||
#define NM_OPENVPN_PLUGIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_OPENVPN_PLUGIN, NMOpenvpnPluginPrivate))
|
|
||||||
|
|
||||||
+typedef enum {
|
|
||||||
+ OPENVPN_BINARY_VERSION_INVALID,
|
|
||||||
+ OPENVPN_BINARY_VERSION_UNKNOWN,
|
|
||||||
+ OPENVPN_BINARY_VERSION_2_3_OR_OLDER,
|
|
||||||
+ OPENVPN_BINARY_VERSION_2_4_OR_NEWER,
|
|
||||||
+} OpenvpnBinaryVersion;
|
|
||||||
+
|
|
||||||
typedef struct {
|
|
||||||
char *default_username;
|
|
||||||
char *username;
|
|
||||||
@@ -205,6 +212,64 @@ openvpn_binary_find_exepath (void)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static OpenvpnBinaryVersion
|
|
||||||
+openvpn_binary_detect_version (const char *exepath)
|
|
||||||
+{
|
|
||||||
+ gs_free char *s_stdout = NULL;
|
|
||||||
+ const char *s;
|
|
||||||
+ int exit_code;
|
|
||||||
+ int n;
|
|
||||||
+
|
|
||||||
+ g_return_val_if_fail (exepath && exepath[0] == '/', OPENVPN_BINARY_VERSION_UNKNOWN);
|
|
||||||
+
|
|
||||||
+ if (!g_spawn_sync (NULL,
|
|
||||||
+ (char *[]) { (char *) exepath, "--version", NULL },
|
|
||||||
+ NULL,
|
|
||||||
+ G_SPAWN_STDERR_TO_DEV_NULL,
|
|
||||||
+ NULL,
|
|
||||||
+ NULL,
|
|
||||||
+ &s_stdout,
|
|
||||||
+ NULL,
|
|
||||||
+ &exit_code,
|
|
||||||
+ NULL))
|
|
||||||
+ return OPENVPN_BINARY_VERSION_UNKNOWN;
|
|
||||||
+
|
|
||||||
+ if ( !WIFEXITED (exit_code)
|
|
||||||
+ || WEXITSTATUS (exit_code) != 1) {
|
|
||||||
+ /* expect return code 1 (OPENVPN_EXIT_STATUS_USAGE) */
|
|
||||||
+ return OPENVPN_BINARY_VERSION_UNKNOWN;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* the output for --version starts with title_string, which starts with PACKAGE_STRING,
|
|
||||||
+ * which looks like "OpenVPN 2.#...". Do a strict parsing here... */
|
|
||||||
+ if ( !s_stdout
|
|
||||||
+ || !g_str_has_prefix (s_stdout, "OpenVPN 2."))
|
|
||||||
+ return OPENVPN_BINARY_VERSION_UNKNOWN;
|
|
||||||
+ s = &s_stdout[NM_STRLEN ("OpenVPN 2.")];
|
|
||||||
+
|
|
||||||
+ if (!g_ascii_isdigit (s[0]))
|
|
||||||
+ return OPENVPN_BINARY_VERSION_UNKNOWN;
|
|
||||||
+
|
|
||||||
+ n = 0;
|
|
||||||
+ do {
|
|
||||||
+ if (n > G_MAXINT / 100)
|
|
||||||
+ return OPENVPN_BINARY_VERSION_UNKNOWN;
|
|
||||||
+ n = (n * 10) + (s[0] - '0');
|
|
||||||
+ } while (g_ascii_isdigit ((++s)[0]));
|
|
||||||
+
|
|
||||||
+ if (n <= 3)
|
|
||||||
+ return OPENVPN_BINARY_VERSION_2_3_OR_OLDER;
|
|
||||||
+ return OPENVPN_BINARY_VERSION_2_4_OR_NEWER;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static OpenvpnBinaryVersion
|
|
||||||
+openvpn_binary_detect_version_cached (const char *exepath, OpenvpnBinaryVersion *cached)
|
|
||||||
+{
|
|
||||||
+ if (G_UNLIKELY (*cached == OPENVPN_BINARY_VERSION_INVALID))
|
|
||||||
+ *cached = openvpn_binary_detect_version (exepath);
|
|
||||||
+ return *cached;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
@@ -1119,12 +1184,14 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
gboolean dev_type_is_tap;
|
|
||||||
char *stmp;
|
|
||||||
const char *defport, *proto_tcp;
|
|
||||||
+ const char *tls_remote = NULL;
|
|
||||||
const char *nm_openvpn_user, *nm_openvpn_group, *nm_openvpn_chroot;
|
|
||||||
gs_free char *bus_name = NULL;
|
|
||||||
NMSettingVpn *s_vpn;
|
|
||||||
const char *connection_type;
|
|
||||||
gint64 v_int64;
|
|
||||||
char sbuf_64[65];
|
|
||||||
+ OpenvpnBinaryVersion openvpn_binary_version = OPENVPN_BINARY_VERSION_INVALID;
|
|
||||||
|
|
||||||
s_vpn = nm_connection_get_setting_vpn (connection);
|
|
||||||
if (!s_vpn) {
|
|
||||||
@@ -1451,8 +1518,17 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
/* tls-remote */
|
|
||||||
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_TLS_REMOTE);
|
|
||||||
if (tmp && tmp[0]) {
|
|
||||||
- add_openvpn_arg (args, "--tls-remote");
|
|
||||||
- add_openvpn_arg (args, tmp);
|
|
||||||
+ if (openvpn_binary_detect_version_cached (openvpn_binary, &openvpn_binary_version) != OPENVPN_BINARY_VERSION_2_4_OR_NEWER) {
|
|
||||||
+ _LOGW ("the tls-remote option is deprecated and removed from OpenVPN 2.4. Update your connection to use verify-x509-name");
|
|
||||||
+ add_openvpn_arg (args, "--tls-remote");
|
|
||||||
+ add_openvpn_arg (args, tmp);
|
|
||||||
+ } else {
|
|
||||||
+ _LOGW ("the tls-remote option is deprecated and removed from OpenVPN 2.4. For compatibility, the plugin uses \"verify-x509-name\" \"%s\" \"name\" instead. Update your connection to use verify-x509-name", tmp);
|
|
||||||
+ add_openvpn_arg (args, "--verify-x509-name");
|
|
||||||
+ add_openvpn_arg (args, tmp);
|
|
||||||
+ add_openvpn_arg (args, "name");
|
|
||||||
+ }
|
|
||||||
+ tls_remote = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* verify-x509-name */
|
|
||||||
@@ -1461,6 +1537,13 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
|
|
||||||
const char *name;
|
|
||||||
gs_free char *type = NULL;
|
|
||||||
|
|
||||||
+ if (tls_remote) {
|
|
||||||
+ g_set_error (error, NM_VPN_PLUGIN_ERROR,
|
|
||||||
+ NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS,
|
|
||||||
+ _("Invalid configuration with tls-remote and verify-x509-name."));
|
|
||||||
+ return FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
name = strchr (tmp, ':');
|
|
||||||
if (name) {
|
|
||||||
type = g_strndup (tmp, name - tmp);
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
||||||
|
|
||||||
From 11049e7c888fcc74896b34ea86f09d38a561fc35 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thomas Haller <thaller@redhat.com>
|
|
||||||
Date: Mon, 13 Feb 2017 12:56:27 +0100
|
|
||||||
Subject: [PATCH 4/4] properties: discourage use of tls-remote in GUI
|
|
||||||
|
|
||||||
Mark the entry as "error" when selecting the deprecated
|
|
||||||
tls-remote option.
|
|
||||||
|
|
||||||
This is to make it more apparent to the user that he
|
|
||||||
should avoid this setting.
|
|
||||||
|
|
||||||
(cherry picked from commit 1c2986b8881b3b28d493f66cc804da12712cc2a7)
|
|
||||||
---
|
|
||||||
properties/auth-helpers.c | 14 ++++++++++++--
|
|
||||||
properties/import-export.c | 2 +-
|
|
||||||
properties/nm-openvpn-dialog.ui | 2 ++
|
|
||||||
3 files changed, 15 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/properties/auth-helpers.c b/properties/auth-helpers.c
|
|
||||||
index 4d1e1ce..2f880dd 100644
|
|
||||||
--- a/properties/auth-helpers.c
|
|
||||||
+++ b/properties/auth-helpers.c
|
|
||||||
@@ -1211,7 +1211,7 @@ populate_tls_remote_mode_entry_combo (GtkEntry* entry, GtkComboBox *box,
|
|
||||||
|
|
||||||
gtk_list_store_append (store, &iter);
|
|
||||||
gtk_list_store_set (store, &iter,
|
|
||||||
- TLS_REMOTE_MODE_COL_NAME, _("Verify subject partially (legacy mode)"),
|
|
||||||
+ TLS_REMOTE_MODE_COL_NAME, _("Verify subject partially (legacy mode, strongly discouraged)"),
|
|
||||||
TLS_REMOTE_MODE_COL_VALUE, TLS_REMOTE_MODE_LEGACY,
|
|
||||||
-1);
|
|
||||||
|
|
||||||
@@ -1250,6 +1250,7 @@ tls_remote_changed (GtkWidget *widget, gpointer user_data)
|
|
||||||
GtkWidget *entry, *combo, *ok_button;
|
|
||||||
GtkTreeIter iter;
|
|
||||||
gboolean entry_enabled = TRUE, entry_has_error = FALSE;
|
|
||||||
+ gboolean legacy_tls_remote = FALSE;
|
|
||||||
|
|
||||||
entry = GTK_WIDGET (gtk_builder_get_object (builder, "tls_remote_entry"));
|
|
||||||
combo = GTK_WIDGET (gtk_builder_get_object (builder, "tls_remote_mode_combo"));
|
|
||||||
@@ -1272,6 +1273,7 @@ tls_remote_changed (GtkWidget *widget, gpointer user_data)
|
|
||||||
|
|
||||||
entry_enabled = TRUE;
|
|
||||||
entry_has_error = !subject || !subject[0];
|
|
||||||
+ legacy_tls_remote = nm_streq (tls_remote_mode, TLS_REMOTE_MODE_LEGACY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1280,9 +1282,17 @@ tls_remote_changed (GtkWidget *widget, gpointer user_data)
|
|
||||||
widget_set_error (entry);
|
|
||||||
gtk_widget_set_sensitive (ok_button, FALSE);
|
|
||||||
} else {
|
|
||||||
- widget_unset_error (entry);
|
|
||||||
+ if (legacy_tls_remote) {
|
|
||||||
+ /* selecting tls-remote is not an error, but strongly discouraged. I wish
|
|
||||||
+ * there would be a warning-class as well. Anyway, mark the widget as
|
|
||||||
+ * erroneous, although this doesn't make the connection invalid (which
|
|
||||||
+ * is an ugly inconsistency). */
|
|
||||||
+ widget_set_error (entry);
|
|
||||||
+ } else
|
|
||||||
+ widget_unset_error (entry);
|
|
||||||
gtk_widget_set_sensitive (ok_button, TRUE);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
diff --git a/properties/import-export.c b/properties/import-export.c
|
|
||||||
index 1993026..7b42e0b 100644
|
|
||||||
--- a/properties/import-export.c
|
|
||||||
+++ b/properties/import-export.c
|
|
||||||
@@ -1256,7 +1256,7 @@ do_import (const char *path, const char *contents, gsize contents_len, GError **
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NM_IN_STRSET (params[0], NMV_OVPN_TAG_VERIFY_X509_NAME)) {
|
|
||||||
- const char *type = "subject";
|
|
||||||
+ const char *type = NM_OPENVPN_VERIFY_X509_NAME_TYPE_SUBJECT;
|
|
||||||
gs_free char *item = NULL;
|
|
||||||
|
|
||||||
if (!args_params_check_nargs_minmax (params, 1, 2, &line_error))
|
|
||||||
diff --git a/properties/nm-openvpn-dialog.ui b/properties/nm-openvpn-dialog.ui
|
|
||||||
index b2ca176..5558b70 100644
|
|
||||||
--- a/properties/nm-openvpn-dialog.ui
|
|
||||||
+++ b/properties/nm-openvpn-dialog.ui
|
|
||||||
@@ -1918,6 +1918,8 @@ When enabled, connection will only succeed if the server certificate matches som
|
|
||||||
Matching can either apply to the whole certificate subject (all the fields),
|
|
||||||
or just the Common Name (CN field).
|
|
||||||
|
|
||||||
+The legacy option tls-remote is deprecated and removed from OpenVPN 2.4 and newer. Do not use it anymore.
|
|
||||||
+
|
|
||||||
config: verify-x509-name subject-or-name [mode]
|
|
||||||
config (legacy mode): tls-remote subject-or-name</property>
|
|
||||||
<property name="model">model9</property>
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
@ -1 +1 @@
|
|||||||
SHA512 (NetworkManager-openvpn-1.2.8.tar.xz) = e6d64106cd93f91d292a6b2346dc31317e1056d2bbaf09a376c84ffaaa8fd584f92999865bdf52531b44de7ae144e1ae9271b9efc564d99f8569b0d059ab8019
|
SHA512 (NetworkManager-openvpn-1.2.10.tar.xz) = d597e8b3d2935c6874a283d2a036c511e1f3625aed7f5e6fbf5c77d3c3f5f6d170b19fe69202d74b2b1ac6d47d3704d3177598fd1889a19003fed98416ea6521
|
||||||
|
Loading…
Reference in new issue