auth-settings.c revision 9dd1c256910f1fb42823116a641e7edb3ad11970
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Bosch/* Copyright (c) 2005-2009 Dovecot authors, see the included COPYING file */
507ea0bc5b25efb4c96033a19dec66689a50ebd0Baofeng Wangextern const struct setting_parser_info auth_setting_parser_info;
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainenextern const struct setting_parser_info auth_root_setting_parser_info;
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainenstatic bool auth_settings_check(void *_set, pool_t pool, const char **error_r);
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainenstatic bool auth_passdb_settings_check(void *_set, pool_t pool, const char **error_r);
998395f6743fbecc07ee65ae08c416fa6cea9e09Teemu Huovilastatic bool auth_userdb_settings_check(void *_set, pool_t pool, const char **error_r);
507ea0bc5b25efb4c96033a19dec66689a50ebd0Baofeng Wang/* <settings checks> */
507ea0bc5b25efb4c96033a19dec66689a50ebd0Baofeng Wangstatic struct file_listener_settings auth_unix_listeners_array[] = {
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainenstatic struct file_listener_settings *auth_unix_listeners[] = {
19ed8f08b23d6ed204e6b27e5d1c0c6fe6bb11ddPhil Carmody auth_unix_listeners, sizeof(auth_unix_listeners), { 0, }
19ed8f08b23d6ed204e6b27e5d1c0c6fe6bb11ddPhil Carmody/* </settings checks> */
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainenstruct service_settings auth_service_settings = {
83172e28d4ac684dfed83f7c9db933493d7c5922Timo Sirainen .unix_listeners = { { &auth_unix_listeners_buf,
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainen/* <settings checks> */
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainenstatic struct file_listener_settings auth_worker_unix_listeners_array[] = {
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovilastatic struct file_listener_settings *auth_worker_unix_listeners[] = {
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainenstatic buffer_t auth_worker_unix_listeners_buf = {
f5c0d5cada4da23a167c38426d0c481a3e1d5583Timo Sirainen auth_worker_unix_listeners, sizeof(auth_worker_unix_listeners), { 0, }
f5c0d5cada4da23a167c38426d0c481a3e1d5583Timo Sirainen/* </settings checks> */
f5c0d5cada4da23a167c38426d0c481a3e1d5583Timo Sirainenstruct service_settings auth_worker_service_settings = {
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainen .unix_listeners = { { &auth_worker_unix_listeners_buf,
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainen { type, #name, offsetof(struct auth_passdb_settings, name), NULL }
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainenstatic const struct setting_define auth_passdb_setting_defines[] = {
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainenconst struct setting_parser_info auth_passdb_setting_parser_info = {
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainen .struct_size = sizeof(struct auth_passdb_settings),
507ea0bc5b25efb4c96033a19dec66689a50ebd0Baofeng Wang { type, #name, offsetof(struct auth_userdb_settings, name), NULL }
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainenstatic const struct setting_define auth_userdb_setting_defines[] = {
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainenconst struct setting_parser_info auth_userdb_setting_parser_info = {
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainen .struct_size = sizeof(struct auth_userdb_settings),
c865b0e9c65fd77f7b2ab6f8616d3def5501ecb3Timo Sirainen/* we're kind of kludging here to avoid "auth_" prefix in the struct fields */
3448096d5b1cd324ed5132045de0345cd7120a25Timo Sirainen { type, "auth_"#name, offsetof(struct auth_settings, name), NULL }
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainen { SET_DEFLIST, name, offsetof(struct auth_settings, field), defines }
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainenstatic const struct setting_define auth_setting_defines[] = {
c865b0e9c65fd77f7b2ab6f8616d3def5501ecb3Timo Sirainen DEFLIST(passdbs, "passdb", &auth_passdb_setting_parser_info),
62fc0b4f07eb6f18a3bff4b1fccb636e6fae3cf4Timo Sirainen DEFLIST(userdbs, "userdb", &auth_userdb_setting_parser_info),
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovilastatic const struct auth_settings auth_default_settings = {
f5c0d5cada4da23a167c38426d0c481a3e1d5583Timo Sirainen .username_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@",
fdf70410de49eadfbb77997bb60ebba19aee4752Teemu Huovilaconst struct setting_parser_info auth_setting_parser_info = {
b6b06530d654f0436bfbaefc1e988d53fff0cbeeTimo Sirainen/* <settings checks> */
b6b06530d654f0436bfbaefc1e988d53fff0cbeeTimo Sirainenstatic bool auth_settings_check(void *_set, pool_t pool ATTR_UNUSED,
c865b0e9c65fd77f7b2ab6f8616d3def5501ecb3Timo Sirainenauth_passdb_settings_check(void *_set, pool_t pool ATTR_UNUSED,
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovila const char **error_r)
568fec5b1e629f25d288b48007485b9aa4a018b1Timo Sirainen if (set->driver == NULL || *set->driver == '\0') {
c865b0e9c65fd77f7b2ab6f8616d3def5501ecb3Timo Sirainenauth_userdb_settings_check(void *_set, pool_t pool ATTR_UNUSED,
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovila const char **error_r)
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovila if (set->driver == NULL || *set->driver == '\0') {
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovila/* </settings checks> */
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovilaauth_settings_read(struct master_service *service)
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovila static const struct setting_parser_info *set_roots[] = {
19ed8f08b23d6ed204e6b27e5d1c0c6fe6bb11ddPhil Carmody if (master_service_settings_read_simple(service, set_roots, &error) < 0)
3a54211bd6c4dc3f8687c16020770551cf83a548Teemu Huovila i_fatal("Error reading configuration: %s", error);