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