Mercurial > dovecot > core-2.2
annotate src/login-common/login-settings.c @ 22310:a28f5bfb15fc
fts: Do not attempt to deinitialize backend if it's not set
If FTS backend initialization fails or does not happen,
flist->backend might end up being NULL, and attempt to
deinitialize NULL won't end well.
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Wed, 17 May 2017 12:26:42 +0300 |
parents | 2e2563132d5f |
children | 69f827f71014 |
rev | line source |
---|---|
21390
2e2563132d5f
Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
21389
diff
changeset
|
1 /* Copyright (c) 2005-2017 Dovecot authors, see the included COPYING file */ |
9002 | 2 |
10549
9ae939146ff7
login-common: Renamed common.h to login-common.h
Timo Sirainen <tss@iki.fi>
parents:
10527
diff
changeset
|
3 #include "login-common.h" |
10154
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
4 #include "hostpid.h" |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
5 #include "var-expand.h" |
9002 | 6 #include "settings-parser.h" |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
7 #include "master-service.h" |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9093
diff
changeset
|
8 #include "master-service-settings.h" |
14728
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
9 #include "master-service-ssl-settings.h" |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
10 #include "master-service-settings-cache.h" |
9002 | 11 #include "login-settings.h" |
12 | |
13 #include <stddef.h> | |
14 #include <unistd.h> | |
15 | |
9045
0145ecc95752
settings_parser_info.check_func() now gets pool parameter if it wants to change settings.
Timo Sirainen <tss@iki.fi>
parents:
9012
diff
changeset
|
16 static bool login_settings_check(void *_set, pool_t pool, const char **error_r); |
9011
c37f7113b1ee
doveconf now checks that all settings are ok by calling check functions.
Timo Sirainen <tss@iki.fi>
parents:
9002
diff
changeset
|
17 |
9002 | 18 #undef DEF |
19 #define DEF(type, name) \ | |
20 { type, #name, offsetof(struct login_settings, name), NULL } | |
21 | |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10154
diff
changeset
|
22 static const struct setting_define login_setting_defines[] = { |
9002 | 23 DEF(SET_STR, login_trusted_networks), |
17504
b6733f4777f1
login proxy: Added login_source_ips setting.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
24 DEF(SET_STR, login_source_ips), |
10154
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
25 DEF(SET_STR_VARS, login_greeting), |
9002 | 26 DEF(SET_STR, login_log_format_elements), |
27 DEF(SET_STR, login_log_format), | |
10647
51a978045f47
Added support for tcpwrappers and potentially other login access checks.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
28 DEF(SET_STR, login_access_sockets), |
19567
11b714c6c31c
*-login: Added login_plugins and login_plugin_dir settings.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
29 DEF(SET_STR, login_plugin_dir), |
11b714c6c31c
*-login: Added login_plugins and login_plugin_dir settings.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
30 DEF(SET_STR, login_plugins), |
19107
2eeef1619161
login proxy: Added delayed disconnection of clients on server mass-disconnect.
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
31 DEF(SET_TIME, login_proxy_max_disconnect_delay), |
14292
817ef4c9f1f3
Added director_username_hash setting to specify what part of the username is hashed.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
32 DEF(SET_STR, director_username_hash), |
9002 | 33 |
13725
700e92b43c74
login proxy: Added ssl_client_cert/key settings.
Timo Sirainen <tss@iki.fi>
parents:
13568
diff
changeset
|
34 DEF(SET_STR, ssl_client_cert), |
700e92b43c74
login proxy: Added ssl_client_cert/key settings.
Timo Sirainen <tss@iki.fi>
parents:
13568
diff
changeset
|
35 DEF(SET_STR, ssl_client_key), |
14520
008c1afeba3c
*-login: Added ssl_require_crl setting.
Timo Sirainen <tss@iki.fi>
parents:
14292
diff
changeset
|
36 DEF(SET_BOOL, ssl_require_crl), |
12683
fd9c01323475
login: ssl_require_client_cert and ssl_username_from_cert settings should have had auth_ prefix.
Timo Sirainen <tss@iki.fi>
parents:
11503
diff
changeset
|
37 DEF(SET_BOOL, auth_ssl_require_client_cert), |
fd9c01323475
login: ssl_require_client_cert and ssl_username_from_cert settings should have had auth_ prefix.
Timo Sirainen <tss@iki.fi>
parents:
11503
diff
changeset
|
38 DEF(SET_BOOL, auth_ssl_username_from_cert), |
9002 | 39 |
40 DEF(SET_BOOL, disable_plaintext_auth), | |
14004
581aaea8569c
login process wasn't logging all intended messages with auth_verbose=yes
Timo Sirainen <tss@iki.fi>
parents:
13772
diff
changeset
|
41 DEF(SET_BOOL, auth_verbose), |
9002 | 42 DEF(SET_BOOL, auth_debug), |
43 DEF(SET_BOOL, verbose_proctitle), | |
44 | |
9235
2e2b957f1cca
Implemented anvil service, which is used to implement mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents:
9234
diff
changeset
|
45 DEF(SET_UINT, mail_max_userip_connections), |
9002 | 46 |
47 SETTING_DEFINE_LIST_END | |
48 }; | |
49 | |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10154
diff
changeset
|
50 static const struct login_settings login_default_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
51 .login_trusted_networks = "", |
17504
b6733f4777f1
login proxy: Added login_source_ips setting.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
52 .login_source_ips = "", |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
53 .login_greeting = PACKAGE_NAME" ready.", |
14525
629afda8e29d
auth: Include session ID in log line prefix.
Timo Sirainen <tss@iki.fi>
parents:
14520
diff
changeset
|
54 .login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c session=<%{session}>", |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
55 .login_log_format = "%$: %s", |
10647
51a978045f47
Added support for tcpwrappers and potentially other login access checks.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
56 .login_access_sockets = "", |
19567
11b714c6c31c
*-login: Added login_plugins and login_plugin_dir settings.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
57 .login_plugin_dir = MODULEDIR"/login", |
11b714c6c31c
*-login: Added login_plugins and login_plugin_dir settings.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
58 .login_plugins = "", |
19107
2eeef1619161
login proxy: Added delayed disconnection of clients on server mass-disconnect.
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
59 .login_proxy_max_disconnect_delay = 0, |
14292
817ef4c9f1f3
Added director_username_hash setting to specify what part of the username is hashed.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
60 .director_username_hash = "%u", |
9002 | 61 |
13725
700e92b43c74
login proxy: Added ssl_client_cert/key settings.
Timo Sirainen <tss@iki.fi>
parents:
13568
diff
changeset
|
62 .ssl_client_cert = "", |
700e92b43c74
login proxy: Added ssl_client_cert/key settings.
Timo Sirainen <tss@iki.fi>
parents:
13568
diff
changeset
|
63 .ssl_client_key = "", |
14520
008c1afeba3c
*-login: Added ssl_require_crl setting.
Timo Sirainen <tss@iki.fi>
parents:
14292
diff
changeset
|
64 .ssl_require_crl = TRUE, |
12683
fd9c01323475
login: ssl_require_client_cert and ssl_username_from_cert settings should have had auth_ prefix.
Timo Sirainen <tss@iki.fi>
parents:
11503
diff
changeset
|
65 .auth_ssl_require_client_cert = FALSE, |
fd9c01323475
login: ssl_require_client_cert and ssl_username_from_cert settings should have had auth_ prefix.
Timo Sirainen <tss@iki.fi>
parents:
11503
diff
changeset
|
66 .auth_ssl_username_from_cert = FALSE, |
9002 | 67 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
68 .disable_plaintext_auth = TRUE, |
14004
581aaea8569c
login process wasn't logging all intended messages with auth_verbose=yes
Timo Sirainen <tss@iki.fi>
parents:
13772
diff
changeset
|
69 .auth_verbose = FALSE, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
70 .auth_debug = FALSE, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
71 .verbose_proctitle = FALSE, |
9002 | 72 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
73 .mail_max_userip_connections = 10 |
9002 | 74 }; |
75 | |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10154
diff
changeset
|
76 const struct setting_parser_info login_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
77 .module_name = "login", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
78 .defines = login_setting_defines, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
79 .defaults = &login_default_settings, |
9002 | 80 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
81 .type_offset = (size_t)-1, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
82 .struct_size = sizeof(struct login_settings), |
9002 | 83 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
84 .parent_offset = (size_t)-1, |
10106
5a25b4ec5694
Reordered struct setting_parser_info fields to make using them easier.
Timo Sirainen <tss@iki.fi>
parents:
10037
diff
changeset
|
85 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10225
diff
changeset
|
86 .check_func = login_settings_check |
9002 | 87 }; |
88 | |
10111
9a71228ea41c
imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
89 static const struct setting_parser_info *default_login_set_roots[] = { |
10037
45cdc5539c93
*-login: Login binaries can now set up their own private settings.
Timo Sirainen <tss@iki.fi>
parents:
10035
diff
changeset
|
90 &login_setting_parser_info, |
45cdc5539c93
*-login: Login binaries can now set up their own private settings.
Timo Sirainen <tss@iki.fi>
parents:
10035
diff
changeset
|
91 NULL |
45cdc5539c93
*-login: Login binaries can now set up their own private settings.
Timo Sirainen <tss@iki.fi>
parents:
10035
diff
changeset
|
92 }; |
45cdc5539c93
*-login: Login binaries can now set up their own private settings.
Timo Sirainen <tss@iki.fi>
parents:
10035
diff
changeset
|
93 |
10111
9a71228ea41c
imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
94 const struct setting_parser_info **login_set_roots = default_login_set_roots; |
9a71228ea41c
imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
95 |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
96 static struct master_service_settings_cache *set_cache; |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
97 |
9011
c37f7113b1ee
doveconf now checks that all settings are ok by calling check functions.
Timo Sirainen <tss@iki.fi>
parents:
9002
diff
changeset
|
98 /* <settings checks> */ |
14728
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
99 static bool login_settings_check(void *_set, pool_t pool, |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
100 const char **error_r ATTR_UNUSED) |
9002 | 101 { |
9011
c37f7113b1ee
doveconf now checks that all settings are ok by calling check functions.
Timo Sirainen <tss@iki.fi>
parents:
9002
diff
changeset
|
102 struct login_settings *set = _set; |
9002 | 103 |
104 set->log_format_elements_split = | |
9283
02721ba17309
login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents:
9275
diff
changeset
|
105 p_strsplit(pool, set->login_log_format_elements, " "); |
9002 | 106 |
14005
520fcb49c939
login: If auth_debug_passwords=yes, assume auth_debug/auth_verbose=yes
Timo Sirainen <tss@iki.fi>
parents:
14004
diff
changeset
|
107 if (set->auth_debug_passwords) |
520fcb49c939
login: If auth_debug_passwords=yes, assume auth_debug/auth_verbose=yes
Timo Sirainen <tss@iki.fi>
parents:
14004
diff
changeset
|
108 set->auth_debug = TRUE; |
14004
581aaea8569c
login process wasn't logging all intended messages with auth_verbose=yes
Timo Sirainen <tss@iki.fi>
parents:
13772
diff
changeset
|
109 if (set->auth_debug) |
581aaea8569c
login process wasn't logging all intended messages with auth_verbose=yes
Timo Sirainen <tss@iki.fi>
parents:
13772
diff
changeset
|
110 set->auth_verbose = TRUE; |
9011
c37f7113b1ee
doveconf now checks that all settings are ok by calling check functions.
Timo Sirainen <tss@iki.fi>
parents:
9002
diff
changeset
|
111 return TRUE; |
9002 | 112 } |
9011
c37f7113b1ee
doveconf now checks that all settings are ok by calling check functions.
Timo Sirainen <tss@iki.fi>
parents:
9002
diff
changeset
|
113 /* </settings checks> */ |
9002 | 114 |
10154
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
115 static const struct var_expand_table * |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
116 login_set_var_expand_table(const struct master_service_settings_input *input) |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
117 { |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
118 static struct var_expand_table static_tab[] = { |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
119 { 'l', NULL, "lip" }, |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
120 { 'r', NULL, "rip" }, |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
121 { 'p', NULL, "pid" }, |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
122 { 's', NULL, "service" }, |
20918
e45c636fc263
auth: Pass local_name to auth-request
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19567
diff
changeset
|
123 { '\0', NULL, "local_name" }, |
10154
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
124 { '\0', NULL, NULL } |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
125 }; |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
126 struct var_expand_table *tab; |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
127 |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
128 tab = t_malloc(sizeof(static_tab)); |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
129 memcpy(tab, static_tab, sizeof(static_tab)); |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
130 |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
131 tab[0].value = net_ip2addr(&input->local_ip); |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
132 tab[1].value = net_ip2addr(&input->remote_ip); |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
133 tab[2].value = my_pid; |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
134 tab[3].value = input->service; |
20918
e45c636fc263
auth: Pass local_name to auth-request
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19567
diff
changeset
|
135 tab[4].value = input->local_name; |
10154
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
136 return tab; |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
137 } |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
138 |
14728
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
139 static void * |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
140 login_setting_dup(pool_t pool, const struct setting_parser_info *info, |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
141 const void *src_set) |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
142 { |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
143 const char *error; |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
144 void *dest; |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
145 |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
146 dest = settings_dup(info, src_set, pool); |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
147 if (!settings_check(info, pool, dest, &error)) { |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
148 const char *name = info->module_name; |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
149 |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
150 i_fatal("settings_check(%s) failed: %s", |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
151 name != NULL ? name : "unknown", error); |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
152 } |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
153 return dest; |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
154 } |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
155 |
9283
02721ba17309
login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents:
9275
diff
changeset
|
156 struct login_settings * |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
157 login_settings_read(pool_t pool, |
9283
02721ba17309
login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents:
9275
diff
changeset
|
158 const struct ip_addr *local_ip, |
10111
9a71228ea41c
imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
159 const struct ip_addr *remote_ip, |
11503
b7fadc4eac7a
config: local_name foo {} is now for TLS SNI. local foo {} only resolves foo to its IP.
Timo Sirainen <tss@iki.fi>
parents:
11358
diff
changeset
|
160 const char *local_name, |
14728
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
161 const struct master_service_ssl_settings **ssl_set_r, |
10111
9a71228ea41c
imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
162 void ***other_settings_r) |
9002 | 163 { |
9263
5d0a69504867
config handling fixes and improvements. Separated module/service lookups. Added support for per-lip/rip settings.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
164 struct master_service_settings_input input; |
9011
c37f7113b1ee
doveconf now checks that all settings are ok by calling check functions.
Timo Sirainen <tss@iki.fi>
parents:
9002
diff
changeset
|
165 const char *error; |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
166 const struct setting_parser_context *parser; |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
167 void *const *cache_sets; |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9093
diff
changeset
|
168 void **sets; |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
169 unsigned int i, count; |
9002 | 170 |
21389
59437f8764c6
global: Replaced all instances of memset(p, 0, sizeof(*p)) with the new i_zero() macro.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
20918
diff
changeset
|
171 i_zero(&input); |
10037
45cdc5539c93
*-login: Login binaries can now set up their own private settings.
Timo Sirainen <tss@iki.fi>
parents:
10035
diff
changeset
|
172 input.roots = login_set_roots; |
12890
6f0396e35fd9
login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents:
12782
diff
changeset
|
173 input.module = login_binary->process_name; |
6f0396e35fd9
login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents:
12782
diff
changeset
|
174 input.service = login_binary->protocol; |
11503
b7fadc4eac7a
config: local_name foo {} is now for TLS SNI. local foo {} only resolves foo to its IP.
Timo Sirainen <tss@iki.fi>
parents:
11358
diff
changeset
|
175 input.local_name = local_name; |
9263
5d0a69504867
config handling fixes and improvements. Separated module/service lookups. Added support for per-lip/rip settings.
Timo Sirainen <tss@iki.fi>
parents:
9244
diff
changeset
|
176 |
9283
02721ba17309
login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents:
9275
diff
changeset
|
177 if (local_ip != NULL) |
02721ba17309
login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents:
9275
diff
changeset
|
178 input.local_ip = *local_ip; |
02721ba17309
login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents:
9275
diff
changeset
|
179 if (remote_ip != NULL) |
02721ba17309
login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents:
9275
diff
changeset
|
180 input.remote_ip = *remote_ip; |
02721ba17309
login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents:
9275
diff
changeset
|
181 |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
182 if (set_cache == NULL) { |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
183 set_cache = master_service_settings_cache_init(master_service, |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
184 input.module, |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
185 input.service); |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
186 } |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
187 |
11078
46d4f3264417
Fixed memory leak when parsing settings.
Timo Sirainen <tss@iki.fi>
parents:
10804
diff
changeset
|
188 if (master_service_settings_cache_read(set_cache, &input, NULL, |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
189 &parser, &error) < 0) |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9093
diff
changeset
|
190 i_fatal("Error reading configuration: %s", error); |
9002 | 191 |
15088
14df6be0111f
Read SSL settings only if service has SSL sockets or MASTER_SERVICE_FLAG_USE_SSL_SETTINGS.
Timo Sirainen <tss@iki.fi>
parents:
14728
diff
changeset
|
192 cache_sets = master_service_settings_parser_get_others(master_service, parser); |
10804
32d6dd7ce7cb
pop3-login: Don't crash at startup.
Timo Sirainen <tss@iki.fi>
parents:
10793
diff
changeset
|
193 for (count = 0; input.roots[count] != NULL; count++) ; |
32d6dd7ce7cb
pop3-login: Don't crash at startup.
Timo Sirainen <tss@iki.fi>
parents:
10793
diff
changeset
|
194 i_assert(cache_sets[count] == NULL); |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
195 sets = p_new(pool, void *, count + 1); |
14728
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
196 for (i = 0; i < count; i++) |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
197 sets[i] = login_setting_dup(pool, input.roots[i], cache_sets[i]); |
10111
9a71228ea41c
imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
198 |
10154
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
199 settings_var_expand(&login_setting_parser_info, sets[0], pool, |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
200 login_set_var_expand_table(&input)); |
ae2d8b121f91
login_greeting setting now supports %variables.
Timo Sirainen <tss@iki.fi>
parents:
10112
diff
changeset
|
201 |
14728
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
202 *ssl_set_r = |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
203 login_setting_dup(pool, &master_service_ssl_setting_parser_info, |
983c6ff12cc9
Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents:
14726
diff
changeset
|
204 settings_parser_get_list(parser)[1]); |
10111
9a71228ea41c
imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
205 *other_settings_r = sets + 1; |
9a71228ea41c
imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
206 return sets[0]; |
9002 | 207 } |
10793
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
208 |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
209 void login_settings_deinit(void) |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
210 { |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
211 if (set_cache != NULL) |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
212 master_service_settings_cache_deinit(&set_cache); |
bf4822f0846b
lib-master: Added support for caching config lookups.
Timo Sirainen <tss@iki.fi>
parents:
10647
diff
changeset
|
213 } |