[evolution-patches] patch for adding GW camel provider
- From: Rodrigo Moya <rodrigo ximian com>
- To: Evolution Patches <evolution-patches ximian com>
- Cc: Sivaiah Nallagatla <snallagatla novell com>
- Subject: [evolution-patches] patch for adding GW camel provider
- Date: Wed, 24 Dec 2003 17:30:30 +0100
Hi
Based on Sivaiah's patch sent last week, here's a patch for adding the
Groupwise provider to Camel. It doesn't work for me, since Groupwise
doesn't show up in the account types, but since I am leaving for
vacation today (I'll still check mail tomorrow) and will be back (2nd
January) after Sivaiah's (28th December) come back, I've:
* committed the camel/providers/groupwise files. The rest hasn't been
committed, to not include the provider yet in the build, until it works.
* debugged the loading of the provider, which needs the imap and smtp
providers loaded first in order to avoid undefined references. I tried
using g_module_open on those providers to have them loaded, but I'm
still getting the same problem.
* not committed the groupwise-listener class Sivaiah wrote, so that
needs to be committed and fixed.
have a nice holiday and see you next year
? camel-cms-context.c
? camel-cms-context.h
? providers/groupwise/Makefile
? providers/groupwise/Makefile.in
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/camel/ChangeLog,v
retrieving revision 1.1944
diff -u -p -r1.1944 ChangeLog
--- ChangeLog 11 Dec 2003 17:30:29 -0000 1.1944
+++ ChangeLog 24 Dec 2003 16:19:26 -0000
@@ -1,3 +1,24 @@
+2003-12-24 Rodrigo Moya <rodrigo ximian com>
+
+ * providers/groupwise/camel-groupwise-provider.c
+ (camel_provider_module_init): g_module_open the other providers we
+ depend on to avoid load ordering problems.
+
+2003-12-22 Rodrigo Moya <rodrigo ximian com>
+
+ * providers/groupwise/camel-groupwise-provider.c: removed useless
+ configuration options, and added other options from the IMAP
+ provider.
+ (camel_provider_module_init): register a SMTP transport object also, and
+ removed SASL registration, since we don't support it.
+
+2003-12-19 Sivaiah Nallagatla <snallagatla novell com>
+
+ * providers/groupwise/Makefile.am:
+ * providers/groupwise/libcamelgroupwise.urls:
+ * providers/groupwise/camel-groupwise-provider.c: added Camel
+ provider for Groupwise accounts, based on the IMAP one.
+
2003-12-11 Jeffrey Stedfast <fejj ximian com>
* camel-gpg-context.c (gpg_ctx_parse_status): Don't immediately
Index: providers/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/camel/providers/Makefile.am,v
retrieving revision 1.27
diff -u -p -r1.27 Makefile.am
--- providers/Makefile.am 1 Aug 2003 21:08:03 -0000 1.27
+++ providers/Makefile.am 24 Dec 2003 16:19:26 -0000
@@ -8,5 +8,5 @@ if ENABLE_IMAPP
IMAPP_DIR=imapp
endif
-SUBDIRS = pop3 sendmail smtp imap $(NNTP_DIR) local $(IMAPP_DIR)
+SUBDIRS = pop3 sendmail smtp imap $(NNTP_DIR) local $(IMAPP_DIR) groupwise
Index: providers/groupwise/Makefile.am
===================================================================
RCS file: providers/groupwise/Makefile.am
diff -N providers/groupwise/Makefile.am
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ providers/groupwise/Makefile.am 24 Dec 2003 16:19:26 -0000
@@ -0,0 +1,32 @@
+## Process this file with automake to produce Makefile.in
+
+libcamelimapincludedir = $(privincludedir)/camel
+
+camel_provider_LTLIBRARIES = libcamelgroupwise.la
+camel_provider_DATA = libcamelgroupwise.urls
+
+INCLUDES = -I.. \
+ -I$(srcdir)/.. \
+ -I$(top_srcdir)/camel \
+ -I$(top_srcdir)/intl \
+ -I$(top_srcdir)/e-util \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/camel/providers/imap \
+ -I$(top_srcdir)/camel/providers/smtp \
+ $(CAMEL_CFLAGS) \
+ $(GNOME_INCLUDEDIR) \
+ $(GTK_INCLUDEDIR) \
+ -DCAMEL_PROVIDERDIR=\"$(camel_providerdir)\" \
+ -DG_LOG_DOMAIN=\"camel-groupwise-provider\"
+
+libcamelgroupwise_la_SOURCES = \
+ camel-groupwise-provider.c
+
+libcamelgroupwise_la_LDFLAGS = -avoid-version -module
+
+# libcamelgroupwise_la_LIBADD =
+# $(top_builddir)/camel/providers/imap/libcamelimap.la \
+# $(top_builddir)/camel/providers/smtp/libcamelsmtp.la
+
+
+EXTRA_DIST = libcamelimap.urls
Index: providers/groupwise/camel-groupwise-provider.c
===================================================================
RCS file: providers/groupwise/camel-groupwise-provider.c
diff -N providers/groupwise/camel-groupwise-provider.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ providers/groupwise/camel-groupwise-provider.c 24 Dec 2003 16:19:26 -0000
@@ -0,0 +1,172 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* camel-groupwise-provider.c: Groupwise provider registration code */
+
+/*
+ * Authors: Jeffrey Stedfast <fejj ximian com>
+ * Sivaiah Nallagatla <snallagatla novell com>
+ * Rodrigo Moya <rodrigo ximian com>
+ *
+ * Copyright 2003 Novell, Inc. (www.novell.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <gmodule.h>
+#include "camel-imap-store.h"
+#include "camel-provider.h"
+#include "camel-session.h"
+#include "camel-smtp-transport.h"
+#include "camel-url.h"
+#include "camel-sasl.h"
+
+static void add_hash (guint *hash, char *s);
+static guint imap_url_hash (gconstpointer key);
+static gint check_equal (char *s1, char *s2);
+static gint imap_url_equal (gconstpointer a, gconstpointer b);
+
+CamelProviderConfEntry groupwise_conf_entries[] = {
+ /* override the labels/defaults of the standard settings */
+
+ { CAMEL_PROVIDER_CONF_SECTION_START, "mailcheck", NULL,
+ N_("Checking for new mail") },
+ { CAMEL_PROVIDER_CONF_CHECKBOX, "check_all", NULL,
+ N_("Check for new messages in all folders"), "1" },
+ { CAMEL_PROVIDER_CONF_SECTION_END },
+
+ /* extra Groupwise configuration settings */
+ { CAMEL_PROVIDER_CONF_SECTION_START, "ldapserver", NULL,
+ N_("Address Book") },
+
+ { CAMEL_PROVIDER_CONF_ENTRY, "ldap_server", NULL,
+ N_("LDAP Server Name:") },
+
+ { CAMEL_PROVIDER_CONF_CHECKSPIN, "ldap_download_limit", NULL,
+ N_("LDAP Download limit: %s"), "y:1:500:10000" },
+
+ { CAMEL_PROVIDER_CONF_SECTION_END },
+
+ { CAMEL_PROVIDER_CONF_CHECKBOX, "filter", NULL,
+ N_("Apply filters to new messages in Inbox on this server"), "0" },
+
+ { CAMEL_PROVIDER_CONF_CHECKBOX, "offline_sync", NULL,
+ N_("Automatically synchronize remote mail locally"), "0" },
+
+ { CAMEL_PROVIDER_CONF_END }
+};
+
+
+static CamelProvider groupwise_provider = {
+ "groupwise",
+ N_("Novell GroupWise"),
+
+ N_("For accesing Novell Groupwise servers"),
+
+ "mail",
+
+ CAMEL_PROVIDER_IS_REMOTE | CAMEL_PROVIDER_IS_SOURCE |
+ CAMEL_PROVIDER_IS_STORAGE | CAMEL_PROVIDER_SUPPORTS_SSL,
+
+ CAMEL_URL_NEED_USER | CAMEL_URL_NEED_HOST | CAMEL_URL_ALLOW_AUTH,
+
+ groupwise_conf_entries,
+
+ /* ... */
+};
+
+CamelServiceAuthType camel_groupwise_password_authtype = {
+ N_("Password"),
+
+ N_("This option will connect to the IMAP server using a "
+ "plaintext password."),
+
+ "",
+ TRUE
+};
+
+void
+camel_provider_module_init (CamelSession *session)
+{
+ GModule *module;
+
+ /* make sure the IMAP and SMTP providers are loaded */
+ module = g_module_open (CAMEL_PROVIDERDIR "/libcamelimap.so", G_MODULE_BIND_LAZY);
+ g_module_make_resident (module);
+
+ module = g_module_open (CAMEL_PROVIDERDIR "/libcamelsmtp.so", G_MODULE_BIND_LAZY);
+ g_module_make_resident (module);
+
+ groupwise_provider.object_types[CAMEL_PROVIDER_STORE] = camel_imap_store_get_type ();
+ groupwise_provider.object_types[CAMEL_PROVIDER_TRANSPORT] = camel_smtp_transport_get_type ();
+ groupwise_provider.url_hash = imap_url_hash;
+ groupwise_provider.url_equal = imap_url_equal;
+ groupwise_provider.authtypes = g_list_prepend (groupwise_provider.authtypes,
+ &camel_groupwise_password_authtype);
+
+ camel_session_register_provider (session, &groupwise_provider);
+}
+
+static void
+add_hash (guint *hash, char *s)
+{
+ if (s)
+ *hash ^= g_str_hash(s);
+}
+
+static guint
+imap_url_hash (gconstpointer key)
+{
+ const CamelURL *u = (CamelURL *)key;
+ guint hash = 0;
+
+ add_hash (&hash, u->user);
+ add_hash (&hash, u->authmech);
+ add_hash (&hash, u->host);
+ hash ^= u->port;
+
+ return hash;
+}
+
+static gint
+check_equal (char *s1, char *s2)
+{
+ if (s1 == NULL) {
+ if (s2 == NULL)
+ return TRUE;
+ else
+ return FALSE;
+ }
+
+ if (s2 == NULL)
+ return FALSE;
+
+ return strcmp (s1, s2) == 0;
+}
+
+static gint
+imap_url_equal (gconstpointer a, gconstpointer b)
+{
+ const CamelURL *u1 = a, *u2 = b;
+
+ return check_equal (u1->user, u2->user)
+ && check_equal (u1->authmech, u2->authmech)
+ && check_equal (u1->host, u2->host)
+ && u1->port == u2->port;
+}
Index: providers/groupwise/libcamelgroupwise.urls
===================================================================
RCS file: providers/groupwise/libcamelgroupwise.urls
diff -N providers/groupwise/libcamelgroupwise.urls
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ providers/groupwise/libcamelgroupwise.urls 24 Dec 2003 16:19:26 -0000
@@ -0,0 +1 @@
+groupwise
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]