[network-manager-vpnc] auth-dialog: port to libsecret



commit 3c80a4e83a52387ba2d7b4823bb143dbd8676440
Author: Dan Winship <danw gnome org>
Date:   Wed Feb 27 14:12:18 2013 +0100

    auth-dialog: port to libsecret
    
    https://bugzilla.gnome.org/show_bug.cgi?id=694307

 auth-dialog/Makefile.am |    4 +-
 auth-dialog/main.c      |   72 ++++++++++++++++++++++++++++-------------------
 configure.ac            |    6 ++--
 properties/nm-vpnc.c    |    1 -
 4 files changed, 48 insertions(+), 35 deletions(-)
---
diff --git a/auth-dialog/Makefile.am b/auth-dialog/Makefile.am
index 2ea97fe..441465c 100644
--- a/auth-dialog/Makefile.am
+++ b/auth-dialog/Makefile.am
@@ -7,7 +7,7 @@ nm_vpnc_auth_dialog_CPPFLAGS = \
        $(GLIB_CFLAGS) \
        $(GTK_CFLAGS) \
        $(NMGTK_CFLAGS) \
-       $(GNOMEKEYRING_CFLAGS) \
+       $(LIBSECRET_CFLAGS) \
        -DICONDIR=\""$(datadir)/pixmaps"\" \
        -DBINDIR=\""$(bindir)"\" \
        -DG_DISABLE_DEPRECATED \
@@ -22,7 +22,7 @@ nm_vpnc_auth_dialog_LDADD = \
        $(GTK_LIBS) \
        $(NM_LIBS) \
        $(NMGTK_LIBS) \
-       $(GNOMEKEYRING_LIBS)
+       $(LIBSECRET_LIBS)
 
 @INTLTOOL_DESKTOP_RULE@
 desktopdir = $(datadir)/applications
diff --git a/auth-dialog/main.c b/auth-dialog/main.c
index ad7ffb1..178facf 100644
--- a/auth-dialog/main.c
+++ b/auth-dialog/main.c
@@ -29,8 +29,9 @@
 #include <stdlib.h>
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
-#include <gnome-keyring.h>
-#include <gnome-keyring-memory.h>
+
+#define SECRET_API_SUBJECT_TO_CHANGE
+#include <libsecret/secret.h>
 
 #include <nm-setting-vpn.h>
 #include <nm-setting-connection.h>
@@ -43,34 +44,47 @@
 #define KEYRING_SN_TAG "setting-name"
 #define KEYRING_SK_TAG "setting-key"
 
+static const SecretSchema network_manager_secret_schema = {
+       "org.freedesktop.NetworkManager.Connection",
+       SECRET_SCHEMA_DONT_MATCH_NAME,
+       {
+               { KEYRING_UUID_TAG, SECRET_SCHEMA_ATTRIBUTE_STRING },
+               { KEYRING_SN_TAG, SECRET_SCHEMA_ATTRIBUTE_STRING },
+               { KEYRING_SK_TAG, SECRET_SCHEMA_ATTRIBUTE_STRING },
+               { NULL, 0 },
+       }
+};
+
 #define UI_KEYFILE_GROUP "VPN Plugin UI"
 
 static char *
 keyring_lookup_secret (const char *uuid, const char *secret_name)
 {
-       GList *found_list = NULL;
-       GnomeKeyringResult ret;
-       GnomeKeyringFound *found;
+       GHashTable *attrs;
+       GList *list;
        char *secret = NULL;
 
-       ret = gnome_keyring_find_itemsv_sync (GNOME_KEYRING_ITEM_GENERIC_SECRET,
-                                             &found_list,
-                                             KEYRING_UUID_TAG,
-                                             GNOME_KEYRING_ATTRIBUTE_TYPE_STRING,
-                                             uuid,
-                                             KEYRING_SN_TAG,
-                                             GNOME_KEYRING_ATTRIBUTE_TYPE_STRING,
-                                             NM_SETTING_VPN_SETTING_NAME,
-                                             KEYRING_SK_TAG,
-                                             GNOME_KEYRING_ATTRIBUTE_TYPE_STRING,
-                                             secret_name,
-                                             NULL);
-       if (ret == GNOME_KEYRING_RESULT_OK && found_list) {
-               found = g_list_nth_data (found_list, 0);
-               secret = gnome_keyring_memory_strdup (found->secret);
+       attrs = secret_attributes_build (&network_manager_secret_schema,
+                                        KEYRING_UUID_TAG, uuid,
+                                        KEYRING_SN_TAG, NM_SETTING_VPN_SETTING_NAME,
+                                        KEYRING_SK_TAG, secret_name,
+                                        NULL);
+
+       list = secret_service_search_sync (NULL, &network_manager_secret_schema, attrs,
+                                          SECRET_SEARCH_ALL | SECRET_SEARCH_UNLOCK | 
SECRET_SEARCH_LOAD_SECRETS,
+                                          NULL, NULL);
+       if (list && list->data) {
+               SecretItem *item = list->data;
+               SecretValue *value = secret_item_get_secret (item);
+
+               if (value) {
+                       secret = g_strdup (secret_value_get (value, NULL));
+                       secret_value_unref (value);
+               }
        }
 
-       gnome_keyring_found_list_free (found_list);
+       g_list_free_full (list, g_object_unref);
+       g_hash_table_unref (attrs);
        return secret;
 }
 
@@ -130,7 +144,7 @@ get_secrets (const char *vpn_uuid,
        if (   !(upw_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED)
            && !(upw_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)) {
                if (in_upw)
-                       upw = gnome_keyring_memory_strdup (in_upw);
+                       upw = g_strdup (in_upw);
                else
                        upw = keyring_lookup_secret (vpn_uuid, NM_VPNC_KEY_XAUTH_PASSWORD);
 
@@ -142,7 +156,7 @@ get_secrets (const char *vpn_uuid,
        if (   !(gpw_flags & NM_SETTING_SECRET_FLAG_NOT_SAVED)
            && !(gpw_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)) {
                if (in_gpw)
-                       gpw = gnome_keyring_memory_strdup (in_gpw);
+                       gpw = g_strdup (in_gpw);
                else
                        gpw = keyring_lookup_secret (vpn_uuid, NM_VPNC_KEY_SECRET);
 
@@ -244,8 +258,8 @@ get_secrets (const char *vpn_uuid,
        /* Show the dialog */
        success = nma_vpn_password_dialog_run_and_block (dialog);
        if (success) {
-               *out_upw = gnome_keyring_memory_strdup (nma_vpn_password_dialog_get_password (dialog));
-               *out_gpw = gnome_keyring_memory_strdup (nma_vpn_password_dialog_get_password_secondary 
(dialog));
+               *out_upw = g_strdup (nma_vpn_password_dialog_get_password (dialog));
+               *out_gpw = g_strdup (nma_vpn_password_dialog_get_password_secondary (dialog));
        }
 
        gtk_widget_hide (GTK_WIDGET (dialog));
@@ -253,8 +267,8 @@ get_secrets (const char *vpn_uuid,
 
  out:
        g_free (prompt);
-       gnome_keyring_memory_free (upw);
-       gnome_keyring_memory_free (gpw);
+       g_free (upw);
+       g_free (gpw);
 
        return success;
 }
@@ -382,8 +396,8 @@ main (int argc, char *argv[])
                        printf ("%s\n%s\n", NM_VPNC_KEY_SECRET, group_password);
                printf ("\n\n");
 
-               gnome_keyring_memory_free (password);
-               gnome_keyring_memory_free (group_password);
+               g_free (password);
+               g_free (group_password);
 
                /* for good measure, flush stdout since Kansas is going Bye-Bye */
                fflush (stdout);
diff --git a/configure.ac b/configure.ac
index 583b819..eb2ba39 100644
--- a/configure.ac
+++ b/configure.ac
@@ -76,9 +76,9 @@ if test x"$with_gnome" != xno; then
        AC_SUBST(NMGTK_CFLAGS)
        AC_SUBST(NMGTK_LIBS)
 
-       PKG_CHECK_MODULES(GNOMEKEYRING, gnome-keyring-1)
-       AC_SUBST(GNOMEKEYRING_CFLAGS)
-       AC_SUBST(GNOMEKEYRING_LIBS)
+       PKG_CHECK_MODULES(LIBSECRET, libsecret-unstable)
+       AC_SUBST(LIBSECRET_CFLAGS)
+       AC_SUBST(LIBSECRET_LIBS)
 fi
 
 PKG_CHECK_MODULES(NM,
diff --git a/properties/nm-vpnc.c b/properties/nm-vpnc.c
index c6353f5..aefe869 100644
--- a/properties/nm-vpnc.c
+++ b/properties/nm-vpnc.c
@@ -38,7 +38,6 @@
 
 #include <glib/gi18n-lib.h>
 #include <gtk/gtk.h>
-#include <gnome-keyring-memory.h>
 
 #define NM_VPN_API_SUBJECT_TO_CHANGE
 


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