[NetworkManager-openvpn: 1/3] support for remote-random-hostname parameter



commit 64c9877db25b2f3c3f77e64693dfb25229917cbf
Author: Alex Forrow <alex forrow com>
Date:   Wed May 27 23:16:08 2020 +0100

    support for remote-random-hostname parameter

 properties/import-export.c      | 10 ++++++++++
 properties/nm-openvpn-dialog.ui | 29 ++++++++++++++++++++++++-----
 properties/nm-openvpn-editor.c  |  6 ++++++
 shared/nm-service-defines.h     |  1 +
 shared/utils.h                  |  1 +
 src/nm-openvpn-service.c        |  5 +++++
 6 files changed, 47 insertions(+), 5 deletions(-)
---
diff --git a/properties/import-export.c b/properties/import-export.c
index 151a223..816cd3d 100644
--- a/properties/import-export.c
+++ b/properties/import-export.c
@@ -1186,6 +1186,13 @@ do_import (const char *path, const char *contents, gsize contents_len, GError **
                        continue;
                }
 
+               if (NM_IN_STRSET (params[0], NMV_OVPN_TAG_REMOTE_RANDOM_HOSTNAME)) {
+                       if (!args_params_check_nargs_n (params, 0, &line_error))
+                               goto handle_line_error;
+                       setting_vpn_add_data_item (s_vpn, NM_OPENVPN_KEY_REMOTE_RANDOM_HOSTNAME, "yes");
+                       continue;
+               }
+
                if (NM_IN_STRSET (params[0], NMV_OVPN_TAG_TUN_IPV6)) {
                        if (!args_params_check_nargs_n (params, 0, &line_error))
                                goto handle_line_error;
@@ -1948,6 +1955,9 @@ do_export_create (NMConnection *connection, const char *path, GError **error)
        if (nm_streq0 (nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_REMOTE_RANDOM), "yes"))
                args_write_line (f, NMV_OVPN_TAG_REMOTE_RANDOM);
 
+       if (nm_streq0 (nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_REMOTE_RANDOM_HOSTNAME), "yes"))
+               args_write_line (f, NMV_OVPN_TAG_REMOTE_RANDOM_HOSTNAME);
+
        if (nm_streq0 (nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_TUN_IPV6), "yes"))
                args_write_line (f, NMV_OVPN_TAG_TUN_IPV6);
 
diff --git a/properties/nm-openvpn-dialog.ui b/properties/nm-openvpn-dialog.ui
index 98cd828..bd1ad1d 100644
--- a/properties/nm-openvpn-dialog.ui
+++ b/properties/nm-openvpn-dialog.ui
@@ -1316,6 +1316,25 @@ config: remote-random</property>
                     <property name="position">8</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkCheckButton" id="remote_random_hostname_checkbutton">
+                    <property name="label" translatable="yes">_Prefix remote DNS name with random 
string</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="tooltip_text" translatable="yes">Adds a random string to remote DNS name 
to avoid DNS caching.
+config: remote-random-hostname</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">9</property>
+                  </packing>
+                </child>
                 <child>
                   <object class="GtkCheckButton" id="tun_ipv6_checkbutton">
                     <property name="label" translatable="yes">IPv6 tun link</property>
@@ -1332,7 +1351,7 @@ config: tun-ipv6</property>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">True</property>
-                    <property name="position">9</property>
+                    <property name="position">10</property>
                   </packing>
                 </child>
                 <child>
@@ -1379,7 +1398,7 @@ config: ping &lt;n&gt;</property>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">True</property>
-                    <property name="position">10</property>
+                    <property name="position">11</property>
                   </packing>
                 </child>
                 <child>
@@ -1446,7 +1465,7 @@ config: ping-exit | ping-restart &lt;n&gt;</property>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">True</property>
-                    <property name="position">10</property>
+                    <property name="position">12</property>
                   </packing>
                 </child>
                 <child>
@@ -1468,7 +1487,7 @@ config: float</property>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">True</property>
-                    <property name="position">11</property>
+                    <property name="position">13</property>
                   </packing>
                 </child>
                 <child>
@@ -1515,7 +1534,7 @@ config: max-routes &lt;n&gt;</property>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">True</property>
-                    <property name="position">12</property>
+                    <property name="position">14</property>
                   </packing>
                 </child>
               </object>
diff --git a/properties/nm-openvpn-editor.c b/properties/nm-openvpn-editor.c
index 74c9ddf..d1ebe43 100644
--- a/properties/nm-openvpn-editor.c
+++ b/properties/nm-openvpn-editor.c
@@ -677,6 +677,7 @@ static const char *const advanced_keys[] = {
        NM_OPENVPN_KEY_PUSH_PEER_INFO,
        NM_OPENVPN_KEY_REMOTE_CERT_TLS,
        NM_OPENVPN_KEY_REMOTE_RANDOM,
+       NM_OPENVPN_KEY_REMOTE_RANDOM_HOSTNAME,
        NM_OPENVPN_KEY_RENEG_SECONDS,
        NM_OPENVPN_KEY_TA,
        NM_OPENVPN_KEY_TAP_DEV,
@@ -1600,6 +1601,7 @@ advanced_dialog_new (GHashTable *hash, const char *contype)
 
 
        _builder_init_toggle_button (builder, "remote_random_checkbutton", _hash_get_boolean (hash, 
NM_OPENVPN_KEY_REMOTE_RANDOM));
+       _builder_init_toggle_button (builder, "remote_random_hostname_checkbutton", _hash_get_boolean (hash, 
NM_OPENVPN_KEY_REMOTE_RANDOM_HOSTNAME));
        _builder_init_toggle_button (builder, "tun_ipv6_checkbutton", _hash_get_boolean (hash, 
NM_OPENVPN_KEY_TUN_IPV6));
 
        widget = GTK_WIDGET (gtk_builder_get_object (builder, "cipher_combo"));
@@ -1955,6 +1957,10 @@ advanced_dialog_new_hash_from_dialog (GtkWidget *dialog)
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
                g_hash_table_insert (hash, NM_OPENVPN_KEY_REMOTE_RANDOM, g_strdup ("yes"));
 
+       widget = GTK_WIDGET (gtk_builder_get_object (builder, "remote_random_hostname_checkbutton"));
+       if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
+               g_hash_table_insert (hash, NM_OPENVPN_KEY_REMOTE_RANDOM_HOSTNAME, g_strdup ("yes"));
+
        widget = GTK_WIDGET (gtk_builder_get_object (builder, "tun_ipv6_checkbutton"));
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
                g_hash_table_insert (hash, NM_OPENVPN_KEY_TUN_IPV6, g_strdup ("yes"));
diff --git a/shared/nm-service-defines.h b/shared/nm-service-defines.h
index 08337f8..4a858b4 100644
--- a/shared/nm-service-defines.h
+++ b/shared/nm-service-defines.h
@@ -67,6 +67,7 @@
 #define NM_OPENVPN_KEY_REMOTE_CERT_TLS           "remote-cert-tls"
 #define NM_OPENVPN_KEY_REMOTE_IP                 "remote-ip"
 #define NM_OPENVPN_KEY_REMOTE_RANDOM             "remote-random"
+#define NM_OPENVPN_KEY_REMOTE_RANDOM_HOSTNAME    "remote-random-hostname"
 #define NM_OPENVPN_KEY_RENEG_SECONDS             "reneg-seconds"
 #define NM_OPENVPN_KEY_STATIC_KEY                "static-key"
 #define NM_OPENVPN_KEY_STATIC_KEY_DIRECTION      "static-key-direction"
diff --git a/shared/utils.h b/shared/utils.h
index f2882cf..b4f0294 100644
--- a/shared/utils.h
+++ b/shared/utils.h
@@ -65,6 +65,7 @@
 #define NMV_OVPN_TAG_REMOTE             "remote"
 #define NMV_OVPN_TAG_REMOTE_CERT_TLS    "remote-cert-tls"
 #define NMV_OVPN_TAG_REMOTE_RANDOM      "remote-random"
+#define NMV_OVPN_TAG_REMOTE_RANDOM_HOSTNAME "remote-random-hostname"
 #define NMV_OVPN_TAG_RENEG_SEC          "reneg-sec"
 #define NMV_OVPN_TAG_ROUTE              "route"
 #define NMV_OVPN_TAG_RPORT              "rport"
diff --git a/src/nm-openvpn-service.c b/src/nm-openvpn-service.c
index cf0436d..1e86014 100644
--- a/src/nm-openvpn-service.c
+++ b/src/nm-openvpn-service.c
@@ -171,6 +171,7 @@ static const ValidProperty valid_properties[] = {
        { NM_OPENVPN_KEY_HTTP_PROXY_USERNAME,       G_TYPE_STRING, 0, 0, FALSE },
        { NM_OPENVPN_KEY_REMOTE,                    G_TYPE_STRING, 0, 0, FALSE },
        { NM_OPENVPN_KEY_REMOTE_RANDOM,             G_TYPE_BOOLEAN, 0, 0, FALSE },
+       { NM_OPENVPN_KEY_REMOTE_RANDOM_HOSTNAME,    G_TYPE_BOOLEAN, 0, 0, FALSE },
        { NM_OPENVPN_KEY_REMOTE_IP,                 G_TYPE_STRING, 0, 0, TRUE },
        { NM_OPENVPN_KEY_RENEG_SECONDS,             G_TYPE_INT, 0, G_MAXINT, FALSE },
        { NM_OPENVPN_KEY_STATIC_KEY,                G_TYPE_STRING, 0, 0, FALSE },
@@ -1447,6 +1448,10 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
        if (nm_streq0 (tmp, "yes"))
                args_add_strv (args, "--remote-random");
 
+       tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_REMOTE_RANDOM_HOSTNAME);
+       if (nm_streq0 (tmp, "yes"))
+               args_add_strv (args, "--remote-random-hostname");
+
        tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_TUN_IPV6);
        if (nm_streq0 (tmp, "yes"))
                args_add_strv (args, "--tun-ipv6");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]