From: Markus Valentin Date: Thu, 14 Mar 2024 12:54:19 +0000 (+0100) Subject: plugins/mail-lua: mail_lua_user_created() - Use dlua_script_create_auto() X-Git-Tag: 2.4.1~918 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a3e84572e507d675fd68764931c1efb6e7a726f;p=thirdparty%2Fdovecot%2Fcore.git plugins/mail-lua: mail_lua_user_created() - Use dlua_script_create_auto() --- diff --git a/src/plugins/mail-lua/Makefile.am b/src/plugins/mail-lua/Makefile.am index 1698cb424b..2f4b9c76f7 100644 --- a/src/plugins/mail-lua/Makefile.am +++ b/src/plugins/mail-lua/Makefile.am @@ -3,6 +3,7 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/lib-mail \ -I$(top_srcdir)/src/lib-index \ -I$(top_srcdir)/src/lib-storage \ + -I$(top_srcdir)/src/lib-settings \ -I$(top_srcdir)/src/lib-lua \ $(LUA_CFLAGS) @@ -16,11 +17,13 @@ lib01_mail_lua_plugin_la_LIBADD = \ ../../lib-storage/libdovecot-storage-lua.la \ $(LIBDOVECOT) lib01_mail_lua_plugin_la_SOURCES = \ - mail-lua-plugin.c + mail-lua-plugin.c \ + mail-lua-settings.c pkginc_libdir=$(pkgincludedir) pkginc_lib_HEADERS = \ - mail-lua-plugin.h + mail-lua-plugin.h \ + mail-lua-settings.h test_programs = @@ -30,3 +33,5 @@ check-local: done noinst_PROGRAMS = $(test_programs) +noinst_HEADERS = \ + mail-lua-settings.h diff --git a/src/plugins/mail-lua/mail-lua-plugin.c b/src/plugins/mail-lua/mail-lua-plugin.c index 47f374f753..04c45fa895 100644 --- a/src/plugins/mail-lua/mail-lua-plugin.c +++ b/src/plugins/mail-lua/mail-lua-plugin.c @@ -6,9 +6,10 @@ #include "mail-storage-lua.h" #include "mail-storage-private.h" #include "mail-storage-hooks.h" +#include "settings.h" +#include "mail-lua-settings.h" #include "dlua-script-private.h" -#define MAIL_LUA_SCRIPT "mail_lua_script" #define MAIL_LUA_USER_CREATED_FN "mail_user_created" #define MAIL_LUA_USER_DEINIT_FN "mail_user_deinit" #define MAIL_LUA_USER_DEINIT_PRE_FN "mail_user_deinit_pre" @@ -96,25 +97,29 @@ static void mail_lua_user_created(struct mail_user *user) struct mail_user_vfuncs *v = user->vlast; struct dlua_script *script; const char *error; - const char *script_fn = mail_user_plugin_getenv(user, MAIL_LUA_SCRIPT); + struct event *event; int ret; - if (script_fn == NULL) - return; - - if (dlua_script_create_file(script_fn, &script, user->event, &error) < 0) { - user->error = p_strdup_printf(user->pool, "dlua_script_create_file(%s) failed: %s", - script_fn, error); + event = event_create(user->event); + event_set_ptr(event, SETTINGS_EVENT_FILTER_NAME, MAIL_LUA_FILTER); + if ((ret = dlua_script_create_auto(event, &script, &error)) < 0) { + user->error = p_strdup_printf(user->pool, + "dlua_script_create_auto() failed: %s", + error); + event_unref(&event); return; } - + event_unref(&event); + if (ret == 0) + return; dlua_dovecot_register(script); dlua_register_mail_storage(script); /* init */ if (dlua_script_init(script, &error) < 0) { - user->error = p_strdup_printf(user->pool, "dlua_script_init(%s) failed: %s", - script_fn, error); + user->error = p_strdup_printf(user->pool, + "dlua_script_init(%s) failed: %s", + script->filename, error); dlua_script_unref(&script); return; } diff --git a/src/plugins/mail-lua/mail-lua-settings.c b/src/plugins/mail-lua/mail-lua-settings.c new file mode 100644 index 0000000000..338627e9c5 --- /dev/null +++ b/src/plugins/mail-lua/mail-lua-settings.c @@ -0,0 +1,24 @@ +/* Copyright (c) 2024 Dovecot authors, see the included COPYING file */ + +#include "lib.h" +#include "settings-parser.h" +#include "mail-storage-settings.h" +#include "mail-lua-settings.h" + +static const struct setting_define mail_lua_setting_defines[] = { + { .type = SET_FILTER_NAME, .key = MAIL_LUA_FILTER }, + SETTING_DEFINE_LIST_END +}; + +static const struct mail_lua_settings mail_lua_default_settings = { +}; + +const struct setting_parser_info mail_lua_setting_parser_info = { + .name = "mail_lua", + + .defines = mail_lua_setting_defines, + .defaults = &mail_lua_default_settings, + + .struct_size = sizeof(struct mail_lua_settings), + .pool_offset1 = 1 + offsetof(struct mail_lua_settings, pool), +}; diff --git a/src/plugins/mail-lua/mail-lua-settings.h b/src/plugins/mail-lua/mail-lua-settings.h new file mode 100644 index 0000000000..38c3a75223 --- /dev/null +++ b/src/plugins/mail-lua/mail-lua-settings.h @@ -0,0 +1,14 @@ +#ifndef MAIL_LUA_SETTINGS_H +#define MAIL_LUA_SETTINGS_H + +/* */ +#define MAIL_LUA_FILTER "mail_lua" +/* */ + +struct mail_lua_settings { + pool_t pool; +}; + +extern const struct setting_parser_info mail_lua_setting_parser_info; + +#endif