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 "imap-urlauth-settings.h"
8 
9 #include <stddef.h>
10 #include <unistd.h>
11 
12 /* <settings checks> */
13 static struct file_listener_settings imap_urlauth_unix_listeners_array[] = {
14 	{ "token-login/imap-urlauth", 0666, "", "" }
15 };
16 static struct file_listener_settings *imap_urlauth_unix_listeners[] = {
17 	&imap_urlauth_unix_listeners_array[0]
18 };
19 static buffer_t imap_urlauth_unix_listeners_buf = {
20 	{ { imap_urlauth_unix_listeners, sizeof(imap_urlauth_unix_listeners) } }
21 };
22 /* </settings checks> */
23 
24 struct service_settings imap_urlauth_service_settings = {
25 	.name = "imap-urlauth",
26 	.protocol = "imap",
27 	.type = "",
28 	.executable = "imap-urlauth",
29 	.user = "$default_internal_user",
30 	.group = "",
31 	.privileged_group = "",
32 	.extra_groups = "",
33 	.chroot = "",
34 
35 	.drop_priv_before_exec = FALSE,
36 
37 	.process_min_avail = 0,
38 	.process_limit = 1024,
39 	.client_limit = 1,
40 	.service_count = 1,
41 	.idle_kill = 0,
42 	.vsz_limit = UOFF_T_MAX,
43 
44 	.unix_listeners = { { &imap_urlauth_unix_listeners_buf,
45 			      sizeof(imap_urlauth_unix_listeners[0]) } },
46 	.fifo_listeners = ARRAY_INIT,
47 	.inet_listeners = ARRAY_INIT
48 };
49 
50 #undef DEF
51 #define DEF(type, name) \
52 	SETTING_DEFINE_STRUCT_##type(#name, name, struct imap_urlauth_settings)
53 
54 static const struct setting_define imap_urlauth_setting_defines[] = {
55 	DEF(STR, base_dir),
56 
57 	DEF(BOOL, mail_debug),
58 
59 	DEF(BOOL, verbose_proctitle),
60 
61 	DEF(STR, imap_urlauth_logout_format),
62 	DEF(STR, imap_urlauth_submit_user),
63 	DEF(STR, imap_urlauth_stream_user),
64 
65 	SETTING_DEFINE_LIST_END
66 };
67 
68 const struct imap_urlauth_settings imap_urlauth_default_settings = {
69 	.base_dir = PKG_RUNDIR,
70   .mail_debug = FALSE,
71 
72 	.verbose_proctitle = FALSE,
73 
74 	.imap_urlauth_logout_format = "in=%i out=%o",
75 	.imap_urlauth_submit_user = NULL,
76 	.imap_urlauth_stream_user = NULL
77 };
78 
79 static const struct setting_parser_info *imap_urlauth_setting_dependencies[] = {
80 	NULL
81 };
82 
83 const struct setting_parser_info imap_urlauth_setting_parser_info = {
84 	.module_name = "imap-urlauth",
85 	.defines = imap_urlauth_setting_defines,
86 	.defaults = &imap_urlauth_default_settings,
87 
88 	.type_offset = SIZE_MAX,
89 	.struct_size = sizeof(struct imap_urlauth_settings),
90 
91 	.parent_offset = SIZE_MAX,
92 
93 	.dependencies = imap_urlauth_setting_dependencies
94 };
95