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