aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-04-17 01:51:06 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-04-17 07:00:26 +0800
commitd9fc5e4912aabfd8db5a81ea9e22c2bba77a632f (patch)
tree2c16a43a7e54957b65f64c74f3a1534810ec61c7 /modules
parentf6d4d6db614917b9c69a6ef540c4aabfa4486f6a (diff)
downloadgsoc2013-evolution-d9fc5e4912aabfd8db5a81ea9e22c2bba77a632f.tar
gsoc2013-evolution-d9fc5e4912aabfd8db5a81ea9e22c2bba77a632f.tar.gz
gsoc2013-evolution-d9fc5e4912aabfd8db5a81ea9e22c2bba77a632f.tar.bz2
gsoc2013-evolution-d9fc5e4912aabfd8db5a81ea9e22c2bba77a632f.tar.lz
gsoc2013-evolution-d9fc5e4912aabfd8db5a81ea9e22c2bba77a632f.tar.xz
gsoc2013-evolution-d9fc5e4912aabfd8db5a81ea9e22c2bba77a632f.tar.zst
gsoc2013-evolution-d9fc5e4912aabfd8db5a81ea9e22c2bba77a632f.zip
Remove backward-compatibility cruft for goa-1.0 < 3.8.
In particular, GOA's Google provider uses OAuth 2.0 now, so we can drop the OAuth 1.0a support in CamelSaslXOAuth which was GMail-specific, and with it the entire "online-accounts" module in Evolution. Evolution no longer links to libgoa-1.0 at all.
Diffstat (limited to 'modules')
-rw-r--r--modules/Makefile.am5
-rw-r--r--modules/online-accounts/Makefile.am34
-rw-r--r--modules/online-accounts/camel-sasl-xoauth.c423
-rw-r--r--modules/online-accounts/camel-sasl-xoauth.h63
-rw-r--r--modules/online-accounts/evolution-online-accounts.c35
5 files changed, 0 insertions, 560 deletions
diff --git a/modules/Makefile.am b/modules/Makefile.am
index 5491a60640..984ad01613 100644
--- a/modules/Makefile.am
+++ b/modules/Makefile.am
@@ -10,10 +10,6 @@ if ENABLE_WEATHER
CONFIG_WEATHER_DIR = cal-config-weather
endif
-if ENABLE_ONLINE_ACCOUNTS
-ONLINE_ACCOUNTS_DIR = online-accounts
-endif
-
if ENABLE_SPAMASSASSIN
SPAMASSASSIN_DIR = spamassassin
endif
@@ -59,7 +55,6 @@ SUBDIRS = \
vcard-inline \
web-inspector \
$(BOGOFILTER_DIR) \
- $(ONLINE_ACCOUNTS_DIR) \
$(SPAMASSASSIN_DIR) \
$(TNEF_ATTACHMENT_DIR) \
$(AUDIO_INLINE_DIR) \
diff --git a/modules/online-accounts/Makefile.am b/modules/online-accounts/Makefile.am
deleted file mode 100644
index dbf222ecdb..0000000000
--- a/modules/online-accounts/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-NULL =
-
-module_LTLIBRARIES = module-online-accounts.la
-
-module_online_accounts_la_CPPFLAGS = \
- $(AM_CPPFLAGS) \
- -I$(top_srcdir) \
- -DG_LOG_DOMAIN=\"evolution-online-accounts\" \
- $(EVOLUTION_DATA_SERVER_CFLAGS) \
- $(GNOME_PLATFORM_CFLAGS) \
- $(GTKHTML_CFLAGS) \
- $(GOA_CFLAGS) \
- $(NULL)
-
-module_online_accounts_la_SOURCES = \
- evolution-online-accounts.c \
- camel-sasl-xoauth.c \
- camel-sasl-xoauth.h \
- $(NULL)
-
-module_online_accounts_la_LIBADD = \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/shell/libeshell.la \
- $(top_builddir)/libemail-engine/libemail-engine.la \
- $(EVOLUTION_DATA_SERVER_LIBS) \
- $(GNOME_PLATFORM_LIBS) \
- $(GTKHTML_LIBS) \
- $(GOA_LIBS) \
- $(NULL)
-
-module_online_accounts_la_LDFLAGS = \
- -module -avoid-version $(NO_UNDEFINED)
-
--include $(top_srcdir)/git.mk
diff --git a/modules/online-accounts/camel-sasl-xoauth.c b/modules/online-accounts/camel-sasl-xoauth.c
deleted file mode 100644
index 1ebe99c439..0000000000
--- a/modules/online-accounts/camel-sasl-xoauth.c
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * camel-sasl-xoauth.c
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- */
-
-/* XXX Yeah, yeah... */
-#define GOA_API_IS_SUBJECT_TO_CHANGE
-
-#include <config.h>
-#include <glib/gi18n-lib.h>
-
-#include <goa/goa.h>
-
-#include <libemail-engine/e-mail-session.h>
-
-#include "camel-sasl-xoauth.h"
-
-#define CAMEL_SASL_XOAUTH_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE \
- ((obj), CAMEL_TYPE_SASL_XOAUTH, CamelSaslXOAuthPrivate))
-
-#define HMAC_SHA1_LEN 20 /* bytes, raw */
-
-struct _CamelSaslXOAuthPrivate {
- gint placeholder;
-};
-
-G_DEFINE_DYNAMIC_TYPE (CamelSaslXOAuth, camel_sasl_xoauth, CAMEL_TYPE_SASL)
-
-static void
-sasl_xoauth_append_request (GByteArray *byte_array,
- const gchar *request_uri,
- const gchar *consumer_key,
- const gchar *consumer_secret,
- const gchar *access_token,
- const gchar *access_token_secret)
-{
- GString *query;
- GString *base_string;
- GString *signing_key;
- GString *request;
- GHashTable *parameters;
- GList *keys;
- GList *iter;
- GHmac *signature_hmac;
- guchar signature_digest[HMAC_SHA1_LEN];
- gsize signature_digest_len;
- gchar *string;
- gpointer key, val;
- guint ii;
-
- const gchar *oauth_keys[] = {
- "oauth_version",
- "oauth_nonce",
- "oauth_timestamp",
- "oauth_consumer_key",
- "oauth_token",
- "oauth_signature_method",
- "oauth_signature"
- };
-
- parameters = g_hash_table_new_full (
- (GHashFunc) g_str_hash,
- (GEqualFunc) g_str_equal,
- (GDestroyNotify) NULL,
- (GDestroyNotify) g_free);
-
- /* Add OAuth parameters. */
-
- key = (gpointer) "oauth_version";
- g_hash_table_insert (parameters, key, g_strdup ("1.0"));
-
- key = (gpointer) "oauth_nonce";
- string = g_strdup_printf ("%u", g_random_int ());
- g_hash_table_insert (parameters, key, string); /* takes ownership */
-
- key = (gpointer) "oauth_timestamp";
- string = g_strdup_printf ("%" G_GINT64_FORMAT, (gint64) time (NULL));
- g_hash_table_insert (parameters, key, string); /* takes ownership */
-
- key = (gpointer) "oauth_consumer_key";
- g_hash_table_insert (parameters, key, g_strdup (consumer_key));
-
- key = (gpointer) "oauth_token";
- g_hash_table_insert (parameters, key, g_strdup (access_token));
-
- key = (gpointer) "oauth_signature_method";
- g_hash_table_insert (parameters, key, g_strdup ("HMAC-SHA1"));
-
- /* Build the query part of the signature base string.
- * Parameters in the query part must be sorted by name. */
-
- query = g_string_sized_new (512);
- keys = g_hash_table_get_keys (parameters);
- keys = g_list_sort (keys, (GCompareFunc) g_strcmp0);
- for (iter = keys; iter != NULL; iter = iter->next) {
- key = iter->data;
- val = g_hash_table_lookup (parameters, key);
-
- if (iter != keys)
- g_string_append_c (query, '&');
-
- g_string_append_uri_escaped (query, key, NULL, FALSE);
- g_string_append_c (query, '=');
- g_string_append_uri_escaped (query, val, NULL, FALSE);
- }
- g_list_free (keys);
-
- /* Build the signature base string. */
-
- base_string = g_string_new (NULL);
- g_string_append (base_string, "GET");
- g_string_append_c (base_string, '&');
- g_string_append_uri_escaped (base_string, request_uri, NULL, FALSE);
- g_string_append_c (base_string, '&');
- g_string_append_uri_escaped (base_string, query->str, NULL, FALSE);
-
- /* Build the HMAC-SHA1 signing key. */
-
- signing_key = g_string_sized_new (512);
- g_string_append_uri_escaped (
- signing_key, consumer_secret, NULL, FALSE);
- g_string_append_c (signing_key, '&');
- g_string_append_uri_escaped (
- signing_key, access_token_secret, NULL, FALSE);
-
- /* Sign the request. */
-
- signature_digest_len = sizeof (signature_digest);
-
- signature_hmac = g_hmac_new (
- G_CHECKSUM_SHA1,
- (guchar *) signing_key->str,
- signing_key->len);
- g_hmac_update (
- signature_hmac,
- (guchar *) base_string->str,
- base_string->len);
- g_hmac_get_digest (
- signature_hmac,
- signature_digest,
- &signature_digest_len);
- g_hmac_unref (signature_hmac);
-
- key = (gpointer) "oauth_signature";
- string = g_base64_encode (signature_digest, signature_digest_len);
- g_hash_table_insert (parameters, key, string); /* takes ownership */
-
- /* Build the formal request string. */
-
- /* The request is easier to assemble with a GString. */
- request = g_string_sized_new (512);
-
- g_string_append_printf (request, "GET %s ", request_uri);
-
- for (ii = 0; ii < G_N_ELEMENTS (oauth_keys); ii++) {
- key = (gpointer) oauth_keys[ii];
- val = g_hash_table_lookup (parameters, key);
-
- if (ii > 0)
- g_string_append_c (request, ',');
-
- g_string_append (request, key);
- g_string_append_c (request, '=');
- g_string_append_c (request, '"');
- g_string_append_uri_escaped (request, val, NULL, FALSE);
- g_string_append_c (request, '"');
- }
-
- /* Copy the GString content to the GByteArray. */
- g_byte_array_append (
- byte_array, (guint8 *) request->str, request->len + 1);
-
- g_string_free (request, TRUE);
-
- /* Clean up. */
-
- g_string_free (query, TRUE);
- g_string_free (base_string, TRUE);
- g_string_free (signing_key, TRUE);
-
- g_hash_table_unref (parameters);
-}
-
-/****************************************************************************/
-
-static gchar *
-sasl_xoauth_find_account_id (ESourceRegistry *registry,
- const gchar *uid)
-{
- ESource *source;
- ESource *ancestor;
- const gchar *extension_name;
- gchar *account_id = NULL;
-
- extension_name = E_SOURCE_EXTENSION_GOA;
-
- source = e_source_registry_ref_source (registry, uid);
- g_return_val_if_fail (source != NULL, NULL);
-
- ancestor = e_source_registry_find_extension (
- registry, source, extension_name);
-
- if (ancestor != NULL) {
- ESourceGoa *extension;
-
- extension = e_source_get_extension (ancestor, extension_name);
- account_id = e_source_goa_dup_account_id (extension);
-
- g_object_unref (ancestor);
- }
-
- g_object_unref (source);
-
- return account_id;
-}
-
-static GoaObject *
-sasl_xoauth_get_account_by_id (GoaClient *client,
- const gchar *account_id)
-{
- GoaObject *match = NULL;
- GList *list, *iter;
-
- list = goa_client_get_accounts (client);
-
- for (iter = list; iter != NULL; iter = g_list_next (iter)) {
- GoaObject *goa_object;
- GoaAccount *goa_account;
- const gchar *candidate_id;
-
- goa_object = GOA_OBJECT (iter->data);
- goa_account = goa_object_get_account (goa_object);
- candidate_id = goa_account_get_id (goa_account);
-
- if (g_strcmp0 (account_id, candidate_id) == 0)
- match = g_object_ref (goa_object);
-
- g_object_unref (goa_account);
-
- if (match != NULL)
- break;
- }
-
- g_list_free_full (list, (GDestroyNotify) g_object_unref);
-
- return match;
-}
-
-static GByteArray *
-sasl_xoauth_challenge_sync (CamelSasl *sasl,
- GByteArray *token,
- GCancellable *cancellable,
- GError **error)
-{
- GoaClient *goa_client;
- GoaObject *goa_object;
- GoaAccount *goa_account;
- GByteArray *byte_array = NULL;
- CamelService *service;
- CamelSession *session;
- ESourceRegistry *registry;
- const gchar *uid;
- gchar *account_id;
- gboolean success;
-
- service = camel_sasl_get_service (sasl);
- session = camel_service_ref_session (service);
- registry = e_mail_session_get_registry (E_MAIL_SESSION (session));
-
- goa_client = goa_client_new_sync (cancellable, error);
- if (goa_client == NULL)
- goto exit;
-
- uid = camel_service_get_uid (service);
- account_id = sasl_xoauth_find_account_id (registry, uid);
- goa_object = sasl_xoauth_get_account_by_id (goa_client, account_id);
-
- g_free (account_id);
-
- if (goa_object == NULL) {
- g_set_error_literal (
- error, CAMEL_SERVICE_ERROR,
- CAMEL_SERVICE_ERROR_CANT_AUTHENTICATE,
- _("Cannot find a corresponding account in "
- "the org.gnome.OnlineAccounts service from "
- "which to obtain an authentication token."));
- g_object_unref (goa_client);
- goto exit;
- }
-
- goa_account = goa_object_get_account (goa_object);
-
- success = goa_account_call_ensure_credentials_sync (
- goa_account, NULL, cancellable, error);
-
- if (success) {
- GoaOAuthBased *goa_oauth_based;
- const gchar *identity;
- const gchar *consumer_key;
- const gchar *consumer_secret;
- const gchar *service_type;
- gchar *access_token = NULL;
- gchar *access_token_secret = NULL;
- gchar *request_uri;
-
- goa_oauth_based = goa_object_get_oauth_based (goa_object);
-
- identity = goa_account_get_identity (goa_account);
- service_type = CAMEL_IS_STORE (service) ? "imap" : "smtp";
-
- /* FIXME This should probably be generalized. */
- request_uri = g_strdup_printf (
- "https://mail.google.com/mail/b/%s/%s/",
- identity, service_type);
-
- consumer_key =
- goa_oauth_based_get_consumer_key (goa_oauth_based);
- consumer_secret =
- goa_oauth_based_get_consumer_secret (goa_oauth_based);
-
- success = goa_oauth_based_call_get_access_token_sync (
- goa_oauth_based,
- &access_token,
- &access_token_secret,
- NULL,
- cancellable,
- error);
-
- if (success) {
- byte_array = g_byte_array_new ();
- sasl_xoauth_append_request (
- byte_array,
- request_uri,
- consumer_key,
- consumer_secret,
- access_token,
- access_token_secret);
- }
-
- g_free (access_token);
- g_free (access_token_secret);
- g_free (request_uri);
-
- g_object_unref (goa_oauth_based);
- }
-
- g_object_unref (goa_account);
- g_object_unref (goa_object);
- g_object_unref (goa_client);
-
- /* IMAP and SMTP services will Base64-encode the request. */
-
-exit:
- g_object_unref (session);
-
- return byte_array;
-}
-
-static gpointer
-camel_sasl_xoauth_auth_type_init (gpointer unused)
-{
- CamelServiceAuthType *auth_type;
-
- /* This is a one-time allocation, never freed. */
- auth_type = g_malloc0 (sizeof (CamelServiceAuthType));
- auth_type->name = _("OAuth");
- auth_type->description =
- _("This option will connect to the server by "
- "way of the GNOME Online Accounts service");
- auth_type->authproto = "XOAUTH";
- auth_type->need_password = FALSE;
-
- return auth_type;
-}
-
-static void
-camel_sasl_xoauth_class_init (CamelSaslXOAuthClass *class)
-{
- static GOnce auth_type_once = G_ONCE_INIT;
- CamelSaslClass *sasl_class;
-
- g_once (&auth_type_once, camel_sasl_xoauth_auth_type_init, NULL);
-
- g_type_class_add_private (class, sizeof (CamelSaslXOAuthPrivate));
-
- sasl_class = CAMEL_SASL_CLASS (class);
- sasl_class->auth_type = auth_type_once.retval;
- sasl_class->challenge_sync = sasl_xoauth_challenge_sync;
-}
-
-static void
-camel_sasl_xoauth_class_finalize (CamelSaslXOAuthClass *class)
-{
-}
-
-static void
-camel_sasl_xoauth_init (CamelSaslXOAuth *sasl)
-{
- sasl->priv = CAMEL_SASL_XOAUTH_GET_PRIVATE (sasl);
-}
-
-void
-camel_sasl_xoauth_type_register (GTypeModule *type_module)
-{
- /* XXX G_DEFINE_DYNAMIC_TYPE declares a static type registration
- * function, so we have to wrap it with a public function in
- * order to register types from a separate compilation unit. */
- camel_sasl_xoauth_register_type (type_module);
-}
diff --git a/modules/online-accounts/camel-sasl-xoauth.h b/modules/online-accounts/camel-sasl-xoauth.h
deleted file mode 100644
index 3e78547e1b..0000000000
--- a/modules/online-accounts/camel-sasl-xoauth.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * camel-sasl-xoauth.h
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- */
-
-#ifndef CAMEL_SASL_XOAUTH_H
-#define CAMEL_SASL_XOAUTH_H
-
-#include <camel/camel.h>
-
-/* Standard GObject macros */
-#define CAMEL_TYPE_SASL_XOAUTH \
- (camel_sasl_xoauth_get_type ())
-#define CAMEL_SASL_XOAUTH(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), CAMEL_TYPE_SASL_XOAUTH, CamelSaslXOAuth))
-#define CAMEL_SASL_XOAUTH_CLASS(cls) \
- (G_TYPE_CHECK_CLASS_CAST \
- ((cls), CAMEL_TYPE_SASL_XOAUTH, CamelSaslXOAuthClass))
-#define CAMEL_IS_SASL_XOAUTH(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), CAMEL_TYPE_SASL_XOAUTH))
-#define CAMEL_IS_SASL_XOAUTH_CLASS(cls) \
- (G_TYPE_CHECK_CLASS_TYPE \
- ((cls), CAMEL_TYPE_SASL_XOAUTH))
-#define CAMEL_SASL_XOAUTH_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), CAMEL_TYPE_SASL_XOAUTH, CamelSaslXOAuthClass))
-
-G_BEGIN_DECLS
-
-typedef struct _CamelSaslXOAuth CamelSaslXOAuth;
-typedef struct _CamelSaslXOAuthClass CamelSaslXOAuthClass;
-typedef struct _CamelSaslXOAuthPrivate CamelSaslXOAuthPrivate;
-
-struct _CamelSaslXOAuth {
- CamelSasl parent;
- CamelSaslXOAuthPrivate *priv;
-};
-
-struct _CamelSaslXOAuthClass {
- CamelSaslClass parent_class;
-};
-
-GType camel_sasl_xoauth_get_type (void);
-void camel_sasl_xoauth_type_register (GTypeModule *type_module);
-
-G_END_DECLS
-
-#endif /* CAMEL_SASL_XOAUTH_H */
diff --git a/modules/online-accounts/evolution-online-accounts.c b/modules/online-accounts/evolution-online-accounts.c
deleted file mode 100644
index 9f80c93c7a..0000000000
--- a/modules/online-accounts/evolution-online-accounts.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * evolution-online-accounts.c
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- */
-
-#include "camel-sasl-xoauth.h"
-
-/* Module Entry Points */
-void e_module_load (GTypeModule *type_module);
-void e_module_unload (GTypeModule *type_module);
-
-G_MODULE_EXPORT void
-e_module_load (GTypeModule *type_module)
-{
- camel_sasl_xoauth_type_register (type_module);
-}
-
-G_MODULE_EXPORT void
-e_module_unload (GTypeModule *type_module)
-{
-}
-