Mercurial > dovecot > core-2.2
annotate src/doveadm/doveadm-settings.c @ 22656:1789bf2a1e01
director: Make sure HOST-RESET-USERS isn't used with max_moving_users=0
The reset command would just hang in that case. doveadm would never have
sent this, so this is just an extra sanity check.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 05 Nov 2017 23:51:56 +0200 |
parents | 400ff84f109d |
children | cb108f786fb4 |
rev | line source |
---|---|
21390
2e2563132d5f
Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
20604
diff
changeset
|
1 /* Copyright (c) 2010-2017 Dovecot authors, see the included COPYING file */ |
10859 | 2 |
3 #include "lib.h" | |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
4 #include "buffer.h" |
10859 | 5 #include "settings-parser.h" |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
6 #include "service-settings.h" |
11401
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
7 #include "mail-storage-settings.h" |
10859 | 8 #include "doveadm-settings.h" |
9 | |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
10 static bool doveadm_settings_check(void *_set, pool_t pool, const char **error_r); |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
11 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
12 /* <settings checks> */ |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
13 static struct file_listener_settings doveadm_unix_listeners_array[] = { |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
14 { "doveadm-server", 0600, "", "" } |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
15 }; |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
16 static struct file_listener_settings *doveadm_unix_listeners[] = { |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
17 &doveadm_unix_listeners_array[0] |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
18 }; |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
19 static buffer_t doveadm_unix_listeners_buf = { |
17397
f373df52082a
treewide - mass cleanup of 0 used to end a settings list
Phil Carmody <phil@dovecot.fi>
parents:
17173
diff
changeset
|
20 doveadm_unix_listeners, sizeof(doveadm_unix_listeners), { NULL, } |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
21 }; |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
22 /* </settings checks> */ |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
23 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
24 struct service_settings doveadm_service_settings = { |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
25 .name = "doveadm", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
26 .protocol = "", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
27 .type = "", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
28 .executable = "doveadm-server", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
29 .user = "", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
30 .group = "", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
31 .privileged_group = "", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
32 .extra_groups = "", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
33 .chroot = "", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
34 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
35 .drop_priv_before_exec = FALSE, |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
36 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
37 .process_min_avail = 0, |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
38 .process_limit = 0, |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
39 .client_limit = 1, |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
40 .service_count = 1, |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
41 .idle_kill = 0, |
12432
8793036f6de8
Services' default vsz_limit wasn't actually using default_vsz_limit but rather 4 GB.
Timo Sirainen <tss@iki.fi>
parents:
11897
diff
changeset
|
42 .vsz_limit = (uoff_t)-1, |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
43 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
44 .unix_listeners = { { &doveadm_unix_listeners_buf, |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
45 sizeof(doveadm_unix_listeners[0]) } }, |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
46 .fifo_listeners = ARRAY_INIT, |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
47 .inet_listeners = ARRAY_INIT |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
48 }; |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
49 |
10859 | 50 #undef DEF |
51 #define DEF(type, name) \ | |
52 { type, #name, offsetof(struct doveadm_settings, name), NULL } | |
53 | |
54 static const struct setting_define doveadm_setting_defines[] = { | |
11357
43a5acc09eb8
doveadm: Look up sockets from base_dir rather than hardcoded PKG_RUNDIR.
Timo Sirainen <tss@iki.fi>
parents:
10859
diff
changeset
|
55 DEF(SET_STR, base_dir), |
15124
cb3f49b649bf
doveadm: Added exec command to easily execute commands from libexec_dir.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
56 DEF(SET_STR, libexec_dir), |
10859 | 57 DEF(SET_STR, mail_plugins), |
58 DEF(SET_STR, mail_plugin_dir), | |
19924
5a4b25374acd
doveadm-auth: If auth_debug setting is enabled, send "debug" field to auth lookups.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19915
diff
changeset
|
59 DEF(SET_BOOL, auth_debug), |
16981
c41700c4a9bb
doveadm auth/user: Fixes to auth_socket_path handling.
Timo Sirainen <tss@iki.fi>
parents:
16232
diff
changeset
|
60 DEF(SET_STR, auth_socket_path), |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
61 DEF(SET_STR, doveadm_socket_path), |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
62 DEF(SET_UINT, doveadm_worker_count), |
19035
aabfe48db1cf
Changed type of internet port values to in_port_t everywhere.
Stephan Bosch <stephan@rename-it.nl>
parents:
18897
diff
changeset
|
63 DEF(SET_IN_PORT, doveadm_port), |
15921
75d76f1b884d
doveadm: Renamed doveadm_proxy_port setting to doveadm_port.
Timo Sirainen <tss@iki.fi>
parents:
15715
diff
changeset
|
64 { SET_ALIAS, "doveadm_proxy_port", 0, NULL }, |
18897
3bf5df6f63b2
doveadm: Added doveadm_username to specify the username for authentication.
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
65 DEF(SET_STR, doveadm_username), |
13036
6604f80abb02
doveadm: Added simple PLAIN authentication for remote connections.
Timo Sirainen <tss@iki.fi>
parents:
13035
diff
changeset
|
66 DEF(SET_STR, doveadm_password), |
13039
c67ba5bf1ba9
doveadm: Added doveadm_allowed_commands setting, which is used by doveadm server.
Timo Sirainen <tss@iki.fi>
parents:
13036
diff
changeset
|
67 DEF(SET_STR, doveadm_allowed_commands), |
13875
4c827134997f
Merged dsync into "doveadm dsync".
Timo Sirainen <tss@iki.fi>
parents:
13039
diff
changeset
|
68 DEF(SET_STR, dsync_alt_char), |
14251
69ed88beb12f
dsync: Added dsync_remote_cmd setting, which is used to execute remote dsync.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
69 DEF(SET_STR, dsync_remote_cmd), |
16229
d09aa718221f
Moved lib-fs/fs-test to "doveadm fs" command.
Timo Sirainen <tss@iki.fi>
parents:
16224
diff
changeset
|
70 DEF(SET_STR, ssl_client_ca_dir), |
16232
f0c997709b4d
Added ssl_client_ca_file to specify the CA certs as a file instead of as a dir.
Timo Sirainen <tss@iki.fi>
parents:
16229
diff
changeset
|
71 DEF(SET_STR, ssl_client_ca_file), |
17173
b697a214e122
doveadm director move/map: Use director_username_hash setting for calculating hashes.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
72 DEF(SET_STR, director_username_hash), |
19769
9324bdd97612
doveadm: Implement HTTP server API, slightly based on JMAP API
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19552
diff
changeset
|
73 DEF(SET_STR, doveadm_api_key), |
20595
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
74 DEF(SET_STR, dsync_features), |
22043
81e013b3207d
dsync: Try to commit transactions every dsync_commit_msgs_interval messages
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21450
diff
changeset
|
75 DEF(SET_UINT, dsync_commit_msgs_interval), |
21450
5ca3a3f11254
doveadm: add doveadm_http_rawlog_dir setting
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
21390
diff
changeset
|
76 DEF(SET_STR, doveadm_http_rawlog_dir), |
22549
400ff84f109d
dsync: Add hashed_headers setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
22043
diff
changeset
|
77 DEF(SET_STR, dsync_hashed_headers), |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
78 |
11395
07c9d1115029
doveadm: mail commands can now be extended more easily by plugins.
Timo Sirainen <tss@iki.fi>
parents:
11357
diff
changeset
|
79 { SET_STRLIST, "plugin", offsetof(struct doveadm_settings, plugin_envs), NULL }, |
10859 | 80 |
81 SETTING_DEFINE_LIST_END | |
82 }; | |
83 | |
84 const struct doveadm_settings doveadm_default_settings = { | |
11357
43a5acc09eb8
doveadm: Look up sockets from base_dir rather than hardcoded PKG_RUNDIR.
Timo Sirainen <tss@iki.fi>
parents:
10859
diff
changeset
|
85 .base_dir = PKG_RUNDIR, |
15124
cb3f49b649bf
doveadm: Added exec command to easily execute commands from libexec_dir.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
86 .libexec_dir = PKG_LIBEXECDIR, |
10859 | 87 .mail_plugins = "", |
11395
07c9d1115029
doveadm: mail commands can now be extended more easily by plugins.
Timo Sirainen <tss@iki.fi>
parents:
11357
diff
changeset
|
88 .mail_plugin_dir = MODULEDIR, |
19924
5a4b25374acd
doveadm-auth: If auth_debug setting is enabled, send "debug" field to auth lookups.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19915
diff
changeset
|
89 .auth_debug = FALSE, |
16981
c41700c4a9bb
doveadm auth/user: Fixes to auth_socket_path handling.
Timo Sirainen <tss@iki.fi>
parents:
16232
diff
changeset
|
90 .auth_socket_path = "auth-userdb", |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
91 .doveadm_socket_path = "doveadm-server", |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
92 .doveadm_worker_count = 0, |
15921
75d76f1b884d
doveadm: Renamed doveadm_proxy_port setting to doveadm_port.
Timo Sirainen <tss@iki.fi>
parents:
15715
diff
changeset
|
93 .doveadm_port = 0, |
18897
3bf5df6f63b2
doveadm: Added doveadm_username to specify the username for authentication.
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
94 .doveadm_username = "doveadm", |
13036
6604f80abb02
doveadm: Added simple PLAIN authentication for remote connections.
Timo Sirainen <tss@iki.fi>
parents:
13035
diff
changeset
|
95 .doveadm_password = "", |
13039
c67ba5bf1ba9
doveadm: Added doveadm_allowed_commands setting, which is used by doveadm server.
Timo Sirainen <tss@iki.fi>
parents:
13036
diff
changeset
|
96 .doveadm_allowed_commands = "", |
13875
4c827134997f
Merged dsync into "doveadm dsync".
Timo Sirainen <tss@iki.fi>
parents:
13039
diff
changeset
|
97 .dsync_alt_char = "_", |
16224
8b13ef2e9569
dsync: Fixed -U to send the notification on the remote server, not local.
Timo Sirainen <tss@iki.fi>
parents:
16039
diff
changeset
|
98 .dsync_remote_cmd = "ssh -l%{login} %{host} doveadm dsync-server -u%u -U", |
20595
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
99 .dsync_features = "", |
22549
400ff84f109d
dsync: Add hashed_headers setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
22043
diff
changeset
|
100 .dsync_hashed_headers = "Date Message-ID", |
22043
81e013b3207d
dsync: Try to commit transactions every dsync_commit_msgs_interval messages
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21450
diff
changeset
|
101 .dsync_commit_msgs_interval = 100, |
16229
d09aa718221f
Moved lib-fs/fs-test to "doveadm fs" command.
Timo Sirainen <tss@iki.fi>
parents:
16224
diff
changeset
|
102 .ssl_client_ca_dir = "", |
16232
f0c997709b4d
Added ssl_client_ca_file to specify the CA certs as a file instead of as a dir.
Timo Sirainen <tss@iki.fi>
parents:
16229
diff
changeset
|
103 .ssl_client_ca_file = "", |
17173
b697a214e122
doveadm director move/map: Use director_username_hash setting for calculating hashes.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
104 .director_username_hash = "%Lu", |
19915
0b2569fca146
doveadm: Don't treat doveadm_api_key differently when it's unset vs set to empty.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19769
diff
changeset
|
105 .doveadm_api_key = "", |
21450
5ca3a3f11254
doveadm: add doveadm_http_rawlog_dir setting
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
21390
diff
changeset
|
106 .doveadm_http_rawlog_dir = "", |
11395
07c9d1115029
doveadm: mail commands can now be extended more easily by plugins.
Timo Sirainen <tss@iki.fi>
parents:
11357
diff
changeset
|
107 |
07c9d1115029
doveadm: mail commands can now be extended more easily by plugins.
Timo Sirainen <tss@iki.fi>
parents:
11357
diff
changeset
|
108 .plugin_envs = ARRAY_INIT |
10859 | 109 }; |
110 | |
11401
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
111 static const struct setting_parser_info *doveadm_setting_dependencies[] = { |
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
112 &mail_user_setting_parser_info, |
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
113 NULL |
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
114 }; |
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
115 |
10859 | 116 const struct setting_parser_info doveadm_setting_parser_info = { |
117 .module_name = "doveadm", | |
118 .defines = doveadm_setting_defines, | |
119 .defaults = &doveadm_default_settings, | |
120 | |
121 .type_offset = (size_t)-1, | |
122 .struct_size = sizeof(struct doveadm_settings), | |
123 | |
11401
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
124 .parent_offset = (size_t)-1, |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
125 .check_func = doveadm_settings_check, |
11401
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
126 .dependencies = doveadm_setting_dependencies |
10859 | 127 }; |
128 | |
12467
66428c763354
doveadm: Moved -s parameter among -u/-A parameters, since it's only used by mail commands.
Timo Sirainen <tss@iki.fi>
parents:
12432
diff
changeset
|
129 struct doveadm_settings *doveadm_settings; |
14950
543852ebb327
Made PKG_STATEDIR configurable with state_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
14584
diff
changeset
|
130 const struct master_service_settings *service_set; |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
131 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
132 static void |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
133 fix_base_path(struct doveadm_settings *set, pool_t pool, const char **str) |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
134 { |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
135 if (*str != NULL && **str != '\0' && **str != '/') |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
136 *str = p_strconcat(pool, set->base_dir, "/", *str, NULL); |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
137 } |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
138 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
139 /* <settings checks> */ |
20595
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
140 struct dsync_feature_list { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
141 const char *name; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
142 enum dsync_features num; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
143 }; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
144 |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
145 static const struct dsync_feature_list dsync_feature_list[] = { |
20604
8fbf1da39ddb
dsync_features: For consistency use '-' and not '_'
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20595
diff
changeset
|
146 { "empty-header-workaround", DSYNC_FEATURE_EMPTY_HDR_WORKAROUND }, |
20595
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
147 { NULL, 0 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
148 }; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
149 |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
150 static int |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
151 dsync_settings_parse_features(struct doveadm_settings *set, |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
152 const char **error_r) |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
153 { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
154 enum dsync_features features = 0; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
155 const struct dsync_feature_list *list; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
156 const char *const *str; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
157 |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
158 str = t_strsplit_spaces(set->dsync_features, " ,"); |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
159 for (; *str != NULL; str++) { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
160 list = dsync_feature_list; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
161 for (; list->name != NULL; list++) { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
162 if (strcasecmp(*str, list->name) == 0) { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
163 features |= list->num; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
164 break; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
165 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
166 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
167 if (list->name == NULL) { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
168 *error_r = t_strdup_printf("dsync_features: " |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
169 "Unknown feature: %s", *str); |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
170 return -1; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
171 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
172 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
173 set->parsed_features = features; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
174 return 0; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
175 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
176 |
14584
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
177 static bool doveadm_settings_check(void *_set, pool_t pool ATTR_UNUSED, |
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
178 const char **error_r) |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
179 { |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
180 struct doveadm_settings *set = _set; |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
181 |
14584
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
182 #ifndef CONFIG_BINARY |
16981
c41700c4a9bb
doveadm auth/user: Fixes to auth_socket_path handling.
Timo Sirainen <tss@iki.fi>
parents:
16232
diff
changeset
|
183 fix_base_path(set, pool, &set->auth_socket_path); |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
184 fix_base_path(set, pool, &set->doveadm_socket_path); |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
185 #endif |
22549
400ff84f109d
dsync: Add hashed_headers setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
22043
diff
changeset
|
186 if (*set->dsync_hashed_headers == '\0') { |
400ff84f109d
dsync: Add hashed_headers setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
22043
diff
changeset
|
187 *error_r = "dsync_hashed_headers must not be empty"; |
400ff84f109d
dsync: Add hashed_headers setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
22043
diff
changeset
|
188 return FALSE; |
400ff84f109d
dsync: Add hashed_headers setting
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
22043
diff
changeset
|
189 } |
14584
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
190 if (*set->dsync_alt_char == '\0') { |
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
191 *error_r = "dsync_alt_char must not be empty"; |
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
192 return FALSE; |
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
193 } |
20595
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
194 if (dsync_settings_parse_features(set, error_r) != 0) |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
195 return FALSE; |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
196 return TRUE; |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
197 } |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
198 /* </settings checks> */ |