/src/pigeonhole/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto-settings.c
Line | Count | Source |
1 | | /* Copyright (c) Pigeonhole authors, see top-level COPYING file */ |
2 | | |
3 | | #include "lib.h" |
4 | | #include "array.h" |
5 | | #include "settings.h" |
6 | | #include "settings-parser.h" |
7 | | |
8 | | #include "ntfy-mailto-settings.h" |
9 | | |
10 | | static bool |
11 | | ntfy_mailto_settings_check(void *_set, pool_t pool, const char **error_r); |
12 | | |
13 | | #undef DEF |
14 | | #define DEF(type, name) \ |
15 | | SETTING_DEFINE_STRUCT_##type("sieve_notify_mailto_"#name, name, \ |
16 | | struct ntfy_mailto_settings) |
17 | | |
18 | | static const struct setting_define ntfy_mailto_setting_defines[] = { |
19 | | DEF(STR, envelope_from), |
20 | | DEF(UINT_HIDDEN, max_recipients), |
21 | | DEF(UINT_HIDDEN, max_headers), |
22 | | |
23 | | SETTING_DEFINE_LIST_END, |
24 | | }; |
25 | | |
26 | | static const struct ntfy_mailto_settings ntfy_mailto_default_settings = { |
27 | | .envelope_from = "", |
28 | | .max_recipients = 8, |
29 | | .max_headers = 16, |
30 | | }; |
31 | | |
32 | | const struct setting_parser_info ntfy_mailto_setting_parser_info = { |
33 | | .name = "sieve_notify_mailto", |
34 | | |
35 | | .defines = ntfy_mailto_setting_defines, |
36 | | .defaults = &ntfy_mailto_default_settings, |
37 | | |
38 | | .struct_size = sizeof(struct ntfy_mailto_settings), |
39 | | |
40 | | .check_func = ntfy_mailto_settings_check, |
41 | | |
42 | | .pool_offset1 = 1 + offsetof(struct ntfy_mailto_settings, pool), |
43 | | }; |
44 | | |
45 | | /* <settings checks> */ |
46 | | static bool |
47 | | ntfy_mailto_settings_check(void *_set, pool_t pool, const char **error_r) |
48 | 0 | { |
49 | 0 | struct ntfy_mailto_settings *set = _set; |
50 | |
|
51 | 0 | if (!sieve_address_source_parse(pool, set->envelope_from, |
52 | 0 | &set->parsed.envelope_from)) { |
53 | 0 | *error_r = t_strdup_printf("sieve_notify_mailto_envelope_from: " |
54 | 0 | "Invalid address source '%s'", |
55 | 0 | set->envelope_from); |
56 | 0 | return FALSE; |
57 | 0 | } |
58 | | |
59 | 0 | return TRUE; |
60 | 0 | } |
61 | | /* </settings checks> */ |