1 /* Copyright (c) 2013-2018 Dovecot authors, see the included COPYING file */
2 
3 #include "lib.h"
4 #include "buffer.h"
5 #include "settings-parser.h"
6 #include "service-settings.h"
7 #include "replicator-settings.h"
8 
9 /* <settings checks> */
10 static struct file_listener_settings replicator_unix_listeners_array[] = {
11 	{ "replicator", 0600, "$default_internal_user", "" },
12 	{ "replicator-doveadm", 0, "$default_internal_user", "" }
13 };
14 static struct file_listener_settings *replicator_unix_listeners[] = {
15 	&replicator_unix_listeners_array[0],
16 	&replicator_unix_listeners_array[1]
17 };
18 static buffer_t replicator_unix_listeners_buf = {
19 	{ { replicator_unix_listeners, sizeof(replicator_unix_listeners) } }
20 };
21 /* </settings checks> */
22 
23 struct service_settings replicator_service_settings = {
24 	.name = "replicator",
25 	.protocol = "",
26 	.type = "",
27 	.executable = "replicator",
28 	.user = "",
29 	.group = "",
30 	.privileged_group = "",
31 	.extra_groups = "",
32 	.chroot = "",
33 
34 	.drop_priv_before_exec = FALSE,
35 
36 	.process_min_avail = 0,
37 	.process_limit = 1,
38 	.client_limit = 0,
39 	.service_count = 0,
40 	.idle_kill = UINT_MAX,
41 	.vsz_limit = UOFF_T_MAX,
42 
43 	.unix_listeners = { { &replicator_unix_listeners_buf,
44 			      sizeof(replicator_unix_listeners[0]) } },
45 	.fifo_listeners = ARRAY_INIT,
46 	.inet_listeners = ARRAY_INIT,
47 
48 	.process_limit_1 = TRUE
49 };
50 
51 #undef DEF
52 #define DEF(type, name) \
53 	SETTING_DEFINE_STRUCT_##type(#name, name, struct replicator_settings)
54 
55 static const struct setting_define replicator_setting_defines[] = {
56 	DEF(STR, auth_socket_path),
57 	DEF(STR, doveadm_socket_path),
58 	DEF(STR, replication_dsync_parameters),
59 
60 	DEF(TIME, replication_full_sync_interval),
61 	DEF(UINT, replication_max_conns),
62 
63 	SETTING_DEFINE_LIST_END
64 };
65 
66 const struct replicator_settings replicator_default_settings = {
67 	.auth_socket_path = "auth-userdb",
68 	.doveadm_socket_path = "doveadm-server",
69 	.replication_dsync_parameters = "-d -N -l 30 -U",
70 
71 	.replication_full_sync_interval = 60*60*24,
72 	.replication_max_conns = 10
73 };
74 
75 const struct setting_parser_info replicator_setting_parser_info = {
76 	.module_name = "replicator",
77 	.defines = replicator_setting_defines,
78 	.defaults = &replicator_default_settings,
79 
80 	.type_offset = SIZE_MAX,
81 	.struct_size = sizeof(struct replicator_settings),
82 
83 	.parent_offset = SIZE_MAX
84 };
85 
86 const struct replicator_settings *replicator_settings;
87