Mercurial > dovecot > core-2.2
annotate src/master/master-settings.c @ 23017:c1d36f2575c7 default tip
lib-imap: Fix "Don't accept strings with NULs" cherry-pick
author | Timo Sirainen <timo.sirainen@open-xchange.com> |
---|---|
date | Thu, 29 Aug 2019 09:55:25 +0300 |
parents | cb108f786fb4 |
children |
rev | line source |
---|---|
22713
cb108f786fb4
Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
22485
diff
changeset
|
1 /* Copyright (c) 2005-2018 Dovecot authors, see the included COPYING file */ |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "common.h" |
3975
9de8bce1077e
Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents:
3921
diff
changeset
|
4 #include "array.h" |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
5 #include "env-util.h" |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 #include "istream.h" |
15187
02451e967a06
Renamed network.[ch] to net.[ch].
Timo Sirainen <tss@iki.fi>
parents:
15049
diff
changeset
|
7 #include "net.h" |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
8 #include "str.h" |
13060
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
9 #include "ipwd.h" |
3900
7ee2fc733bf6
Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents:
3889
diff
changeset
|
10 #include "mkdir-parents.h" |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
11 #include "safe-mkdir.h" |
13756
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
12 #include "restrict-process-size.h" |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
13 #include "settings-parser.h" |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
14 #include "master-settings.h" |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 |
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 #include <stddef.h> |
3901
0ae5f5b468b7
Put ssl-parameters file into login directory so it still can be accessed
Timo Sirainen <tss@iki.fi>
parents:
3900
diff
changeset
|
17 #include <dirent.h> |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 #include <unistd.h> |
3854
fee060a82236
/var/run/dovecot can be world-readable. Default to it, and don't try to
Timo Sirainen <tss@iki.fi>
parents:
3845
diff
changeset
|
19 #include <sys/stat.h> |
4197
c3ded5b815aa
If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents:
4190
diff
changeset
|
20 #include <sys/wait.h> |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
22 static bool master_settings_verify(void *_set, pool_t pool, |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
23 const char **error_r); |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
24 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
25 extern const struct setting_parser_info service_setting_parser_info; |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
26 |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
27 #undef DEF |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
28 #define DEF(type, name) \ |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
29 { type, #name, offsetof(struct file_listener_settings, name), NULL } |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
30 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
31 static const struct setting_define file_listener_setting_defines[] = { |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
32 DEF(SET_STR, path), |
10555
4d703a15d6b8
master: Changed unix_listener mode setting to octal type.
Timo Sirainen <tss@iki.fi>
parents:
10538
diff
changeset
|
33 DEF(SET_UINT_OCT, mode), |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
34 DEF(SET_STR, user), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
35 DEF(SET_STR, group), |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
36 |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
37 SETTING_DEFINE_LIST_END |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
38 }; |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
39 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
40 static const struct file_listener_settings file_listener_default_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
41 .path = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
42 .mode = 0600, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
43 .user = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
44 .group = "", |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
45 }; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
46 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
47 static const struct setting_parser_info file_listener_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
48 .defines = file_listener_setting_defines, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
49 .defaults = &file_listener_default_settings, |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
50 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
51 .type_offset = offsetof(struct file_listener_settings, path), |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
52 .struct_size = sizeof(struct file_listener_settings), |
10106
5a25b4ec5694
Reordered struct setting_parser_info fields to make using them easier.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
53 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
54 .parent_offset = (size_t)-1, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
55 .parent = &service_setting_parser_info |
1610
6850142c4e25
New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents:
1592
diff
changeset
|
56 }; |
6850142c4e25
New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents:
1592
diff
changeset
|
57 |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
58 #undef DEF |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
59 #define DEF(type, name) \ |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
60 { type, #name, offsetof(struct inet_listener_settings, name), NULL } |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
61 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
62 static const struct setting_define inet_listener_setting_defines[] = { |
10595
9ab4539b736d
Added default inet_listeners for imap/pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
63 DEF(SET_STR, name), |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
64 DEF(SET_STR, address), |
19077
f17065f4f9f2
Removed SET_IN_PORT_ZERO - SET_IN_PORT now always allows zeros as well.
Timo Sirainen <tss@iki.fi>
parents:
19041
diff
changeset
|
65 DEF(SET_IN_PORT, port), |
9218
4a42f694b762
inet_listeners now support ssl=yes. For now only login processes support it.
Timo Sirainen <tss@iki.fi>
parents:
9213
diff
changeset
|
66 DEF(SET_BOOL, ssl), |
16823
a991a0547daa
master: Added reuse_port setting to inet_listeners, which enables SO_REUSEPORT if available.
Timo Sirainen <tss@iki.fi>
parents:
16310
diff
changeset
|
67 DEF(SET_BOOL, reuse_port), |
18952
4d7a83ddb644
lib-master: Added support for HAProxy protocol.
Timo Sirainen <tss@iki.fi>
parents:
18188
diff
changeset
|
68 DEF(SET_BOOL, haproxy), |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
69 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
70 SETTING_DEFINE_LIST_END |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
71 }; |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
72 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
73 static const struct inet_listener_settings inet_listener_default_settings = { |
10595
9ab4539b736d
Added default inet_listeners for imap/pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
74 .name = "", |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
75 .address = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
76 .port = 0, |
16823
a991a0547daa
master: Added reuse_port setting to inet_listeners, which enables SO_REUSEPORT if available.
Timo Sirainen <tss@iki.fi>
parents:
16310
diff
changeset
|
77 .ssl = FALSE, |
18952
4d7a83ddb644
lib-master: Added support for HAProxy protocol.
Timo Sirainen <tss@iki.fi>
parents:
18188
diff
changeset
|
78 .reuse_port = FALSE, |
4d7a83ddb644
lib-master: Added support for HAProxy protocol.
Timo Sirainen <tss@iki.fi>
parents:
18188
diff
changeset
|
79 .haproxy = FALSE |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
80 }; |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
81 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
82 static const struct setting_parser_info inet_listener_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
83 .defines = inet_listener_setting_defines, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
84 .defaults = &inet_listener_default_settings, |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
85 |
10595
9ab4539b736d
Added default inet_listeners for imap/pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
86 .type_offset = offsetof(struct inet_listener_settings, name), |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
87 .struct_size = sizeof(struct inet_listener_settings), |
10106
5a25b4ec5694
Reordered struct setting_parser_info fields to make using them easier.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
88 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
89 .parent_offset = (size_t)-1, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
90 .parent = &service_setting_parser_info |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
91 }; |
1610
6850142c4e25
New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents:
1592
diff
changeset
|
92 |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
93 #undef DEF |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
94 #undef DEFLIST |
10176
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
95 #undef DEFLIST_UNIQUE |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
96 #define DEF(type, name) \ |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
97 { type, #name, offsetof(struct service_settings, name), NULL } |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
98 #define DEFLIST(field, name, defines) \ |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
99 { SET_DEFLIST, name, offsetof(struct service_settings, field), defines } |
10176
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
100 #define DEFLIST_UNIQUE(field, name, defines) \ |
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
101 { SET_DEFLIST_UNIQUE, name, offsetof(struct service_settings, field), defines } |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
102 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
103 static const struct setting_define service_setting_defines[] = { |
9213
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
104 DEF(SET_STR, name), |
9837 | 105 DEF(SET_STR, protocol), |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
106 DEF(SET_STR, type), |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
107 DEF(SET_STR, executable), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
108 DEF(SET_STR, user), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
109 DEF(SET_STR, group), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
110 DEF(SET_STR, privileged_group), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
111 DEF(SET_STR, extra_groups), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
112 DEF(SET_STR, chroot), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
113 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
114 DEF(SET_BOOL, drop_priv_before_exec), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
115 |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
116 DEF(SET_UINT, process_min_avail), |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
117 DEF(SET_UINT, process_limit), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
118 DEF(SET_UINT, client_limit), |
9839
d76916a6df44
Added service_count setting to limit how many requests a service can handle before dying.
Timo Sirainen <tss@iki.fi>
parents:
9837
diff
changeset
|
119 DEF(SET_UINT, service_count), |
11631
d41694c931d0
Added support for per-service idle kill timeout.
Timo Sirainen <tss@iki.fi>
parents:
11307
diff
changeset
|
120 DEF(SET_TIME, idle_kill), |
10281
4b663b9e63af
Added "size" setting type, which supports B/k/M/G/T suffixes.
Timo Sirainen <tss@iki.fi>
parents:
10190
diff
changeset
|
121 DEF(SET_SIZE, vsz_limit), |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
122 |
10176
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
123 DEFLIST_UNIQUE(unix_listeners, "unix_listener", |
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
124 &file_listener_setting_parser_info), |
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
125 DEFLIST_UNIQUE(fifo_listeners, "fifo_listener", |
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
126 &file_listener_setting_parser_info), |
10595
9ab4539b736d
Added default inet_listeners for imap/pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
127 DEFLIST_UNIQUE(inet_listeners, "inet_listener", |
9ab4539b736d
Added default inet_listeners for imap/pop3-login.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
128 &inet_listener_setting_parser_info), |
1610
6850142c4e25
New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents:
1592
diff
changeset
|
129 |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
130 SETTING_DEFINE_LIST_END |
1610
6850142c4e25
New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents:
1592
diff
changeset
|
131 }; |
6850142c4e25
New configuration file code. Some syntax changes, but tries to be somewhat
Timo Sirainen <tss@iki.fi>
parents:
1592
diff
changeset
|
132 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
133 static const struct service_settings service_default_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
134 .name = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
135 .protocol = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
136 .type = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
137 .executable = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
138 .user = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
139 .group = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
140 .privileged_group = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
141 .extra_groups = "", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
142 .chroot = "", |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
143 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
144 .drop_priv_before_exec = FALSE, |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
145 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
146 .process_min_avail = 0, |
12370
b4b6bf889044
master: default_process_limit wasn't actually used anywhere, rather the default was unlimited.
Timo Sirainen <tss@iki.fi>
parents:
12166
diff
changeset
|
147 .process_limit = 0, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
148 .client_limit = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
149 .service_count = 0, |
11631
d41694c931d0
Added support for per-service idle kill timeout.
Timo Sirainen <tss@iki.fi>
parents:
11307
diff
changeset
|
150 .idle_kill = 0, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
151 .vsz_limit = (uoff_t)-1, |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
152 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
153 .unix_listeners = ARRAY_INIT, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
154 .fifo_listeners = ARRAY_INIT, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
155 .inet_listeners = ARRAY_INIT |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
156 }; |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
157 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
158 const struct setting_parser_info service_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
159 .defines = service_setting_defines, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
160 .defaults = &service_default_settings, |
5474
331337b735c9
Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents:
5439
diff
changeset
|
161 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
162 .type_offset = offsetof(struct service_settings, name), |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
163 .struct_size = sizeof(struct service_settings), |
5474
331337b735c9
Added type checks to setting defines.
Timo Sirainen <tss@iki.fi>
parents:
5439
diff
changeset
|
164 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
165 .parent_offset = offsetof(struct service_settings, master_set), |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
166 .parent = &master_setting_parser_info |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
167 }; |
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
168 |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
169 #undef DEF |
10176
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
170 #undef DEFLIST_UNIQUE |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
171 #define DEF(type, name) \ |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
172 { type, #name, offsetof(struct master_settings, name), NULL } |
10176
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
173 #define DEFLIST_UNIQUE(field, name, defines) \ |
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
174 { SET_DEFLIST_UNIQUE, name, offsetof(struct master_settings, field), defines } |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
175 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
176 static const struct setting_define master_setting_defines[] = { |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
177 DEF(SET_STR, base_dir), |
14950
543852ebb327
Made PKG_STATEDIR configurable with state_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
14749
diff
changeset
|
178 DEF(SET_STR, state_dir), |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
179 DEF(SET_STR, libexec_dir), |
13972
e1f21a4ef417
master: Added instance_name setting, which is used to prefix processes in ps output.
Timo Sirainen <tss@iki.fi>
parents:
13922
diff
changeset
|
180 DEF(SET_STR, instance_name), |
9837 | 181 DEF(SET_STR, protocols), |
10023
f69fda5d7af5
master: Added back "listen" setting, which is the default address for inet_listeners.
Timo Sirainen <tss@iki.fi>
parents:
10008
diff
changeset
|
182 DEF(SET_STR, listen), |
9841
331cf0bd593e
master: If ssl=no, skip inet_listeners with ssl=yes.
Timo Sirainen <tss@iki.fi>
parents:
9839
diff
changeset
|
183 DEF(SET_ENUM, ssl), |
10705
bf84cb98bd04
Added default_internal_user and default_login_user settings, which services use as default users.
Timo Sirainen <tss@iki.fi>
parents:
10595
diff
changeset
|
184 DEF(SET_STR, default_internal_user), |
bf84cb98bd04
Added default_internal_user and default_login_user settings, which services use as default users.
Timo Sirainen <tss@iki.fi>
parents:
10595
diff
changeset
|
185 DEF(SET_STR, default_login_user), |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
186 DEF(SET_UINT, default_process_limit), |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
187 DEF(SET_UINT, default_client_limit), |
13922
1362d8bda03c
master: default_idle_kill setting wasn't "time" type.
Timo Sirainen <tss@iki.fi>
parents:
13799
diff
changeset
|
188 DEF(SET_TIME, default_idle_kill), |
10281
4b663b9e63af
Added "size" setting type, which supports B/k/M/G/T suffixes.
Timo Sirainen <tss@iki.fi>
parents:
10190
diff
changeset
|
189 DEF(SET_SIZE, default_vsz_limit), |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
190 |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
191 DEF(SET_BOOL, version_ignore), |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
192 |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
193 DEF(SET_UINT, first_valid_uid), |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
194 DEF(SET_UINT, last_valid_uid), |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
195 DEF(SET_UINT, first_valid_gid), |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
196 DEF(SET_UINT, last_valid_gid), |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
197 |
10176
9e0123366fc5
services, unix/fifo_listeners and namespaces are now sections with unique name.
Timo Sirainen <tss@iki.fi>
parents:
10173
diff
changeset
|
198 DEFLIST_UNIQUE(services, "service", &service_setting_parser_info), |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
199 |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
200 SETTING_DEFINE_LIST_END |
3183
16ea551957ed
Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents:
3166
diff
changeset
|
201 }; |
16ea551957ed
Replaced userdb/passdb settings with blocks so it's possible to give
Timo Sirainen <tss@iki.fi>
parents:
3166
diff
changeset
|
202 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
203 static const struct master_settings master_default_settings = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
204 .base_dir = PKG_RUNDIR, |
14950
543852ebb327
Made PKG_STATEDIR configurable with state_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
14749
diff
changeset
|
205 .state_dir = PKG_STATEDIR, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
206 .libexec_dir = PKG_LIBEXECDIR, |
13972
e1f21a4ef417
master: Added instance_name setting, which is used to prefix processes in ps output.
Timo Sirainen <tss@iki.fi>
parents:
13922
diff
changeset
|
207 .instance_name = PACKAGE, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
208 .protocols = "imap pop3 lmtp", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
209 .listen = "*, ::", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
210 .ssl = "yes:no:required", |
10705
bf84cb98bd04
Added default_internal_user and default_login_user settings, which services use as default users.
Timo Sirainen <tss@iki.fi>
parents:
10595
diff
changeset
|
211 .default_internal_user = "dovecot", |
11272
79a3aef47ddf
Changed default_internal_user to dovenull.
Timo Sirainen <tss@iki.fi>
parents:
11149
diff
changeset
|
212 .default_login_user = "dovenull", |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
213 .default_process_limit = 100, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
214 .default_client_limit = 1000, |
11631
d41694c931d0
Added support for per-service idle kill timeout.
Timo Sirainen <tss@iki.fi>
parents:
11307
diff
changeset
|
215 .default_idle_kill = 60, |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
216 .default_vsz_limit = 256*1024*1024, |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
217 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
218 .version_ignore = FALSE, |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
219 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
220 .first_valid_uid = 500, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
221 .last_valid_uid = 0, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
222 .first_valid_gid = 1, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
223 .last_valid_gid = 0, |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
224 |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10178
diff
changeset
|
225 #ifndef CONFIG_BINARY |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
226 .services = ARRAY_INIT |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10178
diff
changeset
|
227 #else |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
228 .services = { { &config_all_services_buf, |
10179
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10178
diff
changeset
|
229 sizeof(struct service_settings *) } }, |
afe52d60989c
Moved default service settings from master.conf to source code.
Timo Sirainen <tss@iki.fi>
parents:
10178
diff
changeset
|
230 #endif |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
231 }; |
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
232 |
10177
d589d568a19d
Changed all settings related structs to const and changed APIs to make it work.
Timo Sirainen <tss@iki.fi>
parents:
10176
diff
changeset
|
233 const struct setting_parser_info master_setting_parser_info = { |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
234 .module_name = "master", |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
235 .defines = master_setting_defines, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
236 .defaults = &master_default_settings, |
1330
7cde19dbe754
Moved auth_username_chars from db-pgsql to generic for all. Some other
Timo Sirainen <tss@iki.fi>
parents:
1328
diff
changeset
|
237 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
238 .type_offset = (size_t)-1, |
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
239 .struct_size = sizeof(struct master_settings), |
10106
5a25b4ec5694
Reordered struct setting_parser_info fields to make using them easier.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
240 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
241 .parent_offset = (size_t)-1, |
10106
5a25b4ec5694
Reordered struct setting_parser_info fields to make using them easier.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
242 |
10410
b757dab45756
Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents:
10406
diff
changeset
|
243 .check_func = master_settings_verify |
4388
af61031c746f
Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents:
4326
diff
changeset
|
244 }; |
af61031c746f
Settings parser nowadays returns "" instead of NULL when it reads an empty
Timo Sirainen <tss@iki.fi>
parents:
4326
diff
changeset
|
245 |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
246 /* <settings checks> */ |
10915
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
247 static void |
12003
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
248 expand_user(const char **user, enum service_user_default *default_r, |
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
249 const struct master_settings *set) |
10915
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
250 { |
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
251 /* $variable expansion is typically done by doveconf, but these |
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
252 variables can come from built-in settings, so we need to expand |
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
253 them here */ |
12003
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
254 if (strcmp(*user, "$default_internal_user") == 0) { |
10915
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
255 *user = set->default_internal_user; |
12003
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
256 *default_r = SERVICE_USER_DEFAULT_INTERNAL; |
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
257 } else if (strcmp(*user, "$default_login_user") == 0) { |
10915
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
258 *user = set->default_login_user; |
12003
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
259 *default_r = SERVICE_USER_DEFAULT_LOGIN; |
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
260 } else { |
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
261 *default_r = SERVICE_USER_DEFAULT_NONE; |
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
262 } |
10915
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
263 } |
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
264 |
20271
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
265 static bool |
10915
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
266 fix_file_listener_paths(ARRAY_TYPE(file_listener_settings) *l, |
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
267 pool_t pool, const struct master_settings *master_set, |
20271
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
268 ARRAY_TYPE(const_string) *all_listeners, |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
269 const char **error_r) |
4197
c3ded5b815aa
If we have plugins set and imap_capability unset, figure out the IMAP
Timo Sirainen <tss@iki.fi>
parents:
4190
diff
changeset
|
270 { |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
271 struct file_listener_settings *const *sets; |
21322
5ab8dc1a4a6f
global: Change string position/length from unsigned int to size_t
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21115
diff
changeset
|
272 size_t base_dir_len = strlen(master_set->base_dir); |
12003
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
273 enum service_user_default user_default; |
8585
24ccf040026b
Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents:
8584
diff
changeset
|
274 |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
275 if (!array_is_created(l)) |
20271
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
276 return TRUE; |
8585
24ccf040026b
Added a bit more generic get_process_capability() function.
Timo Sirainen <tss@iki.fi>
parents:
8584
diff
changeset
|
277 |
10406 | 278 array_foreach(l, sets) { |
279 struct file_listener_settings *set = *sets; | |
280 | |
20271
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
281 if (set->path[0] == '\0') { |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
282 *error_r = "path must not be empty"; |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
283 return FALSE; |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
284 } |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
285 |
12003
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
286 expand_user(&set->user, &user_default, master_set); |
10406 | 287 if (*set->path != '/') { |
10915
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
288 set->path = p_strconcat(pool, master_set->base_dir, "/", |
10406 | 289 set->path, NULL); |
10915
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
290 } else if (strncmp(set->path, master_set->base_dir, |
7fd91455b66e
master: login dir was created with wrong group.
Timo Sirainen <tss@iki.fi>
parents:
10914
diff
changeset
|
291 base_dir_len) == 0 && |
10538
6f67d3ce4ac4
master: Log warning if unix_listener begins with base_dir's path.
Timo Sirainen <tss@iki.fi>
parents:
10535
diff
changeset
|
292 set->path[base_dir_len] == '/') { |
6f67d3ce4ac4
master: Log warning if unix_listener begins with base_dir's path.
Timo Sirainen <tss@iki.fi>
parents:
10535
diff
changeset
|
293 i_warning("You should remove base_dir prefix from " |
6f67d3ce4ac4
master: Log warning if unix_listener begins with base_dir's path.
Timo Sirainen <tss@iki.fi>
parents:
10535
diff
changeset
|
294 "unix_listener: %s", set->path); |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
295 } |
11307
706e411a134d
master: Don't include disabled unix/fifo_listeners in duplicate checks.
Timo Sirainen <tss@iki.fi>
parents:
11272
diff
changeset
|
296 if (set->mode != 0) |
706e411a134d
master: Don't include disabled unix/fifo_listeners in duplicate checks.
Timo Sirainen <tss@iki.fi>
parents:
11272
diff
changeset
|
297 array_append(all_listeners, &set->path, 1); |
10375
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
298 } |
20271
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
299 return TRUE; |
10375
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
300 } |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
301 |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
302 static void add_inet_listeners(ARRAY_TYPE(inet_listener_settings) *l, |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
303 ARRAY_TYPE(const_string) *all_listeners) |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
304 { |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
305 struct inet_listener_settings *const *sets; |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
306 const char *str; |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
307 |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
308 if (!array_is_created(l)) |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
309 return; |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
310 |
10406 | 311 array_foreach(l, sets) { |
312 struct inet_listener_settings *set = *sets; | |
313 | |
10873
7c2e38d7390c
master: Don't complain about duplicate inet_listeners with port=0 (they're ignored).
Timo Sirainen <tss@iki.fi>
parents:
10705
diff
changeset
|
314 if (set->port != 0) { |
19035
aabfe48db1cf
Changed type of internet port values to in_port_t everywhere.
Stephan Bosch <stephan@rename-it.nl>
parents:
18952
diff
changeset
|
315 str = t_strdup_printf("%u:%s", set->port, set->address); |
10873
7c2e38d7390c
master: Don't complain about duplicate inet_listeners with port=0 (they're ignored).
Timo Sirainen <tss@iki.fi>
parents:
10705
diff
changeset
|
316 array_append(all_listeners, &str, 1); |
7c2e38d7390c
master: Don't complain about duplicate inet_listeners with port=0 (they're ignored).
Timo Sirainen <tss@iki.fi>
parents:
10705
diff
changeset
|
317 } |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
318 } |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
319 } |
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
320 |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
321 static bool master_settings_parse_type(struct service_settings *set, |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
322 const char **error_r) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
323 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
324 if (*set->type == '\0') |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
325 set->parsed_type = SERVICE_TYPE_UNKNOWN; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
326 else if (strcmp(set->type, "log") == 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
327 set->parsed_type = SERVICE_TYPE_LOG; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
328 else if (strcmp(set->type, "config") == 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
329 set->parsed_type = SERVICE_TYPE_CONFIG; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
330 else if (strcmp(set->type, "anvil") == 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
331 set->parsed_type = SERVICE_TYPE_ANVIL; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
332 else if (strcmp(set->type, "login") == 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
333 set->parsed_type = SERVICE_TYPE_LOGIN; |
11968
351948b4dc6c
master: Added service type=startup for starting one service process at startup.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
334 else if (strcmp(set->type, "startup") == 0) |
351948b4dc6c
master: Added service type=startup for starting one service process at startup.
Timo Sirainen <tss@iki.fi>
parents:
11631
diff
changeset
|
335 set->parsed_type = SERVICE_TYPE_STARTUP; |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
336 else { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
337 *error_r = t_strconcat("Unknown service type: ", |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
338 set->type, NULL); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
339 return FALSE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
340 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
341 return TRUE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
342 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
343 |
10116
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
344 static void service_set_login_dump_core(struct service_settings *set) |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
345 { |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
346 const char *p; |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
347 |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
348 if (set->parsed_type != SERVICE_TYPE_LOGIN) |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
349 return; |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
350 |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
351 p = strstr(set->executable, " -D"); |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
352 if (p != NULL && (p[3] == '\0' || p[3] == ' ')) |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
353 set->login_dump_core = TRUE; |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
354 } |
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
355 |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
356 static bool |
10535
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
357 services_have_protocol(struct master_settings *set, const char *name) |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
358 { |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
359 struct service_settings *const *services; |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
360 |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
361 array_foreach(&set->services, services) { |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
362 struct service_settings *service = *services; |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
363 |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
364 if (strcmp(service->protocol, name) == 0) |
10535
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
365 return TRUE; |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
366 } |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
367 return FALSE; |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
368 } |
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
369 |
12166
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
370 #ifdef CONFIG_BINARY |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
371 static const struct service_settings * |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
372 master_default_settings_get_service(const char *name) |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
373 { |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
374 extern struct master_settings master_default_settings; |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
375 struct service_settings *const *setp; |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
376 |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
377 array_foreach(&master_default_settings.services, setp) { |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
378 if (strcmp((*setp)->name, name) == 0) |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
379 return *setp; |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
380 } |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
381 return NULL; |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
382 } |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
383 #endif |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
384 |
12376
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
385 static unsigned int |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
386 service_get_client_limit(struct master_settings *set, const char *name) |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
387 { |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
388 struct service_settings *const *servicep; |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
389 |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
390 array_foreach(&set->services, servicep) { |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
391 if (strcmp((*servicep)->name, name) == 0) { |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
392 if ((*servicep)->client_limit != 0) |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
393 return (*servicep)->client_limit; |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
394 else |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
395 return set->default_client_limit; |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
396 } |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
397 } |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
398 return set->default_client_limit; |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
399 } |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
400 |
10535
e4e31fa845a5
master: Give error message with unknown names in protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
10495
diff
changeset
|
401 static bool |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
402 master_settings_verify(void *_set, pool_t pool, const char **error_r) |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
403 { |
12376
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
404 static int warned_auth = FALSE, warned_anvil = FALSE; |
9837 | 405 struct master_settings *set = _set; |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
406 struct service_settings *const *services; |
10375
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
407 const char *const *strings; |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
408 ARRAY_TYPE(const_string) all_listeners; |
13060
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
409 struct passwd pw; |
21322
5ab8dc1a4a6f
global: Change string position/length from unsigned int to size_t
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21115
diff
changeset
|
410 unsigned int i, j, count, client_limit, process_limit; |
12376
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
411 unsigned int max_auth_client_processes, max_anvil_client_processes; |
21322
5ab8dc1a4a6f
global: Change string position/length from unsigned int to size_t
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21115
diff
changeset
|
412 size_t len; |
13758 | 413 #ifdef CONFIG_BINARY |
414 const struct service_settings *default_service; | |
415 #else | |
416 rlim_t fd_limit; | |
16310
2bf265dc0e68
master: Fixed warning log message.
Timo Sirainen <tss@iki.fi>
parents:
15715
diff
changeset
|
417 const char *max_client_limit_source = "default_client_limit"; |
13758 | 418 unsigned int max_client_limit = set->default_client_limit; |
419 #endif | |
9002
9d0037a997f4
Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents:
8692
diff
changeset
|
420 |
20313
a54a915c7e4d
master: make setting listen empty an error
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
20271
diff
changeset
|
421 if (*set->listen == '\0') { |
a54a915c7e4d
master: make setting listen empty an error
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
20271
diff
changeset
|
422 *error_r = "listen can't be set empty"; |
a54a915c7e4d
master: make setting listen empty an error
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
20271
diff
changeset
|
423 return FALSE; |
a54a915c7e4d
master: make setting listen empty an error
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
20271
diff
changeset
|
424 } |
a54a915c7e4d
master: make setting listen empty an error
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
20271
diff
changeset
|
425 |
10979
2fde82ea7cd9
config: Avoid problems with trailing '/' in base_dir.
Timo Sirainen <tss@iki.fi>
parents:
10977
diff
changeset
|
426 len = strlen(set->base_dir); |
2fde82ea7cd9
config: Avoid problems with trailing '/' in base_dir.
Timo Sirainen <tss@iki.fi>
parents:
10977
diff
changeset
|
427 if (len > 0 && set->base_dir[len-1] == '/') { |
2fde82ea7cd9
config: Avoid problems with trailing '/' in base_dir.
Timo Sirainen <tss@iki.fi>
parents:
10977
diff
changeset
|
428 /* drop trailing '/' */ |
2fde82ea7cd9
config: Avoid problems with trailing '/' in base_dir.
Timo Sirainen <tss@iki.fi>
parents:
10977
diff
changeset
|
429 set->base_dir = p_strndup(pool, set->base_dir, len - 1); |
2fde82ea7cd9
config: Avoid problems with trailing '/' in base_dir.
Timo Sirainen <tss@iki.fi>
parents:
10977
diff
changeset
|
430 } |
2fde82ea7cd9
config: Avoid problems with trailing '/' in base_dir.
Timo Sirainen <tss@iki.fi>
parents:
10977
diff
changeset
|
431 |
4965
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
432 if (set->last_valid_uid != 0 && |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
433 set->first_valid_uid > set->last_valid_uid) { |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
434 *error_r = "first_valid_uid can't be larger than last_valid_uid"; |
4965
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
435 return FALSE; |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
436 } |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
437 if (set->last_valid_gid != 0 && |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
438 set->first_valid_gid > set->last_valid_gid) { |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
439 *error_r = "first_valid_gid can't be larger than last_valid_gid"; |
4965
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
440 return FALSE; |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
441 } |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
442 |
13060
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
443 if (i_getpwnam(set->default_login_user, &pw) == 0) { |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
444 *error_r = t_strdup_printf("default_login_user doesn't exist: %s", |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
445 set->default_login_user); |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
446 return FALSE; |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
447 } |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
448 if (i_getpwnam(set->default_internal_user, &pw) == 0) { |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
449 *error_r = t_strdup_printf("default_internal_user doesn't exist: %s", |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
450 set->default_internal_user); |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
451 return FALSE; |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
452 } |
99da5f4f375d
master: Fail at startup if default_login_user or default_internal_user doesn't exist.
Timo Sirainen <tss@iki.fi>
parents:
13000
diff
changeset
|
453 |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
454 /* check that we have at least one service. the actual service |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
455 structure validity is checked later while creating them. */ |
9857
0830fbbdfecd
settings: Don't crash if no namespaces or services have been created.
Timo Sirainen <tss@iki.fi>
parents:
9841
diff
changeset
|
456 if (!array_is_created(&set->services) || |
0830fbbdfecd
settings: Don't crash if no namespaces or services have been created.
Timo Sirainen <tss@iki.fi>
parents:
9841
diff
changeset
|
457 array_count(&set->services) == 0) { |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
458 *error_r = "No services defined"; |
4965
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
459 return FALSE; |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
460 } |
9857
0830fbbdfecd
settings: Don't crash if no namespaces or services have been created.
Timo Sirainen <tss@iki.fi>
parents:
9841
diff
changeset
|
461 services = array_get(&set->services, &count); |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
462 for (i = 0; i < count; i++) { |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
463 struct service_settings *service = services[i]; |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
464 |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
465 if (*service->name == '\0') { |
9213
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
466 *error_r = t_strdup_printf( |
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
467 "Service #%d is missing name", i); |
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
468 return FALSE; |
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
469 } |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10072
diff
changeset
|
470 if (!master_settings_parse_type(service, error_r)) |
9230
d83bfe8c38c2
Verify that service type string is known. Removed auth-destination type.
Timo Sirainen <tss@iki.fi>
parents:
9226
diff
changeset
|
471 return FALSE; |
9213
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
472 for (j = 0; j < i; j++) { |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
473 if (strcmp(service->name, services[j]->name) == 0) { |
9213
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
474 *error_r = t_strdup_printf( |
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
475 "Duplicate service name: %s", |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
476 service->name); |
9213
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
477 return FALSE; |
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
478 } |
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
479 } |
12003
a2e60bd5d9a7
master: Give better error messages for unknown users/groups.
Timo Sirainen <tss@iki.fi>
parents:
11968
diff
changeset
|
480 expand_user(&service->user, &service->user_default, set); |
10116
50db5e7bddd9
Fixed login processes' core dump handling.
Timo Sirainen <tss@iki.fi>
parents:
10107
diff
changeset
|
481 service_set_login_dump_core(service); |
9213
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
482 } |
11149
ca663b6f63a4
master: Require protocols=none to not have any protocols.
Timo Sirainen <tss@iki.fi>
parents:
10979
diff
changeset
|
483 set->protocols_split = p_strsplit_spaces(pool, set->protocols, " "); |
12820
a6382acebe7e
master: Allow protocols value to be empty (= same as "none")
Timo Sirainen <tss@iki.fi>
parents:
12726
diff
changeset
|
484 if (set->protocols_split[0] != NULL && |
a6382acebe7e
master: Allow protocols value to be empty (= same as "none")
Timo Sirainen <tss@iki.fi>
parents:
12726
diff
changeset
|
485 strcmp(set->protocols_split[0], "none") == 0 && |
11149
ca663b6f63a4
master: Require protocols=none to not have any protocols.
Timo Sirainen <tss@iki.fi>
parents:
10979
diff
changeset
|
486 set->protocols_split[1] == NULL) |
ca663b6f63a4
master: Require protocols=none to not have any protocols.
Timo Sirainen <tss@iki.fi>
parents:
10979
diff
changeset
|
487 set->protocols_split[0] = NULL; |
ca663b6f63a4
master: Require protocols=none to not have any protocols.
Timo Sirainen <tss@iki.fi>
parents:
10979
diff
changeset
|
488 |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
489 for (i = 0; set->protocols_split[i] != NULL; i++) { |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
490 if (!services_have_protocol(set, set->protocols_split[i])) { |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
491 *error_r = t_strdup_printf("protocols: " |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
492 "Unknown protocol: %s", |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
493 set->protocols_split[i]); |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
494 return FALSE; |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
495 } |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
496 } |
10375
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
497 t_array_init(&all_listeners, 64); |
12376
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
498 max_auth_client_processes = 0; |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
499 max_anvil_client_processes = 2; /* blocking, nonblocking pipes */ |
9213
7b3accdf44f8
Require each service to have a unique name. Log service errors using service_error().
Timo Sirainen <tss@iki.fi>
parents:
9211
diff
changeset
|
500 for (i = 0; i < count; i++) { |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
501 struct service_settings *service = services[i]; |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
502 |
15303
4d268e810c15
master: If service { protocol } is set and not included in "protocols", ignore its settings
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
503 if (*service->protocol != '\0' && |
4d268e810c15
master: If service { protocol } is set and not included in "protocols", ignore its settings
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
504 !str_array_find((const char **)set->protocols_split, |
4d268e810c15
master: If service { protocol } is set and not included in "protocols", ignore its settings
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
505 service->protocol)) { |
4d268e810c15
master: If service { protocol } is set and not included in "protocols", ignore its settings
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
506 /* protocol not enabled, ignore its settings */ |
4d268e810c15
master: If service { protocol } is set and not included in "protocols", ignore its settings
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
507 continue; |
4d268e810c15
master: If service { protocol } is set and not included in "protocols", ignore its settings
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
508 } |
4d268e810c15
master: If service { protocol } is set and not included in "protocols", ignore its settings
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
509 |
15340
f423090a363a
master: Ignore service {} blocks with empty executable settings.
Timo Sirainen <tss@iki.fi>
parents:
15337
diff
changeset
|
510 if (*service->executable != '/' && |
f423090a363a
master: Ignore service {} blocks with empty executable settings.
Timo Sirainen <tss@iki.fi>
parents:
15337
diff
changeset
|
511 *service->executable != '\0') { |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
512 service->executable = |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
513 p_strconcat(pool, set->libexec_dir, "/", |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
514 service->executable, NULL); |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
515 } |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
516 if (*service->chroot != '/' && *service->chroot != '\0') { |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
517 service->chroot = |
9211
66bb019c664c
service settings: Base relative chroots under base_dir.
Timo Sirainen <tss@iki.fi>
parents:
9184
diff
changeset
|
518 p_strconcat(pool, set->base_dir, "/", |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
519 service->chroot, NULL); |
9211
66bb019c664c
service settings: Base relative chroots under base_dir.
Timo Sirainen <tss@iki.fi>
parents:
9184
diff
changeset
|
520 } |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
521 if (service->drop_priv_before_exec && |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
522 *service->chroot != '\0') { |
9211
66bb019c664c
service settings: Base relative chroots under base_dir.
Timo Sirainen <tss@iki.fi>
parents:
9184
diff
changeset
|
523 *error_r = t_strdup_printf("service(%s): " |
66bb019c664c
service settings: Base relative chroots under base_dir.
Timo Sirainen <tss@iki.fi>
parents:
9184
diff
changeset
|
524 "drop_priv_before_exec=yes can't be " |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
525 "used with chroot", service->name); |
9211
66bb019c664c
service settings: Base relative chroots under base_dir.
Timo Sirainen <tss@iki.fi>
parents:
9184
diff
changeset
|
526 return FALSE; |
66bb019c664c
service settings: Base relative chroots under base_dir.
Timo Sirainen <tss@iki.fi>
parents:
9184
diff
changeset
|
527 } |
10495
72a0ec4b7e26
config: Don't fail if process_min_avail is set and process_limit is the default.
Timo Sirainen <tss@iki.fi>
parents:
10410
diff
changeset
|
528 process_limit = service->process_limit; |
72a0ec4b7e26
config: Don't fail if process_min_avail is set and process_limit is the default.
Timo Sirainen <tss@iki.fi>
parents:
10410
diff
changeset
|
529 if (process_limit == 0) |
72a0ec4b7e26
config: Don't fail if process_min_avail is set and process_limit is the default.
Timo Sirainen <tss@iki.fi>
parents:
10410
diff
changeset
|
530 process_limit = set->default_process_limit; |
72a0ec4b7e26
config: Don't fail if process_min_avail is set and process_limit is the default.
Timo Sirainen <tss@iki.fi>
parents:
10410
diff
changeset
|
531 if (service->process_min_avail > process_limit) { |
9872
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
532 *error_r = t_strdup_printf("service(%s): " |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
533 "process_min_avail is higher than process_limit", |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
534 service->name); |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
535 return FALSE; |
af7f0be02d3b
master: Added process_min_avail setting for services.
Timo Sirainen <tss@iki.fi>
parents:
9857
diff
changeset
|
536 } |
13000
c3f4201f9818
master: Warn if service's vsz_limit < 1 MB
Timo Sirainen <tss@iki.fi>
parents:
12822
diff
changeset
|
537 if (service->vsz_limit < 1024*1024 && service->vsz_limit != 0) { |
12430
f78260c108b0
master: Fail if service's vsz_limit is less than 1 kB
Timo Sirainen <tss@iki.fi>
parents:
12422
diff
changeset
|
538 *error_r = t_strdup_printf("service(%s): " |
f78260c108b0
master: Fail if service's vsz_limit is less than 1 kB
Timo Sirainen <tss@iki.fi>
parents:
12422
diff
changeset
|
539 "vsz_limit is too low", service->name); |
f78260c108b0
master: Fail if service's vsz_limit is less than 1 kB
Timo Sirainen <tss@iki.fi>
parents:
12422
diff
changeset
|
540 return FALSE; |
f78260c108b0
master: Fail if service's vsz_limit is less than 1 kB
Timo Sirainen <tss@iki.fi>
parents:
12422
diff
changeset
|
541 } |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
542 |
12166
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
543 #ifdef CONFIG_BINARY |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
544 default_service = |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
545 master_default_settings_get_service(service->name); |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
546 if (default_service != NULL && |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
547 default_service->process_limit_1 && process_limit > 1) { |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
548 *error_r = t_strdup_printf("service(%s): " |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
549 "process_limit must be 1", service->name); |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
550 return FALSE; |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
551 } |
13758 | 552 #else |
553 if (max_client_limit < service->client_limit) { | |
554 max_client_limit = service->client_limit; | |
555 max_client_limit_source = t_strdup_printf( | |
556 "service %s { client_limit }", service->name); | |
557 } | |
12166
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
558 #endif |
ce75971127a2
Fail at startup if process_limit>1 for services that don't support it.
Timo Sirainen <tss@iki.fi>
parents:
12056
diff
changeset
|
559 |
15303
4d268e810c15
master: If service { protocol } is set and not included in "protocols", ignore its settings
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
560 if (*service->protocol != '\0') { |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
561 /* each imap/pop3/lmtp process can use up a connection, |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
562 although if service_count=1 it's only temporary */ |
13799
24fe54f2cfcb
master: Be more relaxed about giving service auth's client_limit being too low.
Timo Sirainen <tss@iki.fi>
parents:
13758
diff
changeset
|
563 if (service->service_count != 1 || |
24fe54f2cfcb
master: Be more relaxed about giving service auth's client_limit being too low.
Timo Sirainen <tss@iki.fi>
parents:
13758
diff
changeset
|
564 strcmp(service->type, "login") == 0) |
24fe54f2cfcb
master: Be more relaxed about giving service auth's client_limit being too low.
Timo Sirainen <tss@iki.fi>
parents:
13758
diff
changeset
|
565 max_auth_client_processes += process_limit; |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
566 } |
12376
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
567 if (strcmp(service->type, "login") == 0 || |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
568 strcmp(service->name, "auth") == 0) |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
569 max_anvil_client_processes += process_limit; |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
570 |
20271
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
571 if (!fix_file_listener_paths(&service->unix_listeners, pool, |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
572 set, &all_listeners, error_r)) { |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
573 *error_r = t_strdup_printf("service(%s): unix_listener: %s", |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
574 service->name, *error_r); |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
575 return FALSE; |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
576 } |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
577 if (!fix_file_listener_paths(&service->fifo_listeners, pool, |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
578 set, &all_listeners, error_r)) { |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
579 *error_r = t_strdup_printf("service(%s): fifo_listener: %s", |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
580 service->name, *error_r); |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
581 return FALSE; |
55e8d679fa2b
master: Give a nicer error if unix/fifo_listener path is empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
582 } |
10375
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
583 add_inet_listeners(&service->inet_listeners, &all_listeners); |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
584 } |
10375
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
585 |
12376
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
586 client_limit = service_get_client_limit(set, "auth"); |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
587 if (client_limit < max_auth_client_processes && !warned_auth) { |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
588 warned_auth = TRUE; |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
589 i_warning("service auth { client_limit=%u } is lower than " |
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
590 "required under max. load (%u)", |
12376
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
591 client_limit, max_auth_client_processes); |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
592 } |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
593 |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
594 client_limit = service_get_client_limit(set, "anvil"); |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
595 if (client_limit < max_anvil_client_processes && !warned_anvil) { |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
596 warned_anvil = TRUE; |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
597 i_warning("service anvil { client_limit=%u } is lower than " |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
598 "required under max. load (%u)", |
97b286b6ec45
master: Log a warning at startup if anvil's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
12370
diff
changeset
|
599 client_limit, max_anvil_client_processes); |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
600 } |
13756
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
601 #ifndef CONFIG_BINARY |
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
602 if (restrict_get_fd_limit(&fd_limit) == 0 && |
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
603 fd_limit < (rlim_t)max_client_limit) { |
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
604 i_warning("fd limit (ulimit -n) is lower than required " |
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
605 "under max. load (%u < %u), because of %s", |
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
606 (unsigned int)fd_limit, max_client_limit, |
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
607 max_client_limit_source); |
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
608 } |
540d9d296dc9
master: Log a warning at startup if fd limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
13072
diff
changeset
|
609 #endif |
10977
4191ba54c8aa
config: Log a warning if auth service's client_limit is too low.
Timo Sirainen <tss@iki.fi>
parents:
10915
diff
changeset
|
610 |
10375
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
611 /* check for duplicate listeners */ |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
612 array_sort(&all_listeners, i_strcmp_p); |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
613 strings = array_get(&all_listeners, &count); |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
614 for (i = 1; i < count; i++) { |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
615 if (strcmp(strings[i-1], strings[i]) == 0) { |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
616 *error_r = t_strdup_printf("duplicate listener: %s", |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
617 strings[i]); |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
618 return FALSE; |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
619 } |
b21b3b373c74
master: Give a nicer error message if duplicate listeners exist.
Timo Sirainen <tss@iki.fi>
parents:
10374
diff
changeset
|
620 } |
4965
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
621 return TRUE; |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
622 } |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
9153
diff
changeset
|
623 /* </settings checks> */ |
8821
71cfd00e1375
master: If login process has -D parameter, make login directory writable.
Timo Sirainen <tss@iki.fi>
parents:
8700
diff
changeset
|
624 |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
625 static bool |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
626 login_want_core_dumps(const struct master_settings *set, gid_t *gid_r) |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
627 { |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
628 struct service_settings *const *services; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
629 const char *error; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
630 bool cores = FALSE; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
631 uid_t uid; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
632 |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
633 *gid_r = (gid_t)-1; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
634 |
10406 | 635 array_foreach(&set->services, services) { |
636 struct service_settings *service = *services; | |
637 | |
638 if (service->parsed_type == SERVICE_TYPE_LOGIN) { | |
639 if (service->login_dump_core) | |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
640 cores = TRUE; |
10406 | 641 (void)get_uidgid(service->user, &uid, gid_r, &error); |
642 if (*service->group != '\0') | |
643 (void)get_gid(service->group, gid_r, &error); | |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
644 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
645 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
646 return cores; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
647 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
648 |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
649 static bool |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
650 settings_have_auth_unix_listeners_in(const struct master_settings *set, |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
651 const char *dir) |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
652 { |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
653 struct service_settings *const *services; |
10406 | 654 struct file_listener_settings *const *uls; |
21322
5ab8dc1a4a6f
global: Change string position/length from unsigned int to size_t
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21115
diff
changeset
|
655 size_t dir_len = strlen(dir); |
10406 | 656 |
657 array_foreach(&set->services, services) { | |
658 struct service_settings *service = *services; | |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
659 |
10406 | 660 if (array_is_created(&service->unix_listeners)) { |
661 array_foreach(&service->unix_listeners, uls) { | |
662 struct file_listener_settings *u = *uls; | |
663 | |
18188
e9a8fc0e21c9
master: Fixed a check to see if login directory has any unix listeners.
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
664 if (strncmp(u->path, dir, dir_len) == 0 && |
e9a8fc0e21c9
master: Fixed a check to see if login directory has any unix listeners.
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
665 u->path[dir_len] == '/') |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
666 return TRUE; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
667 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
668 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
669 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
670 return FALSE; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
671 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
672 |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
673 static void unlink_sockets(const char *path, const char *prefix) |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
674 { |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
675 DIR *dirp; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
676 struct dirent *dp; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
677 struct stat st; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
678 string_t *str; |
21322
5ab8dc1a4a6f
global: Change string position/length from unsigned int to size_t
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21115
diff
changeset
|
679 size_t prefix_len; |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
680 |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
681 dirp = opendir(path); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
682 if (dirp == NULL) { |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
683 i_error("opendir(%s) failed: %m", path); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
684 return; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
685 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
686 |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
687 prefix_len = strlen(prefix); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
688 str = t_str_new(256); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
689 while ((dp = readdir(dirp)) != NULL) { |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
690 if (dp->d_name[0] == '.') |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
691 continue; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
692 |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
693 if (strncmp(dp->d_name, prefix, prefix_len) != 0) |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
694 continue; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
695 |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
696 str_truncate(str, 0); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
697 str_printfa(str, "%s/%s", path, dp->d_name); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
698 if (lstat(str_c(str), &st) < 0) { |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
699 if (errno != ENOENT) |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
700 i_error("lstat(%s) failed: %m", str_c(str)); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
701 continue; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
702 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
703 if (!S_ISSOCK(st.st_mode)) |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
704 continue; |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
705 |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
706 /* try to avoid unlinking sockets if someone's already |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
707 listening in them. do this only at startup, because |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
708 when SIGHUPing a child process might catch the new |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
709 connection before it notices that it's supposed |
21115
a55167eff11a
master: Don't unlink login sockets at startup if someone is listening to them.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20313
diff
changeset
|
710 to die. */ |
a55167eff11a
master: Don't unlink login sockets at startup if someone is listening to them.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20313
diff
changeset
|
711 if (!startup_finished) { |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
712 int fd = net_connect_unix(str_c(str)); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
713 if (fd != -1 || errno != ECONNREFUSED) { |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
714 i_fatal("Dovecot is already running? " |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
715 "Socket already exists: %s", |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
716 str_c(str)); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
717 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
718 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
719 |
19136
fefaa6d09a81
Replaced unlink() calls with i_unlink*() wherever possible.
Timo Sirainen <tss@iki.fi>
parents:
19077
diff
changeset
|
720 i_unlink_if_exists(str_c(str)); |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
721 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
722 (void)closedir(dirp); |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
723 } |
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
724 |
15049
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
725 static void |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
726 mkdir_login_dir(const struct master_settings *set, const char *login_dir) |
4965
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
727 { |
15049
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
728 mode_t mode; |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
729 gid_t gid; |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
730 |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
731 if (settings_have_auth_unix_listeners_in(set, login_dir)) { |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
732 /* we are not using external authentication, so make sure the |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
733 login directory exists with correct permissions and it's |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
734 empty. with external auth we wouldn't want to delete |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
735 existing sockets or break the permissions required by the |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
736 auth server. */ |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
737 mode = login_want_core_dumps(set, &gid) ? 0770 : 0750; |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
738 if (safe_mkdir(login_dir, mode, master_uid, gid) == 0) { |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
739 i_warning("Corrected permissions for login directory " |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
740 "%s", login_dir); |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
741 } |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
742 |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
743 unlink_sockets(login_dir, ""); |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
744 } else { |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
745 /* still make sure that login directory exists */ |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
746 if (mkdir(login_dir, 0755) < 0 && errno != EEXIST) |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
747 i_fatal("mkdir(%s) failed: %m", login_dir); |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
748 } |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
749 } |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
750 |
14680
3ffdb4bf36d3
master: Problems with creating base_dir/statedir should be fatals.
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
751 void master_settings_do_fixes(const struct master_settings *set) |
4965
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
752 { |
15049
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
753 const char *empty_dir; |
4965
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
754 struct stat st; |
9246d9308caa
-n and -a parameters shouldn't be deleting auth sockets.
Timo Sirainen <tss@iki.fi>
parents:
4963
diff
changeset
|
755 |
3900
7ee2fc733bf6
Fix base_dir permissions if it exists
Timo Sirainen <tss@iki.fi>
parents:
3889
diff
changeset
|
756 /* since base dir is under /var/run by default, it may have been |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
757 deleted. */ |
14680
3ffdb4bf36d3
master: Problems with creating base_dir/statedir should be fatals.
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
758 if (mkdir_parents(set->base_dir, 0755) < 0 && errno != EEXIST) |
3ffdb4bf36d3
master: Problems with creating base_dir/statedir should be fatals.
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
759 i_fatal("mkdir(%s) failed: %m", set->base_dir); |
4554
d59ab08a6b6a
Allow base_dir to point to a symlink.
Timo Sirainen <tss@iki.fi>
parents:
4553
diff
changeset
|
760 /* allow base_dir to be a symlink, so don't use lstat() */ |
14680
3ffdb4bf36d3
master: Problems with creating base_dir/statedir should be fatals.
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
761 if (stat(set->base_dir, &st) < 0) |
3ffdb4bf36d3
master: Problems with creating base_dir/statedir should be fatals.
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
762 i_fatal("stat(%s) failed: %m", set->base_dir); |
3ffdb4bf36d3
master: Problems with creating base_dir/statedir should be fatals.
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
763 if (!S_ISDIR(st.st_mode)) |
3ffdb4bf36d3
master: Problems with creating base_dir/statedir should be fatals.
Timo Sirainen <tss@iki.fi>
parents:
14446
diff
changeset
|
764 i_fatal("%s is not a directory", set->base_dir); |
12056
bc5c9bd4bc7e
master: Make sure base_dir has at least 0755 permissions.
Timo Sirainen <tss@iki.fi>
parents:
12019
diff
changeset
|
765 if ((st.st_mode & 0755) != 0755) { |
10374
17eac5a18ce4
master: Create base_dir with 0755 permissions, not 0777.
Timo Sirainen <tss@iki.fi>
parents:
10281
diff
changeset
|
766 i_warning("Fixing permissions of %s to be world-readable", |
17eac5a18ce4
master: Create base_dir with 0755 permissions, not 0777.
Timo Sirainen <tss@iki.fi>
parents:
10281
diff
changeset
|
767 set->base_dir); |
17eac5a18ce4
master: Create base_dir with 0755 permissions, not 0777.
Timo Sirainen <tss@iki.fi>
parents:
10281
diff
changeset
|
768 if (chmod(set->base_dir, 0755) < 0) |
17eac5a18ce4
master: Create base_dir with 0755 permissions, not 0777.
Timo Sirainen <tss@iki.fi>
parents:
10281
diff
changeset
|
769 i_error("chmod(%s) failed: %m", set->base_dir); |
17eac5a18ce4
master: Create base_dir with 0755 permissions, not 0777.
Timo Sirainen <tss@iki.fi>
parents:
10281
diff
changeset
|
770 } |
1058
3b8fb7bf7ecc
Moved settings parsing to lib-settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
771 |
4407
2e4857a2b858
Added --with-statedir configure option which defaults to
Timo Sirainen <tss@iki.fi>
parents:
4393
diff
changeset
|
772 /* Make sure our permanent state directory exists */ |
14950
543852ebb327
Made PKG_STATEDIR configurable with state_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
14749
diff
changeset
|
773 if (mkdir_parents(set->state_dir, 0755) < 0 && errno != EEXIST) |
543852ebb327
Made PKG_STATEDIR configurable with state_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
14749
diff
changeset
|
774 i_fatal("mkdir(%s) failed: %m", set->state_dir); |
9226
0ca7ed260f1e
master: Added back some startup checks/fixes.
Timo Sirainen <tss@iki.fi>
parents:
9218
diff
changeset
|
775 |
15049
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
776 mkdir_login_dir(set, t_strconcat(set->base_dir, "/login", NULL)); |
aa6027a0a78e
Added support to perform token-based service process authentication.
Stephan Bosch <stephan@rename-it.nl>
parents:
14950
diff
changeset
|
777 mkdir_login_dir(set, t_strconcat(set->base_dir, "/token-login", NULL)); |
9235
2e2b957f1cca
Implemented anvil service, which is used to implement mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents:
9230
diff
changeset
|
778 |
2e2b957f1cca
Implemented anvil service, which is used to implement mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents:
9230
diff
changeset
|
779 empty_dir = t_strconcat(set->base_dir, "/empty", NULL); |
2e2b957f1cca
Implemented anvil service, which is used to implement mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents:
9230
diff
changeset
|
780 if (safe_mkdir(empty_dir, 0755, master_uid, getegid()) == 0) { |
2e2b957f1cca
Implemented anvil service, which is used to implement mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents:
9230
diff
changeset
|
781 i_warning("Corrected permissions for empty directory " |
2e2b957f1cca
Implemented anvil service, which is used to implement mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents:
9230
diff
changeset
|
782 "%s", empty_dir); |
2e2b957f1cca
Implemented anvil service, which is used to implement mail_max_userip_connections.
Timo Sirainen <tss@iki.fi>
parents:
9230
diff
changeset
|
783 } |
4754
188481077cde
default_mail_env fallbacking was broken with --exec-mail.
Timo Sirainen <tss@iki.fi>
parents:
4701
diff
changeset
|
784 } |