1 /* Copyright (c) 2005-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 "login-settings.h" 8 #include "imap-login-settings.h" 9 10 #include <stddef.h> 11 12 /* <settings checks> */ 13 static struct inet_listener_settings imap_login_inet_listeners_array[] = { 14 { .name = "imap", .address = "", .port = 143 }, 15 { .name = "imaps", .address = "", .port = 993, .ssl = TRUE } 16 }; 17 static struct inet_listener_settings *imap_login_inet_listeners[] = { 18 &imap_login_inet_listeners_array[0], 19 &imap_login_inet_listeners_array[1] 20 }; 21 static buffer_t imap_login_inet_listeners_buf = { 22 { { imap_login_inet_listeners, sizeof(imap_login_inet_listeners) } } 23 }; 24 /* </settings checks> */ 25 26 struct service_settings imap_login_service_settings = { 27 .name = "imap-login", 28 .protocol = "imap", 29 .type = "login", 30 .executable = "imap-login", 31 .user = "$default_login_user", 32 .group = "", 33 .privileged_group = "", 34 .extra_groups = "", 35 .chroot = "login", 36 37 .drop_priv_before_exec = FALSE, 38 39 .process_min_avail = 0, 40 .process_limit = 0, 41 .client_limit = 0, 42 .service_count = 1, 43 .idle_kill = 0, 44 .vsz_limit = UOFF_T_MAX, 45 46 .unix_listeners = ARRAY_INIT, 47 .fifo_listeners = ARRAY_INIT, 48 .inet_listeners = { { &imap_login_inet_listeners_buf, 49 sizeof(imap_login_inet_listeners[0]) } } 50 }; 51 52 #undef DEF 53 #define DEF(type, name) \ 54 SETTING_DEFINE_STRUCT_##type(#name, name, struct imap_login_settings) 55 56 static const struct setting_define imap_login_setting_defines[] = { 57 DEF(STR, imap_capability), 58 DEF(STR, imap_id_send), 59 DEF(STR, imap_id_log), 60 DEF(BOOL, imap_literal_minus), 61 DEF(BOOL, imap_id_retain), 62 63 SETTING_DEFINE_LIST_END 64 }; 65 66 static const struct imap_login_settings imap_login_default_settings = { 67 .imap_capability = "", 68 .imap_id_send = "name *", 69 .imap_id_log = "", 70 .imap_literal_minus = FALSE, 71 .imap_id_retain = FALSE, 72 }; 73 74 static const struct setting_parser_info *imap_login_setting_dependencies[] = { 75 &login_setting_parser_info, 76 NULL 77 }; 78 79 static const struct setting_parser_info imap_login_setting_parser_info = { 80 .module_name = "imap-login", 81 .defines = imap_login_setting_defines, 82 .defaults = &imap_login_default_settings, 83 84 .type_offset = SIZE_MAX, 85 .struct_size = sizeof(struct imap_login_settings), 86 87 .parent_offset = SIZE_MAX, 88 .dependencies = imap_login_setting_dependencies 89 }; 90 91 const struct setting_parser_info *imap_login_setting_roots[] = { 92 &login_setting_parser_info, 93 &imap_login_setting_parser_info, 94 NULL 95 }; 96