From aeb4c848bca092c67fadc7014ce40b19f997e88a Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Thu, 15 Nov 2018 14:35:36 +0200 Subject: [PATCH] doveadm: Use master service SSL settings --- src/doveadm/doveadm-settings.c | 17 +++++++++++++---- src/doveadm/doveadm-settings.h | 5 +++-- src/doveadm/doveadm.c | 6 +++++- src/doveadm/main.c | 4 +++- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/doveadm/doveadm-settings.c b/src/doveadm/doveadm-settings.c index b3601598c7..72251ee648 100644 --- a/src/doveadm/doveadm-settings.c +++ b/src/doveadm/doveadm-settings.c @@ -5,6 +5,9 @@ #include "settings-parser.h" #include "service-settings.h" #include "mail-storage-settings.h" +#include "master-service.h" +#include "master-service-ssl-settings.h" +#include "iostream-ssl.h" #include "doveadm-settings.h" static bool doveadm_settings_check(void *_set, pool_t pool, const char **error_r); @@ -67,8 +70,6 @@ static const struct setting_define doveadm_setting_defines[] = { DEF(SET_STR, doveadm_allowed_commands), DEF(SET_STR, dsync_alt_char), DEF(SET_STR, dsync_remote_cmd), - DEF(SET_STR, ssl_client_ca_dir), - DEF(SET_STR, ssl_client_ca_file), DEF(SET_STR, director_username_hash), DEF(SET_STR, doveadm_api_key), DEF(SET_STR, dsync_features), @@ -99,8 +100,6 @@ const struct doveadm_settings doveadm_default_settings = { .dsync_features = "", .dsync_hashed_headers = "Date Message-ID", .dsync_commit_msgs_interval = 100, - .ssl_client_ca_dir = "", - .ssl_client_ca_file = "", .director_username_hash = "%Lu", .doveadm_api_key = "", .doveadm_http_rawlog_dir = "", @@ -196,3 +195,13 @@ static bool doveadm_settings_check(void *_set, pool_t pool ATTR_UNUSED, return TRUE; } /* */ + +void doveadm_get_ssl_settings(struct ssl_iostream_settings *set_r, pool_t pool) +{ + const struct master_service_ssl_settings *ssl_set = + master_service_ssl_settings_get(master_service); + i_zero(set_r); + master_service_ssl_settings_to_iostream_set(ssl_set, pool, + MASTER_SERVICE_SSL_SETTINGS_TYPE_CLIENT, + set_r); +} diff --git a/src/doveadm/doveadm-settings.h b/src/doveadm/doveadm-settings.h index 0ad88ff18f..5a714577a5 100644 --- a/src/doveadm/doveadm-settings.h +++ b/src/doveadm/doveadm-settings.h @@ -24,8 +24,6 @@ struct doveadm_settings { const char *doveadm_allowed_commands; const char *dsync_alt_char; const char *dsync_remote_cmd; - const char *ssl_client_ca_dir; - const char *ssl_client_ca_file; const char *director_username_hash; const char *doveadm_api_key; const char *dsync_features; @@ -39,5 +37,8 @@ struct doveadm_settings { extern const struct setting_parser_info doveadm_setting_parser_info; extern struct doveadm_settings *doveadm_settings; extern const struct master_service_settings *service_set; +struct ssl_iostream_settings; + +void doveadm_get_ssl_settings(struct ssl_iostream_settings *set_r, pool_t pool); #endif diff --git a/src/doveadm/doveadm.c b/src/doveadm/doveadm.c index d96d74c5a2..c74a6c2d37 100644 --- a/src/doveadm/doveadm.c +++ b/src/doveadm/doveadm.c @@ -10,6 +10,7 @@ #include "dict.h" #include "master-service-private.h" #include "master-service-settings.h" +#include "master-service-ssl-settings.h" #include "settings-parser.h" #include "doveadm-print-private.h" #include "doveadm-dump.h" @@ -247,6 +248,7 @@ static bool doveadm_has_subcommands(const char *cmd_name) static void doveadm_read_settings(void) { static const struct setting_parser_info *set_roots[] = { + &master_service_ssl_setting_parser_info, &doveadm_setting_parser_info, NULL }; @@ -270,7 +272,7 @@ static void doveadm_read_settings(void) service_set, pool_datastack_create()); doveadm_verbose_proctitle = service_set->verbose_proctitle; - set = master_service_settings_get_others(master_service)[0]; + set = master_service_settings_get_others(master_service)[1]; doveadm_settings = settings_dup(&doveadm_setting_parser_info, set, pool_datastack_create()); @@ -291,6 +293,8 @@ int main(int argc, char *argv[]) enum master_service_flags service_flags = MASTER_SERVICE_FLAG_STANDALONE | MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN | + MASTER_SERVICE_FLAG_USE_SSL_SETTINGS | + MASTER_SERVICE_FLAG_NO_SSL_INIT | MASTER_SERVICE_FLAG_NO_INIT_DATASTACK_FRAME; struct doveadm_cmd_context cctx; const char *cmd_name; diff --git a/src/doveadm/main.c b/src/doveadm/main.c index d42f46b25f..9d353175be 100644 --- a/src/doveadm/main.c +++ b/src/doveadm/main.c @@ -5,6 +5,7 @@ #include "process-title.h" #include "master-service.h" #include "master-service-settings.h" +#include "master-service-ssl-settings.h" #include "settings-parser.h" #include "dict.h" #include "doveadm.h" @@ -72,7 +73,7 @@ static void main_init(void) { doveadm_server = TRUE; doveadm_settings_pool = pool_alloconly_create("doveadm settings", 1024); - doveadm_settings = master_service_settings_get_others(master_service)[0]; + doveadm_settings = master_service_settings_get_others(master_service)[1]; doveadm_settings = settings_dup(&doveadm_setting_parser_info, doveadm_settings, doveadm_settings_pool); doveadm_verbose_proctitle = @@ -104,6 +105,7 @@ static void main_deinit(void) int main(int argc, char *argv[]) { const struct setting_parser_info *set_roots[] = { + &master_service_ssl_setting_parser_info, &doveadm_setting_parser_info, NULL };