1 #ifndef DOVEADM_SETTINGS_H
2 #define DOVEADM_SETTINGS_H
3 
4 #include "net.h"
5 
6 struct ssl_iostream_settings;
7 
8 /* <settings checks> */
9 enum dsync_features {
10 	DSYNC_FEATURE_EMPTY_HDR_WORKAROUND = 0x1,
11 };
12 /* </settings checks> */
13 
14 struct doveadm_settings {
15 	const char *base_dir;
16 	const char *libexec_dir;
17 	const char *mail_plugins;
18 	const char *mail_plugin_dir;
19 	const char *mail_temp_dir;
20 	bool auth_debug;
21 	const char *auth_socket_path;
22 	const char *doveadm_socket_path;
23 	unsigned int doveadm_worker_count;
24 	in_port_t doveadm_port;
25 	const char *doveadm_ssl;
26 	const char *doveadm_username;
27 	const char *doveadm_password;
28 	const char *doveadm_allowed_commands;
29 	const char *dsync_alt_char;
30 	const char *dsync_remote_cmd;
31 	const char *director_username_hash;
32 	const char *doveadm_api_key;
33 	const char *dsync_features;
34 	const char *dsync_hashed_headers;
35 	unsigned int dsync_commit_msgs_interval;
36 	const char *doveadm_http_rawlog_dir;
37 	enum dsync_features parsed_features;
38 	ARRAY(const char *) plugin_envs;
39 };
40 
41 struct doveadm_setting_root {
42 	const struct setting_parser_info *info;
43 	void *settings;
44 };
45 ARRAY_DEFINE_TYPE(doveadm_setting_root, struct doveadm_setting_root);
46 
47 extern const struct setting_parser_info doveadm_setting_parser_info;
48 extern struct doveadm_settings *doveadm_settings;
49 extern const struct master_service_settings *service_set;
50 extern const struct master_service_ssl_settings *doveadm_ssl_set;
51 extern ARRAY_TYPE(doveadm_setting_root) doveadm_setting_roots;
52 extern bool doveadm_verbose_proctitle;
53 
54 void doveadm_get_ssl_settings(struct ssl_iostream_settings *set_r, pool_t pool);
55 void doveadm_settings_expand(struct doveadm_settings *set, pool_t pool);
56 
57 void doveadm_setting_roots_add(const struct setting_parser_info *info);
58 void *doveadm_setting_roots_get_settings(const struct setting_parser_info *info);
59 
60 void doveadm_read_settings(void);
61 
62 void doveadm_settings_init(void);
63 void doveadm_settings_deinit(void);
64 
65 #endif
66