userdb_ldap_iterate_init(struct userdb_module *userdb,
userdb_iter_callback_t *callback, void *context)
{
+ static struct var_expand_table static_tab[] = {
+ /* nothing for now, but e.g. %{hostname} can be used */
+ { '\0', NULL, NULL }
+ };
struct ldap_userdb_module *module =
(struct ldap_userdb_module *)userdb;
struct ldap_connection *conn = module->conn;
struct ldap_userdb_iterate_context *ctx;
struct userdb_iter_ldap_request *request;
const char **attr_names = (const char **)conn->iterate_attr_names;
+ string_t *str;
ctx = i_new(struct ldap_userdb_iterate_context, 1);
ctx->ctx.userdb = userdb;
request->request.request.auth_request = auth_request_new_dummy();
request->request.base = conn->set.base;
- request->request.filter = conn->set.iterate_filter;
+
+ str = t_str_new(512);
+ var_expand(str, conn->set.iterate_filter, static_tab);
+ request->request.filter =
+ p_strdup(request->request.request.auth_request->pool,
+ str_c(str));
request->request.attributes = conn->iterate_attr_names;
if (global_auth_settings->debug) {
userdb_sql_iterate_init(struct userdb_module *userdb,
userdb_iter_callback_t *callback, void *context)
{
+ static struct var_expand_table static_tab[] = {
+ /* nothing for now, but e.g. %{hostname} can be used */
+ { '\0', NULL, NULL }
+ };
struct sql_userdb_module *module =
(struct sql_userdb_module *)userdb;
struct sql_userdb_iterate_context *ctx;
+ string_t *query;
+
+ query = t_str_new(512);
+ var_expand(query, module->conn->set.iterate_query, static_tab);
ctx = i_new(struct sql_userdb_iterate_context, 1);
ctx->ctx.userdb = userdb;
ctx->ctx.callback = callback;
ctx->ctx.context = context;
- sql_query(module->conn->db, module->conn->set.iterate_query,
+ sql_query(module->conn->db, str_c(query),
sql_iter_query_callback, ctx);
return &ctx->ctx;
}