Mercurial > dovecot > core-2.2
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 |
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 |