login-settings.c revision 5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294
5f5870385cff47efd2f58e7892f251cf13761528Timo Sirainen/* Copyright (c) 2005-2013 Dovecot authors, see the included COPYING file */
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenstatic bool login_settings_check(void *_set, pool_t pool, const char **error_r);
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen { type, #name, offsetof(struct login_settings, name), NULL }
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenstatic const struct setting_define login_setting_defines[] = {
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenstatic const struct login_settings login_default_settings = {
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen .login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c session=<%{session}>",
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenconst struct setting_parser_info login_setting_parser_info = {
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenstatic const struct setting_parser_info *default_login_set_roots[] = {
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenconst struct setting_parser_info **login_set_roots = default_login_set_roots;
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenstatic struct master_service_settings_cache *set_cache;
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen/* <settings checks> */
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenstatic bool login_settings_check(void *_set, pool_t pool,
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen p_strsplit(pool, set->login_log_format_elements, " ");
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen/* </settings checks> */
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenstatic const struct var_expand_table *
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenlogin_set_var_expand_table(const struct master_service_settings_input *input)
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen static struct var_expand_table static_tab[] = {
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen tab[1].value = net_ip2addr(&input->remote_ip);
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainenlogin_setting_dup(pool_t pool, const struct setting_parser_info *info,
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen if (!settings_check(info, pool, dest, &error)) {
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen const struct master_service_ssl_settings **ssl_set_r,
0c17af9d3f9323136a94e66605776ed4462a172dTimo Sirainen unsigned int i, count;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen set_cache = master_service_settings_cache_init(master_service,
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen if (master_service_settings_cache_read(set_cache, &input, NULL,
8e5fedd9ada47735be8ac0f8af2a66e8528bd776Timo Sirainen i_fatal("Error reading configuration: %s", error);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen cache_sets = master_service_settings_parser_get_others(master_service, parser);
e8bdf1be00aec45d0c6dd72ad9c8be02a3dfc778Timo Sirainen for (count = 0; input.roots[count] != NULL; count++) ;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen for (i = 0; i < count; i++)
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen sets[i] = login_setting_dup(pool, input.roots[i], cache_sets[i]);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen settings_var_expand(&login_setting_parser_info, sets[0], pool,
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen login_setting_dup(pool, &master_service_ssl_setting_parser_info,