diff --git a/src/managesieve-login/managesieve-login-settings.c b/src/managesieve-login/managesieve-login-settings.c index 440b1b58d30e9d908a75ef5bb54d17726f4897a7..42feef07b94cb462191d5135fad67a4cc75e49f8 100644 --- a/src/managesieve-login/managesieve-login-settings.c +++ b/src/managesieve-login/managesieve-login-settings.c @@ -20,40 +20,6 @@ #include <sys/wait.h> #include <sysexits.h> -/* <settings checks> */ -static struct file_listener_settings managesieve_login_unix_listeners_array[] = { - { - .path = "srv.managesieve-login/%{pid}", - .type = "admin", - .mode = 0600, - .user = "", - .group = "" - }, -}; -static struct file_listener_settings *managesieve_login_unix_listeners[] = { - &managesieve_login_unix_listeners_array[0], -}; -static buffer_t managesieve_login_unix_listeners_buf = { - { { managesieve_login_unix_listeners, - sizeof(managesieve_login_unix_listeners) } } -}; - -static struct inet_listener_settings managesieve_login_inet_listeners_array[] = { - { - .name = "sieve", - .address = "", - .port = MANAGESIEVE_DEFAULT_PORT, - }, -}; -static struct inet_listener_settings *managesieve_login_inet_listeners[] = { - &managesieve_login_inet_listeners_array[0] -}; -static buffer_t managesieve_login_inet_listeners_buf = { - { { managesieve_login_inet_listeners, - sizeof(managesieve_login_inet_listeners) } } -}; -/* </settings checks> */ - struct service_settings managesieve_login_settings_service_settings = { .name = "managesieve-login", .protocol = "sieve", @@ -74,13 +40,24 @@ struct service_settings managesieve_login_settings_service_settings = { .idle_kill = 0, .vsz_limit = (uoff_t)-1, - .unix_listeners = { { &managesieve_login_unix_listeners_buf, - sizeof(managesieve_login_unix_listeners[0]) } }, + .unix_listeners = ARRAY_INIT, .fifo_listeners = ARRAY_INIT, - .inet_listeners = { { &managesieve_login_inet_listeners_buf, - sizeof(managesieve_login_inet_listeners[0]) } } + .inet_listeners = ARRAY_INIT, }; +const struct setting_keyvalue managesieve_login_settings_service_settings_defaults[] = { + { "unix_listener", "srv.managesieve-login\\s%{pid}" }, + + { "unix_listener/srv.managesieve-login\\s%{pid}/path", "srv.managesieve-login/%{pid}" }, + { "unix_listener/srv.managesieve-login\\s%{pid}/type", "admin" }, + { "unix_listener/srv.managesieve-login\\s%{pid}/mode", "0600" }, + + { "inet_listener", "sieve" }, + + { "inet_listener/sieve/port", "4190" }, + + { NULL, NULL } +}; #undef DEF #define DEF(type, name) \ SETTING_DEFINE_STRUCT_##type(#name, name, struct managesieve_login_settings) @@ -99,11 +76,6 @@ static const struct managesieve_login_settings managesieve_login_default_setting .managesieve_notify_capability = NULL }; -static const struct setting_parser_info *managesieve_login_setting_dependencies[] = { - &login_setting_parser_info, - NULL -}; - const struct setting_parser_info managesieve_login_setting_parser_info = { .name = "managesieve_login", @@ -113,8 +85,6 @@ const struct setting_parser_info managesieve_login_setting_parser_info = { .struct_size = sizeof(struct managesieve_login_settings), .pool_offset1 = 1 + offsetof(struct managesieve_login_settings, pool), .parent = NULL, - - .dependencies = managesieve_login_setting_dependencies }; const struct setting_parser_info *managesieve_login_settings_set_roots[] = { diff --git a/src/managesieve/managesieve-settings.c b/src/managesieve/managesieve-settings.c index 7580a2479ec897c3fb5250caf50b82f347e81252..8416a6df559dd8a99efe0b81db5bad1577f067fd 100644 --- a/src/managesieve/managesieve-settings.c +++ b/src/managesieve/managesieve-settings.c @@ -17,31 +17,6 @@ static bool managesieve_settings_verify(void *_set, pool_t pool, const char **error_r); -/* <settings checks> */ -static struct file_listener_settings managesieve_unix_listeners_array[] = { - { - .path = "login/sieve", - .mode = 0666, - .user = "", - .group = "", - }, - { - .path = "srv.managesieve/%{pid}", - .type = "admin", - .mode = 0600, - .user = "", - .group = "", - }, -}; -static struct file_listener_settings *managesieve_unix_listeners[] = { - &managesieve_unix_listeners_array[0], - &managesieve_unix_listeners_array[1], -}; -static buffer_t managesieve_unix_listeners_buf = { - { { managesieve_unix_listeners, sizeof(managesieve_unix_listeners) } } -}; -/* </settings checks> */ - struct service_settings managesieve_settings_service_settings = { .name = "managesieve", .protocol = "sieve", @@ -62,12 +37,24 @@ struct service_settings managesieve_settings_service_settings = { .idle_kill = 0, .vsz_limit = (uoff_t)-1, - .unix_listeners = { { &managesieve_unix_listeners_buf, - sizeof(managesieve_unix_listeners[0]) } }, + .unix_listeners = ARRAY_INIT, .fifo_listeners = ARRAY_INIT, .inet_listeners = ARRAY_INIT }; +const struct setting_keyvalue managesieve_settings_service_settings_defaults[] = { + { "unix_listener", "login\\ssieve srv.managesieve\\s%{pid}" }, + + { "unix_listener/login\\ssieve/path", "login/sieve" }, + { "unix_listener/login\\ssieve/mode", "0666" }, + + { "unix_listener/srv.managesieve\\s%{pid}/path", "srv.managesieve/%{pid}" }, + { "unix_listener/srv.managesieve\\s%{pid}/type", "admin" }, + { "unix_listener/srv.managesieve\\s%{pid}/mode", "0600" }, + + { NULL, NULL } +}; + #undef DEF #define DEF(type, name) \ SETTING_DEFINE_STRUCT_##type(#name, name, struct managesieve_settings) @@ -102,11 +89,6 @@ static struct managesieve_settings managesieve_default_settings = { .managesieve_max_compile_errors = 5 }; -static const struct setting_parser_info *managesieve_setting_dependencies[] = { - &mail_user_setting_parser_info, - NULL -}; - const struct setting_parser_info managesieve_setting_parser_info = { .name = "managesieve", @@ -118,7 +100,6 @@ const struct setting_parser_info managesieve_setting_parser_info = { .parent = NULL, .check_func = managesieve_settings_verify, - .dependencies = managesieve_setting_dependencies }; static const struct setting_define plugin_setting_defines[] = {