imap-acl-plugin.c revision 411f318ed3a25fa66c1b932e10df43841e2725c9
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen/* Copyright (c) 2008-2009 Dovecot authors, see the included COPYING file */
16c89b1260c9d07c01c83a9219424d3727069b2eTimo Sirainen#define ERROR_NOT_ADMIN "["IMAP_RESP_CODE_NOPERM"] " \
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen "You lack administrator privileges on this mailbox."
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen (MAILBOX_FLAG_READONLY | MAILBOX_FLAG_KEEP_RECENT)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainenstatic const struct imap_acl_letter_map imap_acl_letter_map[] = {
09c3a491f4f6ccebe290c7709bdc0d79a187610bTimo Sirainenconst char *imap_acl_plugin_version = PACKAGE_VERSION;
09c3a491f4f6ccebe290c7709bdc0d79a187610bTimo Sirainenstatic void (*next_hook_client_created)(struct client **client);
5a07b37a9df398b5189c14872a600384208ab74bTimo Sirainenstatic struct mailbox *
5a07b37a9df398b5189c14872a600384208ab74bTimo Sirainenacl_mailbox_open_as_admin(struct client_command_context *cmd, const char *name)
int ret;
return NULL;
return NULL;
if (ret > 0)
return box;
return NULL;
static const struct imap_acl_letter_map *
return &imap_acl_letter_map[i];
return NULL;
if (append_c)
if (append_d)
case ACL_ID_ANYONE:
case ACL_ID_AUTHENTICATED:
case ACL_ID_OWNER:
case ACL_ID_USER:
case ACL_ID_GROUP:
case ACL_ID_GROUP_OVERRIDE:
case ACL_ID_TYPE_COUNT:
i_unreached();
bool add_default)
const char *username;
int ret;
if (convert_owner) {
if (owner) {
if (!convert_owner) {
return ret;
const char *mailbox;
int ret;
return FALSE;
return TRUE;
if (ret == 0) {
return TRUE;
const char *const *rights;
return FALSE;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return FALSE;
return TRUE;
return TRUE;
const char **error_r)
switch (*letters) {
const char *env;
id);
case ACL_MODIFY_MODE_REMOVE:
case ACL_MODIFY_MODE_REPLACE:
struct acl_rights *r;
return FALSE;
return TRUE;
identifier++;
switch (*rights) {
rights++;
rights++;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
if (negative) {
return TRUE;
return FALSE;
return TRUE;
identifier++;
return TRUE;
return TRUE;
return TRUE;
void imap_acl_plugin_init(void)
void imap_acl_plugin_deinit(void)