1 #ifndef IMAPC_SETTINGS_H
2 #define IMAPC_SETTINGS_H
3 
4 #include "net.h"
5 
6 /* <settings checks> */
7 enum imapc_features {
8 	IMAPC_FEATURE_RFC822_SIZE		= 0x01,
9 	IMAPC_FEATURE_GUID_FORCED		= 0x02,
10 	IMAPC_FEATURE_FETCH_HEADERS		= 0x04,
11 	IMAPC_FEATURE_GMAIL_MIGRATION		= 0x08,
12 	IMAPC_FEATURE_SEARCH			= 0x10,
13 	IMAPC_FEATURE_ZIMBRA_WORKAROUNDS	= 0x20,
14 	IMAPC_FEATURE_NO_EXAMINE		= 0x40,
15 	IMAPC_FEATURE_PROXYAUTH			= 0x80,
16 	IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS	= 0x100,
17 	IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS	= 0x200,
18 	IMAPC_FEATURE_MODSEQ			= 0x400,
19 	IMAPC_FEATURE_DELAY_LOGIN		= 0x800,
20 	IMAPC_FEATURE_FETCH_BODYSTRUCTURE	= 0x1000,
21 	IMAPC_FEATURE_SEND_ID			= 0x2000,
22 	IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED	= 0x4000,
23 	IMAPC_FEATURE_NO_MSN_UPDATES		= 0x8000,
24 	IMAPC_FEATURE_ACL 			= 0x10000,
25 };
26 /* </settings checks> */
27 
28 /*
29  * NOTE: Any additions here should be reflected in imapc_storage_create's
30  * serialization of settings.
31  */
32 struct imapc_settings {
33 	const char *imapc_host;
34 	in_port_t imapc_port;
35 
36 	const char *imapc_user;
37 	const char *imapc_master_user;
38 	const char *imapc_password;
39 	const char *imapc_sasl_mechanisms;
40 
41 	const char *imapc_ssl;
42 	bool imapc_ssl_verify;
43 
44 	const char *imapc_features;
45 	const char *imapc_rawlog_dir;
46 	const char *imapc_list_prefix;
47 	unsigned int imapc_cmd_timeout;
48 	unsigned int imapc_max_idle_time;
49 	unsigned int imapc_connection_retry_count;
50 	unsigned int imapc_connection_retry_interval;
51 	uoff_t imapc_max_line_length;
52 
53 	const char *pop3_deleted_flag;
54 
55 	enum imapc_features parsed_features;
56 	unsigned int throttle_init_msecs;
57 	unsigned int throttle_max_msecs;
58 	unsigned int throttle_shrink_min_msecs;
59 };
60 
61 const struct setting_parser_info *imapc_get_setting_parser_info(void);
62 
63 #endif
64