Mercurial > dovecot > core-2.2
annotate src/doveadm/doveadm-settings.c @ 20595:40ce04c672a4
dsync: Add support for features
Add empty_header_workaround as first feature
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Fri, 05 Aug 2016 15:21:29 +0300 |
parents | 5a4b25374acd |
children | 8fbf1da39ddb |
rev | line source |
---|---|
19552
0f22db71df7a
global: freshen copyright
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19035
diff
changeset
|
1 /* Copyright (c) 2010-2016 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), |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
75 |
11395
07c9d1115029
doveadm: mail commands can now be extended more easily by plugins.
Timo Sirainen <tss@iki.fi>
parents:
11357
diff
changeset
|
76 { SET_STRLIST, "plugin", offsetof(struct doveadm_settings, plugin_envs), NULL }, |
10859 | 77 |
78 SETTING_DEFINE_LIST_END | |
79 }; | |
80 | |
81 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
|
82 .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
|
83 .libexec_dir = PKG_LIBEXECDIR, |
10859 | 84 .mail_plugins = "", |
11395
07c9d1115029
doveadm: mail commands can now be extended more easily by plugins.
Timo Sirainen <tss@iki.fi>
parents:
11357
diff
changeset
|
85 .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
|
86 .auth_debug = FALSE, |
16981
c41700c4a9bb
doveadm auth/user: Fixes to auth_socket_path handling.
Timo Sirainen <tss@iki.fi>
parents:
16232
diff
changeset
|
87 .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
|
88 .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
|
89 .doveadm_worker_count = 0, |
15921
75d76f1b884d
doveadm: Renamed doveadm_proxy_port setting to doveadm_port.
Timo Sirainen <tss@iki.fi>
parents:
15715
diff
changeset
|
90 .doveadm_port = 0, |
18897
3bf5df6f63b2
doveadm: Added doveadm_username to specify the username for authentication.
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
91 .doveadm_username = "doveadm", |
13036
6604f80abb02
doveadm: Added simple PLAIN authentication for remote connections.
Timo Sirainen <tss@iki.fi>
parents:
13035
diff
changeset
|
92 .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
|
93 .doveadm_allowed_commands = "", |
13875
4c827134997f
Merged dsync into "doveadm dsync".
Timo Sirainen <tss@iki.fi>
parents:
13039
diff
changeset
|
94 .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
|
95 .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
|
96 .dsync_features = "", |
16229
d09aa718221f
Moved lib-fs/fs-test to "doveadm fs" command.
Timo Sirainen <tss@iki.fi>
parents:
16224
diff
changeset
|
97 .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
|
98 .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
|
99 .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
|
100 .doveadm_api_key = "", |
11395
07c9d1115029
doveadm: mail commands can now be extended more easily by plugins.
Timo Sirainen <tss@iki.fi>
parents:
11357
diff
changeset
|
101 |
07c9d1115029
doveadm: mail commands can now be extended more easily by plugins.
Timo Sirainen <tss@iki.fi>
parents:
11357
diff
changeset
|
102 .plugin_envs = ARRAY_INIT |
10859 | 103 }; |
104 | |
11401
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
105 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
|
106 &mail_user_setting_parser_info, |
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
107 NULL |
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
108 }; |
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
109 |
10859 | 110 const struct setting_parser_info doveadm_setting_parser_info = { |
111 .module_name = "doveadm", | |
112 .defines = doveadm_setting_defines, | |
113 .defaults = &doveadm_default_settings, | |
114 | |
115 .type_offset = (size_t)-1, | |
116 .struct_size = sizeof(struct doveadm_settings), | |
117 | |
11401
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
118 .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
|
119 .check_func = doveadm_settings_check, |
11401
d7b9712d1dfc
doveadm: Added config dependency to mail_user settings.
Timo Sirainen <tss@iki.fi>
parents:
11395
diff
changeset
|
120 .dependencies = doveadm_setting_dependencies |
10859 | 121 }; |
122 | |
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
|
123 struct doveadm_settings *doveadm_settings; |
14950
543852ebb327
Made PKG_STATEDIR configurable with state_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
14584
diff
changeset
|
124 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
|
125 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
126 static void |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
127 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
|
128 { |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
129 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
|
130 *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
|
131 } |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
132 |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
133 /* <settings checks> */ |
20595
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
134 struct dsync_feature_list { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
135 const char *name; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
136 enum dsync_features num; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
137 }; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
138 |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
139 static const struct dsync_feature_list dsync_feature_list[] = { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
140 { "empty_header_workaround", DSYNC_FEATURE_EMPTY_HDR_WORKAROUND }, |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
141 { NULL, 0 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
142 }; |
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 static int |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
145 dsync_settings_parse_features(struct doveadm_settings *set, |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
146 const char **error_r) |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
147 { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
148 enum dsync_features features = 0; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
149 const struct dsync_feature_list *list; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
150 const char *const *str; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
151 |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
152 str = t_strsplit_spaces(set->dsync_features, " ,"); |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
153 for (; *str != NULL; str++) { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
154 list = dsync_feature_list; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
155 for (; list->name != NULL; list++) { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
156 if (strcasecmp(*str, list->name) == 0) { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
157 features |= list->num; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
158 break; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
159 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
160 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
161 if (list->name == NULL) { |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
162 *error_r = t_strdup_printf("dsync_features: " |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
163 "Unknown feature: %s", *str); |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
164 return -1; |
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 set->parsed_features = features; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
168 return 0; |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
169 } |
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
170 |
14584
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
171 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
|
172 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
|
173 { |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
174 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
|
175 |
14584
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
176 #ifndef CONFIG_BINARY |
16981
c41700c4a9bb
doveadm auth/user: Fixes to auth_socket_path handling.
Timo Sirainen <tss@iki.fi>
parents:
16232
diff
changeset
|
177 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
|
178 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
|
179 #endif |
14584
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
180 if (*set->dsync_alt_char == '\0') { |
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
181 *error_r = "dsync_alt_char must not be empty"; |
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
182 return FALSE; |
b2076acc3715
Initial version of dsync rewrite.
Timo Sirainen <tss@iki.fi>
parents:
14257
diff
changeset
|
183 } |
20595
40ce04c672a4
dsync: Add support for features
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
19924
diff
changeset
|
184 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
|
185 return FALSE; |
11897
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
186 return TRUE; |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
187 } |
b60e225386bf
doveadm: Added client/server architecture support for running mail commands.
Timo Sirainen <tss@iki.fi>
parents:
11401
diff
changeset
|
188 /* </settings checks> */ |