/* Copyright (c) 2003-2018 Dovecot authors, see the included COPYING file */
#include "auth-common.h"
#include "userdb.h"
#include "ioloop.h"
#include "array.h"
#include "str.h"
#include "auth-cache.h"
#include "db-ldap.h"
#include <ldap.h>
struct ldap_userdb_module {
};
struct userdb_ldap_request {
unsigned int entries;
};
struct userdb_iter_ldap_request {
};
struct ldap_userdb_iterate_context {
};
static void
struct auth_request *auth_request,
struct ldap_request_search *ldap_request,
{
}
}
static void
struct userdb_ldap_request *urequest,
{
"user_filter matched multiple objects, aborting");
} else {
}
}
struct ldap_request *request,
{
(struct userdb_ldap_request *) request;
return;
}
/* first entry */
}
}
{
(struct ldap_userdb_module *)_module;
const char *error;
ldap_escape, &error) <= 0) {
return;
}
str_truncate(str, 0);
ldap_escape, &error) <= 0) {
"Failed to expand user_filter=%s: %s",
return;
}
"base=%s scope=%s filter=%s fields=%s",
}
struct ldap_request *request,
{
(struct userdb_iter_ldap_request *)request;
return;
}
/* the iteration can take a while. reset the request's create time so
it won't be aborted while it's still running */
i_warning("ldap: iterate: "
"Ignoring field not named 'user': %s", name);
continue;
}
}
}
}
static struct userdb_iterate_context *
{
(struct ldap_userdb_module *)_module;
const char *error;
ldap_escape, &error) <= 0) {
}
str_truncate(str, 0);
"Failed to expand iterate_filter=%s: %s",
}
if (global_auth_settings->debug) {
i_debug("ldap: iterate: base=%s scope=%s filter=%s fields=%s",
}
}
{
(struct ldap_userdb_iterate_context *)_ctx;
if (!ctx->in_callback)
}
{
(struct ldap_userdb_iterate_context *)_ctx;
return ret;
}
static struct userdb_module *
{
}
{
(struct ldap_userdb_module *)_module;
}
{
(struct ldap_userdb_module *)_module;
}
#ifndef PLUGIN_BUILD
#else
#endif
{
"ldap",
};
#else
.name = "ldap"
};
#endif