From: Timo Sirainen Date: Wed, 9 Oct 2024 06:49:26 +0000 (+0300) Subject: doveconf: Added -I parameter to dump config imported from plugins X-Git-Tag: 2.4.1~554 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3b65eb12b6b05a5e344360c5789b15ea5c86906a;p=thirdparty%2Fdovecot%2Fcore.git doveconf: Added -I parameter to dump config imported from plugins --- diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 4544b6924f..508f85801c 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -3000,7 +3000,7 @@ static int config_service_cmp(const struct config_service *s1, return strcmp(s1->set->name, s2->set->name); } -void config_parse_load_modules(void) +void config_parse_load_modules(bool dump_config_import) { struct module_dir_load_settings mod_set; struct module *m; @@ -3070,6 +3070,8 @@ void config_parse_load_modules(void) } else { array_free(&new_services); } + if (dump_config_import) + puts(str_c(config_import)); } void config_parser_deinit(void) diff --git a/src/config/config-parser.h b/src/config/config-parser.h index f8f146dcc6..fd1e103ee9 100644 --- a/src/config/config-parser.h +++ b/src/config/config-parser.h @@ -110,7 +110,7 @@ bool config_parsed_get_includes(struct config_parsed *config, void config_parsed_free(struct config_parsed **config); -void config_parse_load_modules(void); +void config_parse_load_modules(bool dump_config_import); void config_parser_deinit(void); diff --git a/src/config/doveconf.c b/src/config/doveconf.c index c84df2976c..dc006392e7 100644 --- a/src/config/doveconf.c +++ b/src/config/doveconf.c @@ -1027,6 +1027,7 @@ int main(int argc, char *argv[]) bool dump_defaults = FALSE, host_verify = FALSE, dump_full = FALSE; bool print_banners = FALSE, hide_passwords = TRUE; enum config_parse_flags flags = CONFIG_PARSE_FLAG_RETURN_BROKEN_CONFIG; + bool dump_config_import = FALSE; if (getenv("USE_SYSEXITS") != NULL) { /* we're coming from (e.g.) LDA */ @@ -1034,7 +1035,7 @@ int main(int argc, char *argv[]) } master_service = master_service_init("config", master_service_flags, - &argc, &argv, "aCdFhHm:nNpPwxs"); + &argc, &argv, "aCdFhHIm:nNpPwxs"); orig_config_path = t_strdup(master_service_get_config_path(master_service)); i_set_failure_prefix("doveconf: "); @@ -1062,6 +1063,9 @@ int main(int argc, char *argv[]) case 'H': host_verify = TRUE; break; + case 'I': + dump_config_import = TRUE; + break; case 'm': case 'p': /* not supported anymore - ignore */ @@ -1129,7 +1133,13 @@ int main(int argc, char *argv[]) } master_service_init_finish(master_service); settings_set_config_binary(SETTINGS_BINARY_DOVECONF); - config_parse_load_modules(); + config_parse_load_modules(dump_config_import); + if (dump_config_import) { + module_dir_unload(&modules); + config_parser_deinit(); + master_service_deinit(&master_service); + return 0; + } if (print_banners) { struct module *m; diff --git a/src/config/main.c b/src/config/main.c index c632999c76..61b6b7b934 100644 --- a/src/config/main.c +++ b/src/config/main.c @@ -30,7 +30,7 @@ int main(int argc, char *argv[]) restrict_access_allow_coredumps(TRUE); settings_set_config_binary(SETTINGS_BINARY_CONFIG); - config_parse_load_modules(); + config_parse_load_modules(FALSE); config_connections_init();