login-settings.c revision 2454dfa32c93c20a8522c6ed42fe057baaac9f9a
bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Bosch/* Copyright (c) 2005-2017 Dovecot authors, see the included COPYING file */
1ebb6094e5105ba7ef521a0177c42d3ea81243f0Aki Tuomistatic bool login_settings_check(void *_set, pool_t pool, const char **error_r);
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk { type, #name, offsetof(struct login_settings, name), NULL }
54a1b3574acab5f778843f7f1e04d2d26d61a852Timo Sirainenstatic const struct setting_define login_setting_defines[] = {
54a1b3574acab5f778843f7f1e04d2d26d61a852Timo Sirainen DEF(SET_TIME, login_proxy_max_disconnect_delay),
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volkstatic const struct login_settings login_default_settings = {
1ebb6094e5105ba7ef521a0177c42d3ea81243f0Aki Tuomi .login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c session=<%{session}>",
1ebb6094e5105ba7ef521a0177c42d3ea81243f0Aki Tuomiconst struct setting_parser_info login_setting_parser_info = {
1ebb6094e5105ba7ef521a0177c42d3ea81243f0Aki Tuomistatic const struct setting_parser_info *default_login_set_roots[] = {
1ebb6094e5105ba7ef521a0177c42d3ea81243f0Aki Tuomiconst struct setting_parser_info **login_set_roots = default_login_set_roots;
1ebb6094e5105ba7ef521a0177c42d3ea81243f0Aki Tuomistatic struct master_service_settings_cache *set_cache;
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk/* <settings checks> */
605c40c77fc3851cb2845da1c5319e32c791592aSergey Kitovstatic bool login_settings_check(void *_set, pool_t pool,
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk p_strsplit(pool, set->login_log_format_elements, " ");
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk/* </settings checks> */
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volkstatic const struct var_expand_table *
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volklogin_set_var_expand_table(const struct master_service_settings_input *input)
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volkstatic void *
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volklogin_setting_dup(pool_t pool, const struct setting_parser_info *info,
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk const char *error;
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk if (!settings_check(info, pool, dest, &error)) {
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk const struct master_service_ssl_settings **ssl_set_r,
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk const char *error;
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk unsigned int i, count;
1ebb6094e5105ba7ef521a0177c42d3ea81243f0Aki Tuomi set_cache = master_service_settings_cache_init(master_service,
cfb22f2f9b28d5888ba00ad910e47c9a490ca673Aki Tuomi if (master_service_settings_cache_read(set_cache, &input, NULL,
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk i_fatal("Error reading configuration: %s", error);
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk cache_sets = master_service_settings_parser_get_others(master_service, parser);
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk for (count = 0; input.roots[count] != NULL; count++) ;
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk for (i = 0; i < count; i++)
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk sets[i] = login_setting_dup(pool, input.roots[i], cache_sets[i]);
42fb278a57f1c6d7d5d0c7bd2318edb721dc0ec0Pascal Volk if (settings_var_expand(&login_setting_parser_info, sets[0], pool,
*ssl_set_r =
return sets[0];
void login_settings_deinit(void)