Automatically enable the pidgin-gnome-keyring plugin so that account
passwords can be saved in the system keyring rather than as cleartext
in ~/.purple/accounts.xml
See PSARC/2016/385 for more details.
This patch will not be submitted upsteam.
--- pidgin-2.11.0/configure.ac.orig 2016-08-17 07:39:38.956248926 -0700
+++ pidgin-2.11.0/configure.ac 2016-08-17 07:41:48.502561778 -0700
@@ -2469,6 +2469,20 @@
LDFLAGS="$orig_LDFLAGS"
fi
+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(GAIM_KEYRING,
+ gnome-keyring-1,
+ AC_DEFINE(GAIM_ENABLE_KEYRING, [], [Set if we should use gnome-keyring]))
+fi
+
AC_MSG_CHECKING(for me pot o' gold)
AC_MSG_RESULT(no)
AC_CHECK_FUNCS(gethostid lrand48 timegm)
--- pidgin-2.11.0/libpurple/core.c.orig 2016-08-17 08:59:22.042425765 -0700
+++ pidgin-2.11.0/libpurple/core.c 2016-08-17 09:48:56.584454917 -0700
@@ -161,6 +161,12 @@
purple_connections_init();
purple_accounts_init();
+
+ /* Potentially load the gnome keyring plugin here because we need to
+ * have had a couple signals registered by purple_accounts_init() first.
+ */
+ purple_plugin_load_gnome_keyring_plugin();
+
purple_savedstatuses_init();
purple_notify_init();
purple_certificate_init();
--- pidgin-2.11.0/libpurple/plugin.h.orig 2016-08-17 09:08:26.448023611 -0700
+++ pidgin-2.11.0/libpurple/plugin.h 2016-08-17 09:49:20.857940837 -0700
@@ -733,6 +733,12 @@
*/
void purple_plugin_action_free(PurplePluginAction *action);
+/**
+ * Potentially load the gnome keyring plugin.
+ */
+
+void purple_plugin_load_gnome_keyring_plugin(void);
+
#ifdef __cplusplus
}
#endif
--- pidgin-2.11.0/libpurple/plugin.c.orig 2016-08-17 07:42:35.456904439 -0700
+++ pidgin-2.11.0/libpurple/plugin.c 2016-08-17 12:05:29.285059614 -0700
@@ -54,6 +54,10 @@
} PurplePluginIpcCommand;
+#ifdef GAIM_ENABLE_KEYRING
+static PurplePlugin *gnome_keyring_plugin = NULL;
+#endif
+
static GList *search_paths = NULL;
static GList *plugins = NULL;
static GList *loaded_plugins = NULL;
@@ -207,6 +211,10 @@
gchar *basename = NULL;
gboolean (*purple_init_plugin)(PurplePlugin *);
+#ifdef GAIM_ENABLE_KEYRING
+ gboolean is_gnome_keyring = FALSE;
+#endif
+
purple_debug_misc("plugins", "probing %s\n", filename);
g_return_val_if_fail(filename != NULL, NULL);
@@ -216,6 +224,12 @@
/* If this plugin has already been probed then exit */
basename = purple_plugin_get_basename(filename);
plugin = purple_plugins_find_with_basename(basename);
+
+#ifdef GAIM_ENABLE_KEYRING
+ if (!strcmp(basename, "gnome-keyring"))
+ is_gnome_keyring = TRUE;
+#endif
+
g_free(basename);
if (plugin != NULL)
{
@@ -484,6 +498,13 @@
}
}
+#ifdef GAIM_ENABLE_KEYRING
+ if (is_gnome_keyring) {
+ purple_debug_misc("plugins", "setting gnome_keyring_plugin.\n");
+ gnome_keyring_plugin = plugin;
+ }
+#endif
+
return plugin;
#else
return NULL;
@@ -1673,3 +1694,15 @@
g_free(action->label);
g_free(action);
}
+
+void
+purple_plugin_load_gnome_keyring_plugin()
+{
+#ifdef GAIM_ENABLE_KEYRING
+ purple_debug_misc("plugins", "purple_plugin_load_gnome_keyring_plugin called.\n");
+ if (gnome_keyring_plugin != NULL) {
+ purple_debug_misc("plugins", "purple_plugin_load_gnome_keyring_plugin: calling purple_plugin_load.\n");
+ purple_plugin_load(gnome_keyring_plugin);
+ }
+#endif
+}