dovecot-1.2: Added autocreate plugin.

dovecot at dovecot.org dovecot at dovecot.org
Sat Oct 18 21:36:59 EEST 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/f40ebb033a1b
changeset: 8295:f40ebb033a1b
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Oct 18 21:36:54 2008 +0300
description:
Added autocreate plugin.

diffstat:

5 files changed, 118 insertions(+), 3 deletions(-)
configure.in                               |    1 
src/plugins/Makefile.am                    |   19 ++++++-
src/plugins/autocreate/Makefile.am         |   24 +++++++++
src/plugins/autocreate/autocreate-plugin.c |   70 ++++++++++++++++++++++++++++
src/plugins/autocreate/autocreate-plugin.h |    7 ++

diffs (150 lines):

diff -r 8aa69e3d27ef -r f40ebb033a1b configure.in
--- a/configure.in	Sat Oct 18 21:31:18 2008 +0300
+++ b/configure.in	Sat Oct 18 21:36:54 2008 +0300
@@ -2440,6 +2440,7 @@ src/util/Makefile
 src/util/Makefile
 src/plugins/Makefile
 src/plugins/acl/Makefile
+src/plugins/autocreate/Makefile
 src/plugins/convert/Makefile
 src/plugins/expire/Makefile
 src/plugins/fts/Makefile
diff -r 8aa69e3d27ef -r f40ebb033a1b src/plugins/Makefile.am
--- a/src/plugins/Makefile.am	Sat Oct 18 21:31:18 2008 +0300
+++ b/src/plugins/Makefile.am	Sat Oct 18 21:36:54 2008 +0300
@@ -11,6 +11,19 @@ endif
 endif
 
 SUBDIRS = \
-	acl convert expire fts fts-squat lazy-expunge mail-log mbox-snarf \
-	quota imap-quota trash virtual \
-	$(ZLIB) $(FTS_LUCENE) $(FTS_SOLR)
+	acl \
+	autocreate \
+	convert \
+	expire \
+	fts \
+	fts-squat \
+	lazy-expunge \
+	mail-log \
+	mbox-snarf \
+	quota \
+	imap-quota \
+	trash \
+	virtual \
+	$(ZLIB) \
+	$(FTS_LUCENE) \
+	$(FTS_SOLR)
diff -r 8aa69e3d27ef -r f40ebb033a1b src/plugins/autocreate/Makefile.am
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/plugins/autocreate/Makefile.am	Sat Oct 18 21:36:54 2008 +0300
@@ -0,0 +1,24 @@
+AM_CPPFLAGS = \
+	-I$(top_srcdir)/src/lib \
+	-I$(top_srcdir)/src/lib-mail \
+	-I$(top_srcdir)/src/lib-imap \
+	-I$(top_srcdir)/src/lib-storage
+
+lib20_autocreate_plugin_la_LDFLAGS = -module -avoid-version
+
+module_LTLIBRARIES = \
+	lib20_autocreate_plugin.la
+
+lib20_autocreate_plugin_la_SOURCES = \
+	autocreate-plugin.c
+
+noinst_HEADERS = \
+	autocreate-plugin.h
+
+install-exec-local:
+	for d in imap pop3 lda; do \
+	  $(mkdir_p) $(DESTDIR)$(moduledir)/$$d; \
+	  rm -f $(DESTDIR)$(moduledir)/$$d/lib20_autocreate_plugin$(MODULE_SUFFIX); \
+	  $(LN_S) ../lib20_autocreate_plugin$(MODULE_SUFFIX) $(DESTDIR)$(moduledir)/$$d; \
+	done
+
diff -r 8aa69e3d27ef -r f40ebb033a1b src/plugins/autocreate/autocreate-plugin.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/plugins/autocreate/autocreate-plugin.c	Sat Oct 18 21:36:54 2008 +0300
@@ -0,0 +1,70 @@
+/* Copyright (C) 2007 Timo Sirainen, LGPLv2.1 */
+
+#include "lib.h"
+#include "mail-storage.h"
+#include "mail-namespace.h"
+#include "autocreate-plugin.h"
+
+#include <stdlib.h>
+
+const char *autocreate_plugin_version = PACKAGE_VERSION;
+
+static void (*autocreate_next_hook_mail_namespaces_created)
+	(struct mail_namespace *ns);
+
+static void autocreate_mailboxes(struct mail_storage *storage)
+{
+	char env_name[20];
+	const char *env;
+	unsigned int i;
+
+	i = 1;
+	env = getenv("AUTOCREATE");
+	while (env != NULL) {
+		(void)mail_storage_mailbox_create(storage, env, FALSE);
+		i_snprintf(env_name, sizeof(env_name), "AUTOCREATE%d", ++i);
+		env = getenv(env_name);
+	}
+}
+
+static void autosubscribe_mailboxes(struct mailbox_list *list)
+{
+	char env_name[20];
+	const char *env;
+	unsigned int i;
+
+	i = 1;
+	env = getenv("AUTOSUBSCRIBE");
+	while (env != NULL) {
+		(void)mailbox_list_set_subscribed(list, env, TRUE);
+		i_snprintf(env_name, sizeof(env_name), "AUTOSUBSCRIBE%d", ++i);
+		env = getenv(env_name);
+	}
+}
+
+static void autocreate_mail_namespaces_created(struct mail_namespace *ns)
+{
+	if (autocreate_next_hook_mail_namespaces_created != NULL)
+		autocreate_next_hook_mail_namespaces_created(ns);
+
+	for (; ns != NULL; ns = ns->next) {
+		if (ns->type == NAMESPACE_PRIVATE) {
+			autocreate_mailboxes(ns->storage);
+			autosubscribe_mailboxes(ns->list);
+			break;
+		}
+	}
+}
+
+void autocreate_plugin_init(void)
+{
+	autocreate_next_hook_mail_namespaces_created =
+		hook_mail_namespaces_created;
+	hook_mail_namespaces_created = autocreate_mail_namespaces_created;
+}
+
+void autocreate_plugin_deinit(void)
+{
+	hook_mail_namespaces_created =
+		autocreate_next_hook_mail_namespaces_created;
+}
diff -r 8aa69e3d27ef -r f40ebb033a1b src/plugins/autocreate/autocreate-plugin.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/plugins/autocreate/autocreate-plugin.h	Sat Oct 18 21:36:54 2008 +0300
@@ -0,0 +1,7 @@
+#ifndef AUTOCREATE_PLUGIN_H
+#define AUTOCREATE_PLUGIN_H
+
+void autocreate_plugin_init(void);
+void autocreate_plugin_deinit(void);
+
+#endif


More information about the dovecot-cvs mailing list