From: Josef 'Jeff' Sipek Date: Wed, 9 Dec 2020 14:50:10 +0000 (-0500) Subject: plugins: Remove autocreate plugin X-Git-Tag: 2.3.14.rc1~214 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d48f0dd059675415301eea4b28c9e968fd53f1c;p=thirdparty%2Fdovecot%2Fcore.git plugins: Remove autocreate plugin Automatic mailbox creation should be done via the autocreate namespace option. --- diff --git a/configure.ac b/configure.ac index f9f6324e34..94670c8811 100644 --- a/configure.ac +++ b/configure.ac @@ -889,7 +889,6 @@ src/util/Makefile src/plugins/Makefile src/plugins/acl/Makefile src/plugins/imap-acl/Makefile -src/plugins/autocreate/Makefile src/plugins/expire/Makefile src/plugins/fs-compress/Makefile src/plugins/fts/Makefile diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am index b5728cb1a6..60388a6b32 100644 --- a/src/plugins/Makefile.am +++ b/src/plugins/Makefile.am @@ -21,7 +21,6 @@ endif SUBDIRS = \ acl \ imap-acl \ - autocreate \ expire \ fts \ fts-squat \ diff --git a/src/plugins/autocreate/Makefile.am b/src/plugins/autocreate/Makefile.am deleted file mode 100644 index 625072d5df..0000000000 --- a/src/plugins/autocreate/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ -AM_CPPFLAGS = \ - -I$(top_srcdir)/src/lib \ - -I$(top_srcdir)/src/lib-mail \ - -I$(top_srcdir)/src/lib-imap \ - -I$(top_srcdir)/src/lib-index \ - -I$(top_srcdir)/src/lib-storage - -NOPLUGIN_LDFLAGS = -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 diff --git a/src/plugins/autocreate/autocreate-plugin.c b/src/plugins/autocreate/autocreate-plugin.c deleted file mode 100644 index 47c71ae6e8..0000000000 --- a/src/plugins/autocreate/autocreate-plugin.c +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright (c) 2007-2018 Dovecot authors, see the included COPYING file */ - -/* FIXME: this plugin is only for backwards compatibility. log a warning in - v2.2 about this and in later versions remove completely */ - -#include "lib.h" -#include "array.h" -#include "unichar.h" -#include "mail-user.h" -#include "mail-namespace.h" -#include "mail-storage-hooks.h" -#include "autocreate-plugin.h" - -static struct mailbox_settings * -mailbox_settings_find(struct mail_namespace *ns, const char *vname) -{ - struct mailbox_settings *const *box_set; - - array_foreach(&ns->set->mailboxes, box_set) { - if (strcmp((*box_set)->name, vname) == 0) - return *box_set; - } - return NULL; -} - -static void -add_autobox(struct mail_user *user, const char *vname, bool subscriptions) -{ - struct mail_namespace *ns; - struct mailbox_settings *set; - struct mail_namespace_settings tmp_ns_set; - - if (!uni_utf8_str_is_valid(vname)) { - i_error("autocreate: Mailbox name isn't valid UTF-8: %s", - vname); - return; - } - - ns = mail_namespace_find(user->namespaces, vname); - if ((ns->flags & NAMESPACE_FLAG_UNUSABLE) != 0) { - i_error("autocreate: No namespace found for mailbox: %s", - vname); - return; - } - - if (array_is_created(&ns->set->mailboxes)) - tmp_ns_set.mailboxes = ns->set->mailboxes; - else { - p_array_init(&tmp_ns_set.mailboxes, user->pool, 16); - /* work around ns->set being a const pointer. pretty ugly, but - this plugin is deprecated anyway. */ - memcpy((void *)&ns->set->mailboxes.arr, &tmp_ns_set.mailboxes.arr, - sizeof(ns->set->mailboxes.arr)); - } - - if (strncmp(vname, ns->prefix, ns->prefix_len) == 0) - vname += ns->prefix_len; - set = mailbox_settings_find(ns, vname); - if (set == NULL) { - set = p_new(user->pool, struct mailbox_settings, 1); - set->name = p_strdup(user->pool, vname); - set->autocreate = MAILBOX_SET_AUTO_NO; - set->special_use = ""; - array_push_back(&tmp_ns_set.mailboxes, &set); - } - if (subscriptions) - set->autocreate = MAILBOX_SET_AUTO_SUBSCRIBE; - else if (strcmp(set->autocreate, MAILBOX_SET_AUTO_SUBSCRIBE) != 0) - set->autocreate = MAILBOX_SET_AUTO_CREATE; -} - -static void -read_autobox_settings(struct mail_user *user, const char *env_name_base, - bool subscriptions) -{ - const char *value; - char env_name[strlen(env_name_base) + MAX_INT_STRLEN]; - unsigned int i = 1; - - value = mail_user_plugin_getenv(user, env_name_base); - while (value != NULL) { - add_autobox(user, value, subscriptions); - - if (i_snprintf(env_name, sizeof(env_name), "%s%u", - env_name_base, ++i) < 0) - i_unreached(); - value = mail_user_plugin_getenv(user, env_name); - } -} - -static void -autocreate_mail_namespaces_created(struct mail_namespace *namespaces) -{ - read_autobox_settings(namespaces->user, "autocreate", FALSE); - read_autobox_settings(namespaces->user, "autosubscribe", TRUE); -} - -static struct mail_storage_hooks autocreate_mail_storage_hooks = { - .mail_namespaces_created = autocreate_mail_namespaces_created -}; - -void autocreate_plugin_init(struct module *module) -{ - i_warning("autocreate plugin is deprecated, use mailbox { auto } setting instead"); - mail_storage_hooks_add(module, &autocreate_mail_storage_hooks); -} - -void autocreate_plugin_deinit(void) -{ - mail_storage_hooks_remove(&autocreate_mail_storage_hooks); -} diff --git a/src/plugins/autocreate/autocreate-plugin.h b/src/plugins/autocreate/autocreate-plugin.h deleted file mode 100644 index 59a363db3a..0000000000 --- a/src/plugins/autocreate/autocreate-plugin.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef AUTOCREATE_PLUGIN_H -#define AUTOCREATE_PLUGIN_H - -void autocreate_plugin_init(struct module *module); -void autocreate_plugin_deinit(void); - -#endif