]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveconf: Added -I parameter to dump config imported from plugins
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 9 Oct 2024 06:49:26 +0000 (09:49 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:00 +0000 (10:40 +0200)
src/config/config-parser.c
src/config/config-parser.h
src/config/doveconf.c
src/config/main.c

index 4544b6924fe6a9d2da1b813c2da22d13c50f7c57..508f85801c69981ada582d9cbf2df79ffb8adff8 100644 (file)
@@ -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)
index f8f146dcc68de1bb4c02bea2f72442c30d9063c8..fd1e103ee9abe8a353b6af6b7334b278f8d791f5 100644 (file)
@@ -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);
 
index c84df2976cb114f244b07cbf8376e98cfbb78005..dc006392e7c4e99bd1f02095043b7b879e001477 100644 (file)
@@ -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;
index c632999c767527cef04dadb032bdd5e638d91bf6..61b6b7b93421bb4eb76f31b71753e8a90f8b179f 100644 (file)
@@ -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();