[PATCH] Use new openconnect_{get, free}_supported_protocols API instead of static list

Daniel Lenski daniel.lenski at finalphasesystems.com
Sun Apr 9 02:00:11 PDT 2017


---
 auth-dialog/main.c                        |  8 ++++----
 properties/nm-openconnect-dialog.ui       |  6 ------
 properties/nm-openconnect-editor-plugin.c | 21 ++++++++++++++++++---
 properties/nm-openconnect-editor.c        | 25 +++++++++++++++++++++----
 4 files changed, 43 insertions(+), 17 deletions(-)

diff --git a/auth-dialog/main.c b/auth-dialog/main.c
index 508c8f3..28929c7 100644
--- a/auth-dialog/main.c
+++ b/auth-dialog/main.c
@@ -1073,12 +1073,12 @@ static int get_config (auth_ui_data *ui_data,
 	}
 
 	protocol = g_hash_table_lookup (options, NM_OPENCONNECT_KEY_PROTOCOL);
-	if (protocol && strcmp(protocol, "anyconnect")) {
 #if OPENCONNECT_CHECK_VER(5,1)
-		if (openconnect_set_protocol(vpninfo, protocol))
+	if (openconnect_set_protocol(vpninfo, protocol))
+#else
+	if (protocol && strcmp(protocol, "anyconnect"))
 #endif
-			return -EINVAL;
-	}
+		return -EINVAL;
 
 	cafile = g_hash_table_lookup (options, NM_OPENCONNECT_KEY_CACERT);
 	if (cafile)
diff --git a/properties/nm-openconnect-dialog.ui b/properties/nm-openconnect-dialog.ui
index 8f2bb60..dc51f46 100644
--- a/properties/nm-openconnect-dialog.ui
+++ b/properties/nm-openconnect-dialog.ui
@@ -872,11 +872,5 @@
           <!-- column-name protocol_value -->
           <column type="gchararray"/>
         </columns>
-        <data>
-          <row>
-            <col id="0" translatable="yes">Cisco AnyConnect</col>
-            <col id="1" translatable="no">anyconnect</col>
-          </row>
-        </data>
       </object>
 </interface>
diff --git a/properties/nm-openconnect-editor-plugin.c b/properties/nm-openconnect-editor-plugin.c
index c7af0e4..1138f1c 100644
--- a/properties/nm-openconnect-editor-plugin.c
+++ b/properties/nm-openconnect-editor-plugin.c
@@ -359,15 +359,29 @@ notify_plugin_info_set (NMVpnEditorPlugin *plugin,
                         NMVpnPluginInfo *plugin_info)
 {
 	OpenconnectEditorPluginPrivate *priv = OPENCONNECT_EDITOR_PLUGIN_GET_PRIVATE (plugin);
-	const char *supported_protocols;
 	guint i, j;
 
 	if (!plugin_info)
 		return;
 
-	supported_protocols = nm_vpn_plugin_info_lookup_property (plugin_info, "openconnect", "supported-protocols");
-
 	g_strfreev (priv->supported_protocols);
+
+#if OPENCONNECT_CHECK_VER(5,5)
+	struct oc_vpn_proto *protos, *p;
+
+	if ((i = openconnect_get_supported_protocols(&protos)) < 0)
+		priv->supported_protocols = g_new0(gchar *, 1);
+	else {
+		priv->supported_protocols = g_new0(gchar *, i+1);
+		for (i=0, p=protos; p && p->name; p++) {
+			priv->supported_protocols[i] = g_strdup(p->name);
+		}
+		openconnect_free_supported_protocols(protos);
+	}
+
+#else
+	const char *supported_protocols = nm_vpn_plugin_info_lookup_property (plugin_info, "openconnect", "supported-protocols");
+
 	priv->supported_protocols = supported_protocols
 	    ? g_strsplit_set (supported_protocols, ",", -1)
 	    : g_new0 (char *, 1);
@@ -381,6 +395,7 @@ notify_plugin_info_set (NMVpnEditorPlugin *plugin,
 			priv->supported_protocols[i++] = priv->supported_protocols[j];
 	}
 	priv->supported_protocols[i] = NULL;
+#endif
 }
 
 static char **
diff --git a/properties/nm-openconnect-editor.c b/properties/nm-openconnect-editor.c
index fba9fd9..b4ad947 100644
--- a/properties/nm-openconnect-editor.c
+++ b/properties/nm-openconnect-editor.c
@@ -217,19 +217,36 @@ init_token_ui (OpenconnectEditor *self,
 static gboolean
 init_protocol_combo_options (GtkComboBox *protocol_combo)
 {
-#if OPENCONNECT_CHECK_VER(5,1)
 	GtkListStore *protocol_combo_list = GTK_LIST_STORE (gtk_combo_box_get_model (protocol_combo));
 	GtkTreeIter iter;
 
+#if OPENCONNECT_CHECK_VER(5,5)
+	struct oc_vpn_proto *protos, *p;
+	openconnect_get_supported_protocols(&protos);
+	for (p=protos; p && p->name; p++) {
+		gtk_list_store_append(protocol_combo_list, &iter);
+		gtk_list_store_set(protocol_combo_list, &iter,
+						   0, p->pretty_name,
+						   1, p->name,
+						   -1);
+	}
+	openconnect_free_supported_protocols(protos);
+#else
+	gtk_list_store_append(protocol_combo_list, &iter);
+	gtk_list_store_set(protocol_combo_list, &iter,
+					   0, _("Cisco AnyConnect"),
+					   1, "anyconnect",
+					   -1);
+#  if OPENCONNECT_CHECK_VER(5,1)
 	gtk_list_store_append(protocol_combo_list, &iter);
 	gtk_list_store_set(protocol_combo_list, &iter,
 					   0, _("Juniper/Pulse Network Connect"),
 					   1, "nc",
 					   -1);
-	return TRUE;
-#else
-	return FALSE;
+#  endif
 #endif
+
+	return OPENCONNECT_CHECK_VER(5,1);
 }
 
 static gboolean
-- 
2.7.4




More information about the openconnect-devel mailing list