summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-04-20 16:41:47 +0200
committerThomas Haller <thaller@redhat.com>2016-04-22 14:23:55 +0200
commit97334c6fb3cfb24da9c7c112113e304ffa0f4bd7 (patch)
tree8695329b8b5183fa93dfb83cafdd0680fe6e3a31
parentdf0583abd4ac1565e3c88ee773f555482debde99 (diff)
downloadnetwork-manager-applet-97334c6fb3cfb24da9c7c112113e304ffa0f4bd7.tar.gz
applet: get VPN auth-dialog via NMVpnPluginInfo instead of manually loading keyfile
https://bugzilla.gnome.org/show_bug.cgi?id=765329
-rw-r--r--src/applet-vpn-request.c59
1 files changed, 8 insertions, 51 deletions
diff --git a/src/applet-vpn-request.c b/src/applet-vpn-request.c
index f83ef5a1..3395eb96 100644
--- a/src/applet-vpn-request.c
+++ b/src/applet-vpn-request.c
@@ -169,66 +169,23 @@ find_auth_dialog_binary (const char *service,
gboolean *out_hints_supported,
GError **error)
{
- GDir *dir;
- char *prog = NULL;
- const char *f;
- gboolean hints_supported = FALSE;
+ const char *auth_dialog;
+ gs_unref_object NMVpnPluginInfo *plugin = NULL;
- dir = g_dir_open (VPN_NAME_FILES_DIR, 0, NULL);
- if (!dir) {
- g_set_error (error,
- NM_SECRET_AGENT_ERROR,
- NM_SECRET_AGENT_ERROR_FAILED,
- "Failed to open VPN plugin file configuration directory " VPN_NAME_FILES_DIR);
- return NULL;
- }
-
- while (prog == NULL && (f = g_dir_read_name (dir)) != NULL) {
- char *path;
- GKeyFile *keyfile;
-
- if (!g_str_has_suffix (f, ".name"))
- continue;
-
- path = g_strdup_printf ("%s/%s", VPN_NAME_FILES_DIR, f);
-
- keyfile = g_key_file_new ();
- if (g_key_file_load_from_file (keyfile, path, 0, NULL)) {
- char *thisservice;
+ plugin = nm_vpn_plugin_info_new_search_file (NULL, service);
- thisservice = g_key_file_get_string (keyfile, "VPN Connection", "service", NULL);
- if (g_strcmp0 (thisservice, service) == 0) {
- prog = g_key_file_get_string (keyfile, "GNOME", "auth-dialog", NULL);
- hints_supported = g_key_file_get_boolean (keyfile, "GNOME", "supports-hints", NULL);
- }
- g_free (thisservice);
- }
- g_key_file_free (keyfile);
- g_free (path);
- }
- g_dir_close (dir);
-
- if (prog == NULL) {
+ auth_dialog = plugin ? nm_vpn_plugin_info_get_auth_dialog (plugin) : NULL;
+ if (!auth_dialog) {
g_set_error (error,
NM_SECRET_AGENT_ERROR,
NM_SECRET_AGENT_ERROR_FAILED,
"Could not find the authentication dialog for VPN connection type '%s'",
service);
- } else if (!g_path_is_absolute (prog)) {
- char *prog_basename;
-
- /* Remove any path component, then reconstruct path to the auth
- * dialog in LIBEXECDIR.
- */
- prog_basename = g_path_get_basename (prog);
- g_free (prog);
- prog = g_strdup_printf ("%s/%s", LIBEXECDIR, prog_basename);
- g_free (prog_basename);
-
- *out_hints_supported = hints_supported;
+ return NULL;
}
- return prog;
+ *out_hints_supported = nm_vpn_plugin_info_supports_hints (plugin);
+ return g_strdup (auth_dialog);
}
static void