Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
home:Alexander_Naumov:SLE-12:Update
pidgin
pidgin-gnome-keyring.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pidgin-gnome-keyring.patch of Package pidgin
diff -Naur pidgin-2.10.5.orig/configure.ac pidgin-2.10.5/configure.ac --- pidgin-2.10.5.orig/configure.ac 2012-07-06 13:14:25.678713118 +0200 +++ pidgin-2.10.5/configure.ac 2012-07-06 13:20:39.253322728 +0200 @@ -1858,6 +1858,20 @@ [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" || diff -Naur pidgin-2.10.5.orig/libpurple/account.c pidgin-2.10.5/libpurple/account.c --- pidgin-2.10.5.orig/libpurple/account.c 2012-07-06 13:14:25.678713118 +0200 +++ pidgin-2.10.5/libpurple/account.c 2012-07-06 13:20:39.273323295 +0200 @@ -49,6 +49,13 @@ #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 { @@ -379,8 +386,13 @@ 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) @@ -875,17 +887,30 @@ } 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"); @@ -3245,3 +3270,60 @@ 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 diff -Naur pidgin-2.10.5.orig/libpurple/Makefile.am pidgin-2.10.5/libpurple/Makefile.am --- pidgin-2.10.5.orig/libpurple/Makefile.am 2012-07-06 13:14:25.678713118 +0200 +++ pidgin-2.10.5/libpurple/Makefile.am 2012-07-06 13:20:39.257322842 +0200 @@ -305,6 +305,7 @@ $(GLIB_LIBS) \ $(LIBXML_LIBS) \ $(NETWORKMANAGER_LIBS) \ + $(PURPLE_KEYRING_LIBS) \ $(INTLLIBS) \ $(FARSTREAM_LIBS) \ $(GSTREAMER_LIBS) \ @@ -321,6 +322,7 @@ $(GLIB_CFLAGS) \ $(DEBUG_CFLAGS) \ $(DBUS_CFLAGS) \ + $(PURPLE_KEYRING_CFLAGS) \ $(LIBXML_CFLAGS) \ $(FARSTREAM_CFLAGS) \ $(GSTREAMER_CFLAGS) \
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor