annotate src/login-common/login-common.h @ 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 eb3ae53f8ac0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10549
9ae939146ff7 login-common: Renamed common.h to login-common.h
Timo Sirainen <tss@iki.fi>
parents: 10266
diff changeset
1 #ifndef LOGIN_COMMON_H
9ae939146ff7 login-common: Renamed common.h to login-common.h
Timo Sirainen <tss@iki.fi>
parents: 10266
diff changeset
2 #define LOGIN_COMMON_H
1049
c41787e8c3f4 Moved common login process code to login-common, created pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
c41787e8c3f4 Moved common login process code to login-common, created pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "lib.h"
19035
aabfe48db1cf Changed type of internet port values to in_port_t everywhere.
Stephan Bosch <stephan@rename-it.nl>
parents: 17504
diff changeset
5 #include "net.h"
9002
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents: 8632
diff changeset
6 #include "login-settings.h"
1049
c41787e8c3f4 Moved common login process code to login-common, created pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 3059
diff changeset
8 /* Used only for string sanitization */
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 3059
diff changeset
9 #define MAX_MECH_NAME 64
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 3059
diff changeset
10
2773
e624a9ad6a30 More smart IMAP and POP3 proxies. Now if remote login fails, it just
Timo Sirainen <tss@iki.fi>
parents: 2691
diff changeset
11 #define AUTH_FAILED_MSG "Authentication failed."
3059
08c640bdf749 If authentication failed because of temporary failure, show different error
Timo Sirainen <tss@iki.fi>
parents: 2773
diff changeset
12 #define AUTH_TEMP_FAILED_MSG "Temporary authentication failure."
4924
98780639b190 "Plaintext authentication disabled" -> "Plaintext authentication disallowed
Timo Sirainen <tss@iki.fi>
parents: 4560
diff changeset
13 #define AUTH_PLAINTEXT_DISABLED_MSG \
8564
3c4934783aff Mention SSL/TLS in "plaintext auth disallowed" error.
Timo Sirainen <tss@iki.fi>
parents: 8331
diff changeset
14 "Plaintext authentication disallowed on non-secure (SSL/TLS) connections."
2773
e624a9ad6a30 More smart IMAP and POP3 proxies. Now if remote login fails, it just
Timo Sirainen <tss@iki.fi>
parents: 2691
diff changeset
15
15049
aa6027a0a78e Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents: 14728
diff changeset
16 #define LOGIN_DEFAULT_SOCKET "login"
15051
9ad9a79c1747 Use "tokenlogin" socket name (instead of "token-login") after all.
Timo Sirainen <tss@iki.fi>
parents: 15049
diff changeset
17 #define LOGIN_TOKEN_DEFAULT_SOCKET "tokenlogin"
15049
aa6027a0a78e Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents: 14728
diff changeset
18
11156
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
19 struct login_binary {
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
20 /* e.g. imap, pop3 */
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
21 const char *protocol;
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
22 /* e.g. imap-login, pop3-login */
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
23 const char *process_name;
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 3059
diff changeset
24
11156
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
25 /* e.g. 143, 110 */
19035
aabfe48db1cf Changed type of internet port values to in_port_t everywhere.
Stephan Bosch <stephan@rename-it.nl>
parents: 17504
diff changeset
26 in_port_t default_port;
11156
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
27 /* e.g. 993, 995. if there is no ssl port, use 0. */
19035
aabfe48db1cf Changed type of internet port values to in_port_t everywhere.
Stephan Bosch <stephan@rename-it.nl>
parents: 17504
diff changeset
28 in_port_t default_ssl_port;
12890
6f0396e35fd9 login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents: 11156
diff changeset
29
15049
aa6027a0a78e Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents: 14728
diff changeset
30 /* if value is NULL, LOGIN_DEFAULT_SOCKET is used as the default */
aa6027a0a78e Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents: 14728
diff changeset
31 const char *default_login_socket;
aa6027a0a78e Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents: 14728
diff changeset
32
12890
6f0396e35fd9 login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents: 11156
diff changeset
33 const struct client_vfuncs *client_vfuncs;
6f0396e35fd9 login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents: 11156
diff changeset
34 void (*preinit)(void);
6f0396e35fd9 login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents: 11156
diff changeset
35 void (*init)(void);
6f0396e35fd9 login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents: 11156
diff changeset
36 void (*deinit)(void);
13767
4ecb77154ac7 login: Use AUTH_REQUEST_FLAG_SUPPORT_FINAL_RESP if protocol supports it.
Timo Sirainen <tss@iki.fi>
parents: 13721
diff changeset
37
4ecb77154ac7 login: Use AUTH_REQUEST_FLAG_SUPPORT_FINAL_RESP if protocol supports it.
Timo Sirainen <tss@iki.fi>
parents: 13721
diff changeset
38 bool sasl_support_final_reply;
11156
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
39 };
57e53ecebbd3 login: Keep binary-specific defaults in a struct.
Timo Sirainen <tss@iki.fi>
parents: 11155
diff changeset
40
19572
8bb95d42e5ea *-login: Allow plugins to hook into client allocation and add module-specific contexts to client.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19565
diff changeset
41 struct login_module_register {
8bb95d42e5ea *-login: Allow plugins to hook into client allocation and add module-specific contexts to client.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19565
diff changeset
42 unsigned int id;
8bb95d42e5ea *-login: Allow plugins to hook into client allocation and add module-specific contexts to client.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19565
diff changeset
43 };
8bb95d42e5ea *-login: Allow plugins to hook into client allocation and add module-specific contexts to client.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19565
diff changeset
44 extern struct login_module_register login_module_register;
8bb95d42e5ea *-login: Allow plugins to hook into client allocation and add module-specific contexts to client.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19565
diff changeset
45
12890
6f0396e35fd9 login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents: 11156
diff changeset
46 extern const struct login_binary *login_binary;
1702
43815588dd6b Moved client side code for auth process handling to lib-auth. Some other login process cleanups.
Timo Sirainen <tss@iki.fi>
parents: 1235
diff changeset
47 extern struct auth_client *auth_client;
10101
4fe8c4382712 Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents: 10037
diff changeset
48 extern struct master_auth *master_auth;
19565
103896524313 *-login: Changed -D parameter to mean a more generic login_debug option.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19035
diff changeset
49 extern bool closing_down, login_debug;
10266
e99c02873d8c *-login: Use new anvil library to do async anvil lookups.
Timo Sirainen <tss@iki.fi>
parents: 10198
diff changeset
50 extern struct anvil_client *anvil;
13539
1ff636720b9f login: Added -R <dir> parameter to write pre-login rawlogs to given directory.
Timo Sirainen <tss@iki.fi>
parents: 12890
diff changeset
51 extern const char *login_rawlog_dir;
13721
80558d1b7040 login: Minor potential authentication fix when service_count>1
Timo Sirainen <tss@iki.fi>
parents: 13539
diff changeset
52 extern unsigned int initial_service_count;
20840
1b4a57403aef *-login: Store user_* passdb fields to client->alt_usernames.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19572
diff changeset
53 /* NULL-terminated array of all alt_usernames seen so far. Existing fields are
1b4a57403aef *-login: Store user_* passdb fields to client->alt_usernames.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19572
diff changeset
54 never removed. */
1b4a57403aef *-login: Store user_* passdb fields to client->alt_usernames.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19572
diff changeset
55 extern ARRAY_TYPE(string) global_alt_usernames;
9002
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents: 8632
diff changeset
56
9283
02721ba17309 login processes: Added initial support for per-connection configuration.
Timo Sirainen <tss@iki.fi>
parents: 9235
diff changeset
57 extern const struct login_settings *global_login_settings;
14728
983c6ff12cc9 Moved ssl_* settings from login-common to lib-master.
Timo Sirainen <tss@iki.fi>
parents: 13767
diff changeset
58 extern const struct master_service_ssl_settings *global_ssl_settings;
10111
9a71228ea41c imap-login: If imap_capability is set, use it.
Timo Sirainen <tss@iki.fi>
parents: 10101
diff changeset
59 extern void **global_other_settings;
1049
c41787e8c3f4 Moved common login process code to login-common, created pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60
17504
b6733f4777f1 login proxy: Added login_source_ips setting.
Timo Sirainen <tss@iki.fi>
parents: 15051
diff changeset
61 extern const struct ip_addr *login_source_ips;
b6733f4777f1 login proxy: Added login_source_ips setting.
Timo Sirainen <tss@iki.fi>
parents: 15051
diff changeset
62 extern unsigned int login_source_ips_idx, login_source_ips_count;
b6733f4777f1 login proxy: Added login_source_ips setting.
Timo Sirainen <tss@iki.fi>
parents: 15051
diff changeset
63
10198
3e7e08af2991 *-login: Show better state with verbose_proctitle=yes.
Timo Sirainen <tss@iki.fi>
parents: 10111
diff changeset
64 void login_refresh_proctitle(void);
10760
fc77d1cd1201 *-login: Disconnect from auth server after idling for a minute.
Timo Sirainen <tss@iki.fi>
parents: 10549
diff changeset
65 void login_client_destroyed(void);
fc77d1cd1201 *-login: Disconnect from auth server after idling for a minute.
Timo Sirainen <tss@iki.fi>
parents: 10549
diff changeset
66
21925
eb3ae53f8ac0 *-login: Move code to login_anvil_init()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20840
diff changeset
67 /* Call to guarantee that the "anvil" global variable is initialized. */
eb3ae53f8ac0 *-login: Move code to login_anvil_init()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20840
diff changeset
68 void login_anvil_init(void);
eb3ae53f8ac0 *-login: Move code to login_anvil_init()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20840
diff changeset
69
12890
6f0396e35fd9 login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents: 11156
diff changeset
70 int login_binary_run(const struct login_binary *binary,
6f0396e35fd9 login-common API redesign so that the library doesn't refer to nonexistent variables.
Timo Sirainen <tss@iki.fi>
parents: 11156
diff changeset
71 int argc, char *argv[]);
10037
45cdc5539c93 *-login: Login binaries can now set up their own private settings.
Timo Sirainen <tss@iki.fi>
parents: 9756
diff changeset
72
1049
c41787e8c3f4 Moved common login process code to login-common, created pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73 #endif