annotate src/imap-urlauth/imap-urlauth-worker-settings.c @ 15066:d419aac7ab31

Added support for IMAP URLAUTH and URLAUTH=BINARY extensions Extends imap service with URLAUTH and URLAUTH=BINARY support: - Adds new commands URLFETCH, GENURLAUTH and RESETKEY. Creates imap-urlauth service in src/imap-urlauth. Functionality common to both the imap and imap-urlauth services is located in src/lib-imap-urlauth. TODO: - use mailbox GUIDs instead of names - doveadm command to delete stale urlauth entries? - add delay when attempting to access nonexistent user - create urlauth-worker queue, similar to how indexer-worker works (could we share code?..)
author Stephan Bosch <stephan@rename-it.nl>
date Sat, 15 Sep 2012 23:57:08 +0300
parents
children 6e7e62ee07be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15066
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
1 /* Copyright (c) 2012 Dovecot authors, see the included COPYING file */
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
2
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
3 #include "lib.h"
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
4 #include "buffer.h"
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
5 #include "settings-parser.h"
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
6 #include "service-settings.h"
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
7 #include "mail-storage-settings.h"
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
8 #include "imap-urlauth-worker-settings.h"
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
9
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
10 #include <stddef.h>
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
11 #include <stdlib.h>
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
12 #include <unistd.h>
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
13
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
14 /* <settings checks> */
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
15 static struct file_listener_settings imap_urlauth_worker_unix_listeners_array[] = {
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
16 { "imap-urlauth-worker", 0600, "$default_internal_user", "" }
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
17 };
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
18 static struct file_listener_settings *imap_urlauth_worker_unix_listeners[] = {
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
19 &imap_urlauth_worker_unix_listeners_array[0]
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
20 };
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
21 static buffer_t imap_urlauth_worker_unix_listeners_buf = {
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
22 imap_urlauth_worker_unix_listeners, sizeof(imap_urlauth_worker_unix_listeners), { 0, }
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
23 };
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
24 /* </settings checks> */
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
25
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
26 struct service_settings imap_urlauth_worker_service_settings = {
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
27 .name = "imap-urlauth-worker",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
28 .protocol = "imap",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
29 .type = "",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
30 .executable = "imap-urlauth-worker",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
31 .user = "",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
32 .group = "",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
33 .privileged_group = "",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
34 .extra_groups = "",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
35 .chroot = "",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
36
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
37 .drop_priv_before_exec = FALSE,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
38
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
39 .process_min_avail = 0,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
40 .process_limit = 1024,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
41 .client_limit = 1,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
42 .service_count = 1,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
43 .idle_kill = 0,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
44 .vsz_limit = (uoff_t)-1,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
45
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
46 .unix_listeners = { { &imap_urlauth_worker_unix_listeners_buf,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
47 sizeof(imap_urlauth_worker_unix_listeners[0]) } },
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
48 .fifo_listeners = ARRAY_INIT,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
49 .inet_listeners = ARRAY_INIT
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
50 };
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
51
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
52 #undef DEF
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
53 #define DEF(type, name) \
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
54 { type, #name, offsetof(struct imap_urlauth_worker_settings, name), NULL }
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
55
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
56 static const struct setting_define imap_urlauth_worker_setting_defines[] = {
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
57 DEF(SET_BOOL, verbose_proctitle),
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
58
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
59 DEF(SET_STR_VARS, imap_urlauth_dict),
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
60 DEF(SET_STR, imap_urlauth_host),
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
61 DEF(SET_UINT, imap_urlauth_port),
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
62
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
63 SETTING_DEFINE_LIST_END
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
64 };
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
65
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
66 const struct imap_urlauth_worker_settings imap_urlauth_worker_default_settings = {
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
67 .verbose_proctitle = FALSE,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
68
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
69 .imap_urlauth_dict = "",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
70 .imap_urlauth_host = "",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
71 .imap_urlauth_port = 143
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
72 };
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
73
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
74 static const struct setting_parser_info *imap_urlauth_worker_setting_dependencies[] = {
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
75 &mail_user_setting_parser_info,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
76 NULL
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
77 };
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
78
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
79 const struct setting_parser_info imap_urlauth_worker_setting_parser_info = {
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
80 .module_name = "imap-urlauth-worker",
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
81 .defines = imap_urlauth_worker_setting_defines,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
82 .defaults = &imap_urlauth_worker_default_settings,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
83
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
84 .type_offset = (size_t)-1,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
85 .struct_size = sizeof(struct imap_urlauth_worker_settings),
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
86
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
87 .parent_offset = (size_t)-1,
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
88
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
89 .dependencies = imap_urlauth_worker_setting_dependencies
d419aac7ab31 Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
90 };