login-settings.c revision 46552a931924c2d743f045e95b08c3ce6beda91a
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser/* Copyright (c) 2005-2009 Dovecot authors, see the included COPYING file */
79159a86ddb51071055abd7ee08935bc65b9e7a9Scott Moserstatic bool login_settings_check(void *_set, pool_t pool, const char **error_r);
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser { type, #name, offsetof(struct login_settings, name), NULL }
1e0f62acaacb4e7639d6203a9f008c66be712026Serge Hallynstatic const struct setting_define login_setting_defines[] = {
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moserstatic const struct login_settings login_default_settings = {
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser .login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l %c",
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser .ssl_cipher_list = "ALL:!LOW:!SSLv2:!EXP:!aNULL",
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moserconst struct setting_parser_info login_setting_parser_info = {
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moserstatic const struct setting_parser_info *default_login_set_roots[] = {
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moserconst struct setting_parser_info **login_set_roots = default_login_set_roots;
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser/* <settings checks> */
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moserstatic int ssl_settings_check(void *_set ATTR_UNUSED, const char **error_r)
fb760f70541c9af728eb2ab0c6175875f7448752Scott Moser *error_r = t_strdup_printf("SSL support not compiled in but ssl=%s",
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser if (set->ssl_verify_client_cert && *set->ssl_ca == '\0') {
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser *error_r = "ssl_verify_client_cert set, but ssl_ca not";
cb0c6c020314ee0fea0ce30d209711f7e9c29aaaScott Moserstatic bool login_settings_check(void *_set, pool_t pool, const char **error_r)
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser p_strsplit(pool, set->login_log_format_elements, " ");
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser if (set->ssl_require_client_cert || set->ssl_username_from_cert) {
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser /* if we require valid cert, make sure we also ask for it */
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser /* disabled */
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser *error_r = t_strdup_printf("Unknown ssl setting value: %s",
79159a86ddb51071055abd7ee08935bc65b9e7a9Scott Moser/* </settings checks> */
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moserstatic const struct var_expand_table *
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moserlogin_set_var_expand_table(const struct master_service_settings_input *input)
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moserlogin_settings_read(struct master_service *service, pool_t pool,
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser const char *error;
d24d56d7ee3420bb79238ff84cad07c20cf4757dScott Moser unsigned int i;
65d8ae9c4a66f5ca85289c02dc06d63261c84619Scott Moser /* this function always clears the previous settings pool. since we're
return sets[0];