Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 221527 Details for
Bug 307169
net-im/pidgin: gnome-keyring passwords storing patch
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Use gnome-keyring to store patches
pidgin-gnome-keyring.patch (text/plain), 6.08 KB, created by
Nirbheek Chauhan (RETIRED)
on 2010-02-28 12:01:26 UTC
(
hide
)
Description:
Use gnome-keyring to store patches
Filename:
MIME Type:
Creator:
Nirbheek Chauhan (RETIRED)
Created:
2010-02-28 12:01:26 UTC
Size:
6.08 KB
patch
obsolete
>Index: pidgin-2.6.3/configure.ac >=================================================================== >--- pidgin-2.6.3.orig/configure.ac >+++ pidgin-2.6.3/configure.ac >@@ -1799,6 +1799,20 @@ if test "x$enable_nss" != "xno"; then > [AC_HELP_STRING([--with-nss-libs=PREFIX], [specify location of Mozilla nss3 libs.])], > [with_nss_libs="$withval"]) > >+dnl ####################################################################### >+dnl # Check for gnome-keyring >+dnl #--enable-gnome-keyring=(yes|no) >+dnl ####################################################################### >+AC_ARG_ENABLE(gnome-keyring, >+ AC_HELP_STRING([--enable-gnome-keyring], >+ [use gnome keyring for storing password [default=no]]),, >+ enable_gnome_keyring=no) >+if test "x$enable_gnome_keyring" = "xyes"; then >+ PKG_CHECK_MODULES(PURPLE_KEYRING, >+ gnome-keyring-1, >+ AC_DEFINE(PURPLE_ENABLE_KEYRING, [], [Set if we should use gnome-keyring])) >+fi >+ > > if test -n "$with_nspr_includes" || test -n "$with_nspr_libs" || \ > test -n "$with_nss_includes" || test -n "$with_nss_libs" || >Index: pidgin-2.6.3/libpurple/Makefile.am >=================================================================== >--- pidgin-2.6.3.orig/libpurple/Makefile.am >+++ pidgin-2.6.3/libpurple/Makefile.am >@@ -291,6 +291,7 @@ libpurple_la_LIBADD = \ > $(GLIB_LIBS) \ > $(LIBXML_LIBS) \ > $(NETWORKMANAGER_LIBS) \ >+ $(PURPLE_KEYRING_LIBS) \ > $(INTLLIBS) \ > $(FARSIGHT_LIBS) \ > $(GSTREAMER_LIBS) \ >@@ -306,6 +307,7 @@ AM_CPPFLAGS = \ > $(GLIB_CFLAGS) \ > $(DEBUG_CFLAGS) \ > $(DBUS_CFLAGS) \ >+ $(PURPLE_KEYRING_CFLAGS) \ > $(LIBXML_CFLAGS) \ > $(FARSIGHT_CFLAGS) \ > $(GSTREAMER_CFLAGS) \ >Index: pidgin-2.6.3/libpurple/account.c >=================================================================== >--- pidgin-2.6.3.orig/libpurple/account.c >+++ pidgin-2.6.3/libpurple/account.c >@@ -49,6 +49,13 @@ typedef struct > #define PURPLE_ACCOUNT_GET_PRIVATE(account) \ > ((PurpleAccountPrivate *) (account->priv)) > >+#ifdef PURPLE_ENABLE_KEYRING >+#include <gnome-keyring.h> >+ >+static char * purple_account_get_password_from_keyring (const char *_prpl, const char *_user); >+static gboolean purple_account_set_password_in_keyring (const char *_prpl, const char *_user, const char *password); >+#endif >+ > /* TODO: Should use PurpleValue instead of this? What about "ui"? */ > typedef struct > { >@@ -378,8 +385,13 @@ account_to_xmlnode(PurpleAccount *accoun > if (purple_account_get_remember_password(account) && > ((tmp = purple_account_get_password(account)) != NULL)) > { >+#ifdef PURPLE_ENABLE_KEYRING >+ purple_account_set_password_in_keyring( purple_account_get_protocol_id(account), >+ purple_account_get_username(account), tmp); >+#else > child = xmlnode_new_child(node, "password"); > xmlnode_insert_data(child, tmp, -1); >+#endif > } > > if ((tmp = purple_account_get_alias(account)) != NULL) >@@ -828,17 +840,30 @@ parse_account(xmlnode *node) > } > > ret = purple_account_new(name, _purple_oscar_convert(name, protocol_id)); /* XXX: */ >- g_free(name); >- g_free(protocol_id); >- >- /* Read the password */ >- child = xmlnode_get_child(node, "password"); >- if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL)) >+ gboolean got_pwd = FALSE; >+#ifdef PURPLE_ENABLE_KEYRING >+ data = purple_account_get_password_from_keyring(protocol_id, name); >+ if (data) > { >+ got_pwd = TRUE; > purple_account_set_remember_password(ret, TRUE); > purple_account_set_password(ret, data); > g_free(data); > } >+#endif >+ if (!got_pwd) >+ { >+ /* Read the password */ >+ child = xmlnode_get_child(node, "password"); >+ if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL)) >+ { >+ purple_account_set_remember_password(ret, TRUE); >+ purple_account_set_password(ret, data); >+ g_free(data); >+ } >+ } >+ g_free(name); >+ g_free(protocol_id); > > /* Read the alias */ > child = xmlnode_get_child(node, "alias"); >@@ -2873,3 +2898,60 @@ purple_accounts_uninit(void) > purple_signals_disconnect_by_handle(handle); > purple_signals_unregister_by_instance(handle); > } >+ >+#ifdef PURPLE_ENABLE_KEYRING >+static char * >+purple_account_get_password_from_keyring(const char *_prpl, const char *_user) >+{ >+ GnomeKeyringNetworkPasswordData *found_item; >+ GnomeKeyringResult result; >+ GList *matches; >+ char *password; >+ >+ matches = NULL; >+ >+ result = gnome_keyring_find_network_password_sync ( >+ _user, /* user */ >+ NULL, /* domain */ >+ "gaim.local", /* server */ >+ NULL, /* object */ >+ _prpl, /* protocol */ >+ NULL, /* authtype */ >+ 1863, /* port */ >+ &matches); >+ >+ if (result != GNOME_KEYRING_RESULT_OK) >+ return NULL; >+ >+ g_assert (matches != NULL && matches->data != NULL); >+ >+ found_item = (GnomeKeyringNetworkPasswordData *) matches->data; >+ >+ password = g_strdup (found_item->password); >+ >+ gnome_keyring_network_password_list_free (matches); >+ >+ return password; >+} >+ >+static gboolean >+purple_account_set_password_in_keyring (const char *_prpl, const char *_user, const char *_password) >+{ >+ GnomeKeyringResult result; >+ guint32 item_id; >+ >+ result = gnome_keyring_set_network_password_sync ( >+ NULL, /* default keyring */ >+ _user, /* user */ >+ NULL, /* domain */ >+ "gaim.local", /* server */ >+ NULL, /* object */ >+ _prpl, /* protocol */ >+ NULL, /* authtype */ >+ 1863, /* port */ >+ _password, /* password */ >+ &item_id); >+ >+ return result == GNOME_KEYRING_RESULT_OK; >+} >+#endif
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 307169
: 221527