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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 #include "login-settings.h"
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 #include <stddef.h>
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 #include <unistd.h>
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18 #undef DEF
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 #define DEF(type, name) \
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20 { type, #name, offsetof(struct login_settings, name), NULL }
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26 DEF(SET_STR, login_log_format_elements),
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 DEF(SET_BOOL, auth_debug),
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 DEF(SET_BOOL, verbose_proctitle),
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47 SETTING_DEFINE_LIST_END
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 };
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 };
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 };
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
103
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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 }