Mercurial > dovecot > core-2.2
annotate src/auth/auth-settings.c @ 12087:27d235096cca
auth: Fail if auth_cache_size value is too small.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 08 Sep 2010 14:55:57 +0100 |
parents | d41694c931d0 |
children | 52e197994a55 |
rev | line source |
---|---|
10582
615eef3139c2
Updated copyright notices to include year 2010.
Timo Sirainen <tss@iki.fi>
parents:
10578
diff
changeset
|
1 /* Copyright (c) 2005-2010 Dovecot authors, see the included COPYING file */ |
9002 | 2 |
3 #include "lib.h" | |
4 #include "array.h" | |
5 #include "settings-parser.h" | |
10953
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
6 #include "master-service-private.h" |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9057
diff
changeset
|
7 #include "master-service-settings.h" |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
8 #include "service-settings.h" |
9002 | 9 #include "auth-settings.h" |
10 | |
11 #include <stddef.h> | |
12 | |
9261
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
13 static bool auth_settings_check(void *_set, pool_t pool, const char **error_r); |
10578
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
14 static bool auth_passdb_settings_check(void *_set, pool_t pool, const char **error_r); |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
15 static bool auth_userdb_settings_check(void *_set, pool_t pool, const char **error_r); |
9261
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
16 |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
17 /* <settings checks> */ |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
18 static struct file_listener_settings auth_unix_listeners_array[] = { |
11285
1a3c9bd45b11
auth: Separate auth and login connections. Non-login requests are freed immediately after auth finished.
Timo Sirainen <tss@iki.fi>
parents:
11251
diff
changeset
|
19 { "login/login", 0666, "", "" }, |
11330
f15b3aac5443
auth: Create auth-login socket by default where internal user can connect to.
Timo Sirainen <tss@iki.fi>
parents:
11285
diff
changeset
|
20 { "auth-login", 0600, "$default_internal_user", "" }, |
10889
653ae02bf8cf
Create auth-client socket by default.
Timo Sirainen <tss@iki.fi>
parents:
10587
diff
changeset
|
21 { "auth-client", 0600, "", "" }, |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
22 { "auth-userdb", 0600, "", "" }, |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
23 { "auth-master", 0600, "", "" } |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
24 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
25 static struct file_listener_settings *auth_unix_listeners[] = { |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
26 &auth_unix_listeners_array[0], |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
27 &auth_unix_listeners_array[1], |
10889
653ae02bf8cf
Create auth-client socket by default.
Timo Sirainen <tss@iki.fi>
parents:
10587
diff
changeset
|
28 &auth_unix_listeners_array[2], |
11330
f15b3aac5443
auth: Create auth-login socket by default where internal user can connect to.
Timo Sirainen <tss@iki.fi>
parents:
11285
diff
changeset
|
29 &auth_unix_listeners_array[3], |
f15b3aac5443
auth: Create auth-login socket by default where internal user can connect to.
Timo Sirainen <tss@iki.fi>
parents:
11285
diff
changeset
|
30 &auth_unix_listeners_array[4] |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
31 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
32 static buffer_t auth_unix_listeners_buf = { |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
33 auth_unix_listeners, sizeof(auth_unix_listeners), { 0, } |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
34 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
35 /* </settings checks> */ |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
36 |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
37 struct service_settings auth_service_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
38 .name = "auth", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
39 .protocol = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
40 .type = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
41 .executable = "auth", |
10910
858ad8aa7f8b
auth: Auth master process is now running as default_internal_user by default.
Timo Sirainen <tss@iki.fi>
parents:
10905
diff
changeset
|
42 .user = "$default_internal_user", |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
43 .group = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
44 .privileged_group = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
45 .extra_groups = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
46 .chroot = "", |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
47 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
48 .drop_priv_before_exec = FALSE, |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
49 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
50 .process_min_avail = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
51 .process_limit = 1, |
10978
7d7540af8446
auth: Increased default client_limit to 4096.
Timo Sirainen <tss@iki.fi>
parents:
10953
diff
changeset
|
52 .client_limit = 4096, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
53 .service_count = 0, |
11631
d41694c931d0
Added support for per-service idle kill timeout.
Timo Sirainen <tss@iki.fi>
parents:
11330
diff
changeset
|
54 .idle_kill = 0, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
55 .vsz_limit = -1U, |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
56 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
57 .unix_listeners = { { &auth_unix_listeners_buf, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
58 sizeof(auth_unix_listeners[0]) } }, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
59 .fifo_listeners = ARRAY_INIT, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
60 .inet_listeners = ARRAY_INIT |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
61 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
62 |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
63 /* <settings checks> */ |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
64 static struct file_listener_settings auth_worker_unix_listeners_array[] = { |
10910
858ad8aa7f8b
auth: Auth master process is now running as default_internal_user by default.
Timo Sirainen <tss@iki.fi>
parents:
10905
diff
changeset
|
65 { "auth-worker", 0600, "$default_internal_user", "" } |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
66 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
67 static struct file_listener_settings *auth_worker_unix_listeners[] = { |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
68 &auth_worker_unix_listeners_array[0] |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
69 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
70 static buffer_t auth_worker_unix_listeners_buf = { |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
71 auth_worker_unix_listeners, sizeof(auth_worker_unix_listeners), { 0, } |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
72 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
73 /* </settings checks> */ |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
74 |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
75 struct service_settings auth_worker_service_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
76 .name = "auth-worker", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
77 .protocol = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
78 .type = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
79 .executable = "auth -w", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
80 .user = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
81 .group = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
82 .privileged_group = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
83 .extra_groups = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
84 .chroot = "", |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
85 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
86 .drop_priv_before_exec = FALSE, |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
87 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
88 .process_min_avail = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
89 .process_limit = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
90 .client_limit = 1, |
10921
87c462c463cc
auth: Changed worker process to die after auth server closes its connection.
Timo Sirainen <tss@iki.fi>
parents:
10910
diff
changeset
|
91 .service_count = 1, |
11631
d41694c931d0
Added support for per-service idle kill timeout.
Timo Sirainen <tss@iki.fi>
parents:
11330
diff
changeset
|
92 .idle_kill = 0, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
93 .vsz_limit = -1U, |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
94 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
95 .unix_listeners = { { &auth_worker_unix_listeners_buf, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
96 sizeof(auth_worker_unix_listeners[0]) } }, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
97 .fifo_listeners = ARRAY_INIT, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
98 .inet_listeners = ARRAY_INIT |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
99 }; |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10177
diff
changeset
|
100 |
9002 | 101 #undef DEF |
102 #define DEF(type, name) \ | |
103 { type, #name, offsetof(struct auth_passdb_settings, name), NULL } | |
104 | |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
105 static const struct setting_define auth_passdb_setting_defines[] = { |
9002 | 106 DEF(SET_STR, driver), |
107 DEF(SET_STR, args), | |
108 DEF(SET_BOOL, deny), | |
10576
9c80cc65def8
auth: passdb { pass and master } settings weren't working.
Timo Sirainen <tss@iki.fi>
parents:
10410
diff
changeset
|
109 DEF(SET_BOOL, pass), |
9c80cc65def8
auth: passdb { pass and master } settings weren't working.
Timo Sirainen <tss@iki.fi>
parents:
10410
diff
changeset
|
110 DEF(SET_BOOL, master), |
9002 | 111 |
112 SETTING_DEFINE_LIST_END | |
113 }; | |
114 | |
10905
cb26518a7e51
auth: Fixed compiling config binary.
Timo Sirainen <tss@iki.fi>
parents:
10903
diff
changeset
|
115 static const struct auth_passdb_settings auth_passdb_default_settings = { |
10897
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
116 .driver = "", |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
117 .args = "", |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
118 .deny = FALSE, |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
119 .pass = FALSE, |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
120 .master = FALSE |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
121 }; |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
122 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
123 const struct setting_parser_info auth_passdb_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
124 .defines = auth_passdb_setting_defines, |
10905
cb26518a7e51
auth: Fixed compiling config binary.
Timo Sirainen <tss@iki.fi>
parents:
10903
diff
changeset
|
125 .defaults = &auth_passdb_default_settings, |
9002 | 126 |
10578
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
127 .type_offset = (size_t)-1, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
128 .struct_size = sizeof(struct auth_passdb_settings), |
9002 | 129 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
130 .parent_offset = (size_t)-1, |
10578
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
131 .parent = &auth_setting_parser_info, |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
132 |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
133 .check_func = auth_passdb_settings_check |
9002 | 134 }; |
135 | |
136 #undef DEF | |
137 #define DEF(type, name) \ | |
138 { type, #name, offsetof(struct auth_userdb_settings, name), NULL } | |
139 | |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
140 static const struct setting_define auth_userdb_setting_defines[] = { |
9002 | 141 DEF(SET_STR, driver), |
142 DEF(SET_STR, args), | |
143 | |
144 SETTING_DEFINE_LIST_END | |
145 }; | |
146 | |
10905
cb26518a7e51
auth: Fixed compiling config binary.
Timo Sirainen <tss@iki.fi>
parents:
10903
diff
changeset
|
147 static const struct auth_userdb_settings auth_userdb_default_settings = { |
10897
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
148 .driver = "", |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
149 .args = "" |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
150 }; |
52eb8317514f
auth: Cleaned up struct auth_passdb/auth_userdb.
Timo Sirainen <tss@iki.fi>
parents:
10896
diff
changeset
|
151 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
152 const struct setting_parser_info auth_userdb_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
153 .defines = auth_userdb_setting_defines, |
10905
cb26518a7e51
auth: Fixed compiling config binary.
Timo Sirainen <tss@iki.fi>
parents:
10903
diff
changeset
|
154 .defaults = &auth_userdb_default_settings, |
9002 | 155 |
10578
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
156 .type_offset = (size_t)-1, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
157 .struct_size = sizeof(struct auth_userdb_settings), |
9002 | 158 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
159 .parent_offset = (size_t)-1, |
10578
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
160 .parent = &auth_setting_parser_info, |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
161 |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
162 .check_func = auth_userdb_settings_check |
9002 | 163 }; |
164 | |
9834
3f4d796db5fd
config: Auth settings now require the "auth_" prefix also inside auth blocks.
Timo Sirainen <tss@iki.fi>
parents:
9451
diff
changeset
|
165 /* we're kind of kludging here to avoid "auth_" prefix in the struct fields */ |
9002 | 166 #undef DEF |
11251
6243376eff60
auth: If verbose_proctitle=yes, show auth request counts in ps.
Timo Sirainen <tss@iki.fi>
parents:
10978
diff
changeset
|
167 #undef DEF_NOPREFIX |
9002 | 168 #undef DEFLIST |
169 #define DEF(type, name) \ | |
9834
3f4d796db5fd
config: Auth settings now require the "auth_" prefix also inside auth blocks.
Timo Sirainen <tss@iki.fi>
parents:
9451
diff
changeset
|
170 { type, "auth_"#name, offsetof(struct auth_settings, name), NULL } |
11251
6243376eff60
auth: If verbose_proctitle=yes, show auth request counts in ps.
Timo Sirainen <tss@iki.fi>
parents:
10978
diff
changeset
|
171 #define DEF_NOPREFIX(type, name) \ |
6243376eff60
auth: If verbose_proctitle=yes, show auth request counts in ps.
Timo Sirainen <tss@iki.fi>
parents:
10978
diff
changeset
|
172 { type, #name, offsetof(struct auth_settings, name), NULL } |
9002 | 173 #define DEFLIST(field, name, defines) \ |
174 { SET_DEFLIST, name, offsetof(struct auth_settings, field), defines } | |
175 | |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
176 static const struct setting_define auth_setting_defines[] = { |
9002 | 177 DEF(SET_STR, mechanisms), |
178 DEF(SET_STR, realms), | |
179 DEF(SET_STR, default_realm), | |
10281
4b663b9e63af
Added "size" setting type, which supports B/k/M/G/T suffixes.
Timo Sirainen <tss@iki.fi>
parents:
10179
diff
changeset
|
180 DEF(SET_SIZE, cache_size), |
10282
7215f4142901
Added "time" (interval) setting type, which supports s/m/h/d/w suffixes.
Timo Sirainen <tss@iki.fi>
parents:
10281
diff
changeset
|
181 DEF(SET_TIME, cache_ttl), |
7215f4142901
Added "time" (interval) setting type, which supports s/m/h/d/w suffixes.
Timo Sirainen <tss@iki.fi>
parents:
10281
diff
changeset
|
182 DEF(SET_TIME, cache_negative_ttl), |
9002 | 183 DEF(SET_STR, username_chars), |
184 DEF(SET_STR, username_translation), | |
185 DEF(SET_STR, username_format), | |
186 DEF(SET_STR, master_user_separator), | |
187 DEF(SET_STR, anonymous_username), | |
188 DEF(SET_STR, krb5_keytab), | |
189 DEF(SET_STR, gssapi_hostname), | |
190 DEF(SET_STR, winbind_helper_path), | |
10282
7215f4142901
Added "time" (interval) setting type, which supports s/m/h/d/w suffixes.
Timo Sirainen <tss@iki.fi>
parents:
10281
diff
changeset
|
191 DEF(SET_TIME, failure_delay), |
9002 | 192 |
193 DEF(SET_BOOL, verbose), | |
194 DEF(SET_BOOL, debug), | |
195 DEF(SET_BOOL, debug_passwords), | |
10585
941511db13c3
Added auth_verbose_passwords = no|plain|sha1.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
196 DEF(SET_ENUM, verbose_passwords), |
9002 | 197 DEF(SET_BOOL, ssl_require_client_cert), |
198 DEF(SET_BOOL, ssl_username_from_cert), | |
199 DEF(SET_BOOL, use_winbind), | |
200 | |
201 DEF(SET_UINT, worker_max_count), | |
202 | |
203 DEFLIST(passdbs, "passdb", &auth_passdb_setting_parser_info), | |
204 DEFLIST(userdbs, "userdb", &auth_userdb_setting_parser_info), | |
205 | |
11251
6243376eff60
auth: If verbose_proctitle=yes, show auth request counts in ps.
Timo Sirainen <tss@iki.fi>
parents:
10978
diff
changeset
|
206 DEF_NOPREFIX(SET_BOOL, verbose_proctitle), |
6243376eff60
auth: If verbose_proctitle=yes, show auth request counts in ps.
Timo Sirainen <tss@iki.fi>
parents:
10978
diff
changeset
|
207 |
9002 | 208 SETTING_DEFINE_LIST_END |
209 }; | |
210 | |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
211 static const struct auth_settings auth_default_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
212 .mechanisms = "plain", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
213 .realms = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
214 .default_realm = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
215 .cache_size = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
216 .cache_ttl = 60*60, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
217 .cache_negative_ttl = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
218 .username_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
219 .username_translation = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
220 .username_format = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
221 .master_user_separator = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
222 .anonymous_username = "anonymous", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
223 .krb5_keytab = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
224 .gssapi_hostname = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
225 .winbind_helper_path = "/usr/bin/ntlm_auth", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
226 .failure_delay = 2, |
9002 | 227 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
228 .verbose = FALSE, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
229 .debug = FALSE, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
230 .debug_passwords = FALSE, |
10585
941511db13c3
Added auth_verbose_passwords = no|plain|sha1.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
231 .verbose_passwords = "no:plain:sha1", |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
232 .ssl_require_client_cert = FALSE, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
233 .ssl_username_from_cert = FALSE, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
234 .use_winbind = FALSE, |
9002 | 235 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
236 .worker_max_count = 30, |
9002 | 237 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
238 .passdbs = ARRAY_INIT, |
11251
6243376eff60
auth: If verbose_proctitle=yes, show auth request counts in ps.
Timo Sirainen <tss@iki.fi>
parents:
10978
diff
changeset
|
239 .userdbs = ARRAY_INIT, |
6243376eff60
auth: If verbose_proctitle=yes, show auth request counts in ps.
Timo Sirainen <tss@iki.fi>
parents:
10978
diff
changeset
|
240 |
6243376eff60
auth: If verbose_proctitle=yes, show auth request counts in ps.
Timo Sirainen <tss@iki.fi>
parents:
10978
diff
changeset
|
241 .verbose_proctitle = FALSE |
9002 | 242 }; |
243 | |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
244 const struct setting_parser_info auth_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
245 .module_name = "auth", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
246 .defines = auth_setting_defines, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
247 .defaults = &auth_default_settings, |
9002 | 248 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
249 .type_offset = (size_t)-1, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
250 .struct_size = sizeof(struct auth_settings), |
9002 | 251 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
252 .parent_offset = (size_t)-1, |
10106
5a25b4ec5694
Reordered struct setting_parser_info fields to make using them easier.
Timo Sirainen <tss@iki.fi>
parents:
9846
diff
changeset
|
253 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10282
diff
changeset
|
254 .check_func = auth_settings_check |
9002 | 255 }; |
256 | |
9261
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
257 /* <settings checks> */ |
10892
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
258 static bool auth_settings_check(void *_set, pool_t pool, |
12087
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
259 const char **error_r) |
9261
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
260 { |
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
261 struct auth_settings *set = _set; |
10892
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
262 const char *p; |
9261
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
263 |
9451
d86490ef27bd
auth: Fixed auth_debug_password -> auth_debug -> auth_Verbose cascading.
Timo Sirainen <tss@iki.fi>
parents:
9267
diff
changeset
|
264 if (set->debug_passwords) |
d86490ef27bd
auth: Fixed auth_debug_password -> auth_debug -> auth_Verbose cascading.
Timo Sirainen <tss@iki.fi>
parents:
9267
diff
changeset
|
265 set->debug = TRUE; |
d86490ef27bd
auth: Fixed auth_debug_password -> auth_debug -> auth_Verbose cascading.
Timo Sirainen <tss@iki.fi>
parents:
9267
diff
changeset
|
266 if (set->debug) |
d86490ef27bd
auth: Fixed auth_debug_password -> auth_debug -> auth_Verbose cascading.
Timo Sirainen <tss@iki.fi>
parents:
9267
diff
changeset
|
267 set->verbose = TRUE; |
10892
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
268 |
12087
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
269 if (set->cache_size < 1024) { |
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
270 /* probably a configuration error. |
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
271 older versions used megabyte numbers */ |
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
272 *error_r = t_strdup_printf("auth_cache_size value is too small " |
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
273 "(%"PRIuUOFF_T" bytes)", |
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
274 set->cache_size); |
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
275 return FALSE; |
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
276 } |
27d235096cca
auth: Fail if auth_cache_size value is too small.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
277 |
10892
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
278 if (*set->username_chars == '\0') { |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
279 /* all chars are allowed */ |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
280 memset(set->username_chars_map, 1, |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
281 sizeof(set->username_chars_map)); |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
282 } else { |
10896
f93195ae4bed
auth: Recent changes broke auth_username_chars checking.
Timo Sirainen <tss@iki.fi>
parents:
10893
diff
changeset
|
283 for (p = set->username_chars; *p != '\0'; p++) |
10892
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
284 set->username_chars_map[(int)(uint8_t)*p] = 1; |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
285 } |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
286 |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
287 if (*set->username_translation != '\0') { |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
288 p = set->username_translation; |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
289 for (; *p != '\0' && p[1] != '\0'; p += 2) |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
290 set->username_translation_map[(int)(uint8_t)*p] = p[1]; |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
291 } |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
292 set->realms_arr = |
9675d9a54ac9
auth: Moved some variables generated from settings to struct auth_settings.
Timo Sirainen <tss@iki.fi>
parents:
10889
diff
changeset
|
293 (const char *const *)p_strsplit_spaces(pool, set->realms, " "); |
9261
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
294 return TRUE; |
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
295 } |
10578
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
296 |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
297 static bool |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
298 auth_passdb_settings_check(void *_set, pool_t pool ATTR_UNUSED, |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
299 const char **error_r) |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
300 { |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
301 struct auth_passdb_settings *set = _set; |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
302 |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
303 if (set->driver == NULL || *set->driver == '\0') { |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
304 *error_r = "passdb is missing driver"; |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
305 return FALSE; |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
306 } |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
307 return TRUE; |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
308 } |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
309 |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
310 static bool |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
311 auth_userdb_settings_check(void *_set, pool_t pool ATTR_UNUSED, |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
312 const char **error_r) |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
313 { |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
314 struct auth_userdb_settings *set = _set; |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
315 |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
316 if (set->driver == NULL || *set->driver == '\0') { |
10587
bea4b2d1f27f
auth: Fixed "userdb is missing driver" error.
Timo Sirainen <tss@iki.fi>
parents:
10585
diff
changeset
|
317 *error_r = "userdb is missing driver"; |
10578
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
318 return FALSE; |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
319 } |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
320 return TRUE; |
a2ed5c020cfa
auth: Don't use section names for passdb/userdb driver names.
Timo Sirainen <tss@iki.fi>
parents:
10576
diff
changeset
|
321 } |
9261
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
322 /* </settings checks> */ |
5e80d667a827
auth settings: Make sure we have a section name defined.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
323 |
10893
1a4c2e4bff75
auth: auth_userdb and auth_passdb no longer has pointer to struct auth.
Timo Sirainen <tss@iki.fi>
parents:
10892
diff
changeset
|
324 struct auth_settings *global_auth_settings; |
1a4c2e4bff75
auth: auth_userdb and auth_passdb no longer has pointer to struct auth.
Timo Sirainen <tss@iki.fi>
parents:
10892
diff
changeset
|
325 |
10953
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
326 struct auth_settings * |
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
327 auth_settings_read(const char *service, pool_t pool, |
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
328 struct master_service_settings_output *output_r) |
9002 | 329 { |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9057
diff
changeset
|
330 static const struct setting_parser_info *set_roots[] = { |
9846
cf27080f3fcf
config: Removed auth sections completely for now.
Timo Sirainen <tss@iki.fi>
parents:
9834
diff
changeset
|
331 &auth_setting_parser_info, |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9057
diff
changeset
|
332 NULL |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9057
diff
changeset
|
333 }; |
10903
6e639833c3fc
auth: Initial support for per-protocol auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10897
diff
changeset
|
334 struct master_service_settings_input input; |
10953
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
335 struct setting_parser_context *set_parser; |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9057
diff
changeset
|
336 const char *error; |
9002 | 337 |
10903
6e639833c3fc
auth: Initial support for per-protocol auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10897
diff
changeset
|
338 memset(&input, 0, sizeof(input)); |
6e639833c3fc
auth: Initial support for per-protocol auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10897
diff
changeset
|
339 input.roots = set_roots; |
6e639833c3fc
auth: Initial support for per-protocol auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10897
diff
changeset
|
340 input.module = "auth"; |
6e639833c3fc
auth: Initial support for per-protocol auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10897
diff
changeset
|
341 input.service = service; |
6e639833c3fc
auth: Initial support for per-protocol auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10897
diff
changeset
|
342 if (master_service_settings_read(master_service, &input, |
10953
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
343 output_r, &error) < 0) |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9057
diff
changeset
|
344 i_fatal("Error reading configuration: %s", error); |
9002 | 345 |
10953
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
346 set_parser = settings_parser_dup(master_service->set_parser, pool); |
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
347 if (!settings_parser_check(set_parser, pool, &error)) |
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
348 i_unreached(); |
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
349 |
bdef690d41d5
auth: Fixed support for per-service auth settings.
Timo Sirainen <tss@iki.fi>
parents:
10921
diff
changeset
|
350 return settings_parser_get_list(set_parser)[1]; |
9002 | 351 } |