[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