mail-user.c revision a443e5aaf632257bfd1e7aa9b3c42c09512bbe43
2e37d45867d081db150ab78dad303b9077aea24fTimo Sirainen/* Copyright (c) 2008 Dovecot authors, see the included COPYING file */
b58fbcc79c40f867eccae98548fcd25a16823433Timo Sirainenstruct mail_user_module_register mail_user_module_register = { 0 };
df02611c44e9432e7961223bf9bfa3fb233b1789Timo Sirainenvoid (*hook_mail_user_created)(struct mail_user *user) = NULL;
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainenstatic struct auth_master_connection *auth_master_conn;
df02611c44e9432e7961223bf9bfa3fb233b1789Timo Sirainenstatic void mail_user_deinit_base(struct mail_user *user)
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainenstruct mail_user *mail_user_init(const char *username)
39afc7584d935b2dc7332c21966a7b20da03f1ecTimo Sirainen pool = pool_alloconly_create("mail user", 512);
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainen user->username = p_strdup_empty(pool, username);
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainen p_array_init(&user->module_contexts, user->pool, 5);
39afc7584d935b2dc7332c21966a7b20da03f1ecTimo Sirainenstruct mail_user *mail_user_find(struct mail_user *user, const char *name)
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainen for (ns = user->namespaces; ns != NULL; ns = ns->next) {
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainen if (ns->owner != NULL && strcmp(ns->owner->username, name) == 0)
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainenvoid mail_user_set_home(struct mail_user *user, const char *home)
b66412da78711db8423288847ecfb08469609a03Timo Sirainenvoid mail_user_add_namespace(struct mail_user *user, struct mail_namespace *ns)
afb7901ecb5d5566d4cf19be969654946fbaad4bTimo Sirainen if (strlen(ns->prefix) < strlen((*tmp)->prefix))
b58fbcc79c40f867eccae98548fcd25a16823433Timo Sirainenvoid mail_user_drop_useless_namespaces(struct mail_user *user)
b66412da78711db8423288847ecfb08469609a03Timo Sirainen for (ns = user->namespaces; ns != NULL; ns = next) {
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainen if ((ns->flags & NAMESPACE_FLAG_USABLE) == 0 &&
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainen (ns->flags & NAMESPACE_FLAG_AUTOCREATED) != 0)
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainenconst char *mail_user_home_expand(struct mail_user *user, const char *path)
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainenint mail_user_get_home(struct mail_user *user, const char **home_r)
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainen userdb_pool = pool_alloconly_create("userdb lookup", 512);
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainen ret = auth_master_user_lookup(auth_master_conn, user->username,
cb1fd563e6000153d1be76fd8722a096bd144b77Timo Sirainenint mail_user_try_home_expand(struct mail_user *user, const char **pathp)
b58fbcc79c40f867eccae98548fcd25a16823433Timo Sirainen if (path[0] == '~' && (path[1] == '/' || path[1] == '\0')) {
b58fbcc79c40f867eccae98548fcd25a16823433Timo Sirainen *pathp = t_strconcat(user->_home, path + 1, NULL);
b66412da78711db8423288847ecfb08469609a03Timo Sirainenvoid mail_users_init(const char *auth_socket_path, bool debug)
b66412da78711db8423288847ecfb08469609a03Timo Sirainen auth_socket_path = t_strconcat(base_dir, "/auth-master", NULL);