--- 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