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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21390
2e2563132d5f Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 20604
diff changeset
1 /* Copyright (c) 2010-2017 Dovecot authors, see the included COPYING file */
10859
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 #include "doveadm-settings.h"
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 #undef DEF
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51 #define DEF(type, name) \
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52 { type, #name, offsetof(struct doveadm_settings, name), NULL }
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 DEF(SET_STR, mail_plugins),
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
80
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
81 SETTING_DEFINE_LIST_END
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82 };
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 };
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116 const struct setting_parser_info doveadm_setting_parser_info = {
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
117 .module_name = "doveadm",
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
118 .defines = doveadm_setting_defines,
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
119 .defaults = &doveadm_default_settings,
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
121 .type_offset = (size_t)-1,
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
122 .struct_size = sizeof(struct doveadm_settings),
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
127 };
b06d874708d4 doveadm: Added support for plugins.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
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> */