auth-settings.c revision f01eb1f51d618633c0189be9ab60a774f47fb7df
2e37d45867d081db150ab78dad303b9077aea24fTimo Sirainen/* Copyright (c) 2005-2012 Dovecot authors, see the included COPYING file */
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstatic bool auth_settings_check(void *_set, pool_t pool, const char **error_r);
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenstatic bool auth_passdb_settings_check(void *_set, pool_t pool, const char **error_r);
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenstatic bool auth_userdb_settings_check(void *_set, pool_t pool, const char **error_r);
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen/* <settings checks> */
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenstatic struct file_listener_settings auth_unix_listeners_array[] = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen { "auth-login", 0600, "$default_internal_user", "" },
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen { "auth-userdb", 0666, "$default_internal_user", "" },
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstatic struct file_listener_settings *auth_unix_listeners[] = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen auth_unix_listeners, sizeof(auth_unix_listeners), { 0, }
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen/* </settings checks> */
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstruct service_settings auth_service_settings = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen .unix_listeners = { { &auth_unix_listeners_buf,
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen/* <settings checks> */
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstatic struct file_listener_settings auth_worker_unix_listeners_array[] = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen { "auth-worker", 0600, "$default_internal_user", "" }
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstatic struct file_listener_settings *auth_worker_unix_listeners[] = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstatic buffer_t auth_worker_unix_listeners_buf = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen auth_worker_unix_listeners, sizeof(auth_worker_unix_listeners), { 0, }
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen/* </settings checks> */
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstruct service_settings auth_worker_service_settings = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen .unix_listeners = { { &auth_worker_unix_listeners_buf,
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen { type, #name, offsetof(struct auth_passdb_settings, name), NULL }
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstatic const struct setting_define auth_passdb_setting_defines[] = {
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenstatic const struct auth_passdb_settings auth_passdb_default_settings = {
636f017be100bce67d66fd3ae1544a47681efd33Timo Sirainen .skip = "never:authenticated:unauthenticated",
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen .result_success = "return-ok:return:return-fail:continue:continue-ok:continue-fail",
c0a87e5f3316a57e6f915882fa1951d0fbb74a61Timo Sirainen .result_failure = "continue:return:return-ok:return-fail:continue-ok:continue-fail",
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen .result_internalfail = "continue:return:return-ok:return-fail:continue-ok:continue-fail",
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenconst struct setting_parser_info auth_passdb_setting_parser_info = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen .struct_size = sizeof(struct auth_passdb_settings),
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen { type, #name, offsetof(struct auth_userdb_settings, name), NULL }
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenstatic const struct setting_define auth_userdb_setting_defines[] = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainenstatic const struct auth_userdb_settings auth_userdb_default_settings = {
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenconst struct setting_parser_info auth_userdb_setting_parser_info = {
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen .struct_size = sizeof(struct auth_userdb_settings),
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen/* we're kind of kludging here to avoid "auth_" prefix in the struct fields */
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen { type, "auth_"#name, offsetof(struct auth_settings, name), NULL }
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen { type, #name, offsetof(struct auth_settings, name), NULL }
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen { SET_DEFLIST, name, offsetof(struct auth_settings, field), defines }
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenstatic const struct setting_define auth_setting_defines[] = {
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen DEFLIST(passdbs, "passdb", &auth_passdb_setting_parser_info),
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainen DEFLIST(userdbs, "userdb", &auth_userdb_setting_parser_info),
9bd607718368ffb39bcfbc82010073364901c5a2Timo Sirainenstatic const struct auth_settings auth_default_settings = {
a6e79dffa06db28bcfad9c1e5fc819c48172d5deTimo Sirainen .username_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@",
.last_valid_uid = 0,
const char **error_r)
const char *const *tmp;
unsigned int ips_count;
int ret;
return TRUE;
if (ret != 0) {
return TRUE;
const char **error_r)
return FALSE;
return FALSE;
return FALSE;
return TRUE;
const char **error_r)
return FALSE;
return FALSE;
return TRUE;
const char **error_r)
return FALSE;
return TRUE;
struct auth_settings *
const char *error;
void **sets;
i_unreached();
return sets[0];