Subject: [PATCH] Use static path for moduledir. Patch was taken from NixOS repo. Make dovecot look for plugins in /etc/dovecot/modules so we can symlink plugins from several packages there. The rational behind the patch can be found here: https://dovecot.org/pipermail/dovecot/2013-April/089931.html --- src/auth/main.c | 4 ++-- src/config/config-parser.c | 2 +- src/config/config-parser.h | 2 +- src/dict/main.c | 2 +- src/doveadm/doveadm-util.c | 4 ++-- src/lib-fs/fs-api.c | 2 +- src/lib-ssl-iostream/iostream-ssl.c | 4 ++-- src/lib-storage/mail-storage-settings.c | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/auth/main.c b/src/auth/main.c index 2dbf9e176..b1e778ab7 100644 --- a/src/auth/main.c +++ b/src/auth/main.c @@ -192,7 +192,7 @@ static void main_preinit(void) mod_set.debug = global_auth_settings->debug; mod_set.filter_callback = auth_module_filter; - modules = module_dir_load(AUTH_MODULE_DIR, NULL, &mod_set); + modules = module_dir_load("/etc/dovecot/modules/auth", NULL, &mod_set); module_dir_init(modules); if (!worker) @@ -223,7 +223,7 @@ void auth_module_load(const char *names) mod_set.debug = global_auth_settings->debug; mod_set.ignore_missing = TRUE; - modules = module_dir_load_missing(modules, AUTH_MODULE_DIR, names, + modules = module_dir_load_missing(modules, "/etc/dovecot/modules/auth", names, &mod_set); module_dir_init(modules); } diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 6894123ea..07e9fecb4 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -1077,7 +1077,7 @@ void config_parse_load_modules(void) i_zero(&mod_set); mod_set.abi_version = DOVECOT_ABI_VERSION; - modules = module_dir_load(CONFIG_MODULE_DIR, NULL, &mod_set); + modules = module_dir_load("/etc/dovecot/modules/settings", NULL, &mod_set); module_dir_init(modules); i_array_init(&new_roots, 64); diff --git a/src/config/config-parser.h b/src/config/config-parser.h index e0a0a5bea..32bd76804 100644 --- a/src/config/config-parser.h +++ b/src/config/config-parser.h @@ -1,7 +1,7 @@ #ifndef CONFIG_PARSER_H #define CONFIG_PARSER_H -#define CONFIG_MODULE_DIR MODULEDIR"/settings" +#define CONFIG_MODULE_DIR "/etc/dovecot/modules/settings" #define IS_WHITE(c) ((c) == ' ' || (c) == '\t') diff --git a/src/dict/main.c b/src/dict/main.c index 722ed025f..4ed12ae5e 100644 --- a/src/dict/main.c +++ b/src/dict/main.c @@ -104,7 +104,7 @@ static void main_init(void) mod_set.abi_version = DOVECOT_ABI_VERSION; mod_set.require_init_funcs = TRUE; - modules = module_dir_load(DICT_MODULE_DIR, NULL, &mod_set); + modules = module_dir_load("/etc/dovecot/modules/dict", NULL, &mod_set); module_dir_init(modules); /* Register only after loading modules. They may contain SQL drivers, diff --git a/src/doveadm/doveadm-util.c b/src/doveadm/doveadm-util.c index a65ef7f72..c19eba06c 100644 --- a/src/doveadm/doveadm-util.c +++ b/src/doveadm/doveadm-util.c @@ -33,7 +33,7 @@ void doveadm_load_modules(void) mod_set.debug = doveadm_debug; mod_set.ignore_dlopen_errors = TRUE; - modules = module_dir_load_missing(modules, DOVEADM_MODULEDIR, + modules = module_dir_load_missing(modules, "/etc/dovecot/modules/doveadm", NULL, &mod_set); module_dir_init(modules); } @@ -58,7 +58,7 @@ bool doveadm_has_unloaded_plugin(const char *name) return FALSE; } - dir = opendir(DOVEADM_MODULEDIR); + dir = opendir("/etc/dovecot/modules/doveadm"); if (dir == NULL) return FALSE; diff --git a/src/lib-fs/fs-api.c b/src/lib-fs/fs-api.c index a939f612d..846cf86e6 100644 --- a/src/lib-fs/fs-api.c +++ b/src/lib-fs/fs-api.c @@ -114,7 +114,7 @@ static void fs_class_try_load_plugin(const char *driver) mod_set.abi_version = DOVECOT_ABI_VERSION; mod_set.ignore_missing = TRUE; - fs_modules = module_dir_load_missing(fs_modules, MODULE_DIR, + fs_modules = module_dir_load_missing(fs_modules, "/etc/dovecot/modules", module_name, &mod_set); module_dir_init(fs_modules); diff --git a/src/lib-ssl-iostream/iostream-ssl.c b/src/lib-ssl-iostream/iostream-ssl.c index f62c80d37..900ab46c4 100644 --- a/src/lib-ssl-iostream/iostream-ssl.c +++ b/src/lib-ssl-iostream/iostream-ssl.c @@ -54,8 +54,8 @@ int ssl_module_load(const char **error_r) mod_set.abi_version = DOVECOT_ABI_VERSION; mod_set.setting_name = ""; mod_set.require_init_funcs = TRUE; - ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set); - if (module_dir_try_load_missing(&ssl_module, MODULE_DIR, plugin_name, + ssl_module = module_dir_load("/etc/dovecot/modules", plugin_name, &mod_set); + if (module_dir_try_load_missing(&ssl_module, "/etc/dovecot/modules", plugin_name, &mod_set, error_r) < 0) return -1; module_dir_init(ssl_module); diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c index b314b529c..705509456 100644 --- a/src/lib-storage/mail-storage-settings.c +++ b/src/lib-storage/mail-storage-settings.c @@ -337,7 +337,7 @@ static const struct mail_user_settings mail_user_default_settings = { .last_valid_gid = 0, .mail_plugins = "", - .mail_plugin_dir = MODULEDIR, + .mail_plugin_dir = "/etc/dovecot/modules", .mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ", -- 2.27.0