#ifdef PASSDB_BSDAUTH
#include "safe-memset.h"
-#include "auth-cache.h"
#include "ipwd.h"
#include "mycrypt.h"
#include "settings.h"
SETTINGS_GET_FLAG_NO_EXPAND,
&post_set, error_r) < 0)
return -1;
- module->default_cache_key = !passdb_params->use_cache ? NULL :
- auth_cache_parse_key_and_fields(pool, AUTH_CACHE_KEY_USER,
- &post_set->fields, "bsdauth");
+ int ret = passdb_set_cache_key(module, passdb_params, pool,
+ AUTH_CACHE_KEY_USER, &post_set->fields,
+ "bsdauth", error_r);
settings_free(post_set);
*module_r = module;
- return 0;
+ return ret;
}
static void bsdauth_deinit(struct passdb_module *module ATTR_UNUSED)
#include "array.h"
#include "str.h"
#include "password-scheme.h"
-#include "auth-cache.h"
#include "settings.h"
#include "auth-settings.h"
#include "db-ldap.h"
ldap_pre->passdb_ldap_bind ?
"password" : NULL);
- module->module.default_cache_key = !passdb_params->use_cache ? NULL :
- auth_cache_parse_key_and_fields(pool,
- t_strconcat(ldap_pre->ldap_base,
- ldap_pre->passdb_ldap_bind_userdn,
- ldap_pre->passdb_ldap_filter, NULL),
- &auth_post->fields, NULL);
+ const char *query = t_strconcat(ldap_pre->ldap_base,
+ ldap_pre->passdb_ldap_bind_userdn,
+ ldap_pre->passdb_ldap_filter, NULL);
+ ret = passdb_set_cache_key(&module->module, passdb_params, pool,
+ query, &auth_post->fields,
+ NULL, error_r);
*module_r = &module->module;
- ret = 0;
failed:
settings_free(auth_post);
#include "str.h"
#include "net.h"
#include "safe-memset.h"
-#include "auth-cache.h"
#include "settings.h"
#include <sys/stat.h>
}
module = p_new(pool, struct pam_passdb_module, 1);
- module->module.default_cache_key = !passdb_params->use_cache ? NULL :
- auth_cache_parse_key_and_fields(pool,
- t_strdup_printf("%"AUTH_CACHE_KEY_USER"\t%s",
- set->service_name),
- &post_set->fields, "pam");
+ const char *query = t_strdup_printf("%"AUTH_CACHE_KEY_USER"\t%s",
+ set->service_name);
+ int ret = passdb_set_cache_key(&module->module, passdb_params, pool,
+ query, &post_set->fields, "pam", error_r);
module->requests_left = set->max_requests;
module->pam_setcred = set->setcred;
module->pam_session = set->session;
settings_free(set);
*module_r = &module->module;
- return 0;
+ return ret;
}
struct passdb_module_interface passdb_pam = {
/* Copyright (c) 2002-2018 Dovecot authors, see the included COPYING file */
#include "auth-common.h"
-#include "auth-cache.h"
#include "passdb.h"
#include "settings.h"
SETTINGS_GET_FLAG_NO_EXPAND,
&post_set, error_r) < 0)
return -1;
- module->default_cache_key = !passdb_params->use_cache ? NULL :
- auth_cache_parse_key_and_fields(pool, AUTH_CACHE_KEY_USER,
- &post_set->fields, "passwd");
+
+ int ret = passdb_set_cache_key(module, passdb_params, pool,
+ AUTH_CACHE_KEY_USER,
+ &post_set->fields, "passwd", error_r);
settings_free(post_set);
*module_r = module;
- return 0;
+ return ret;
}
static void passwd_deinit(struct passdb_module *module ATTR_UNUSED)
#include "settings.h"
#include "settings-parser.h"
#include "password-scheme.h"
-#include "auth-cache.h"
#include "db-sql.h"
#include <string.h>
return -1;
}
- module->module.default_cache_key = !passdb_params->use_cache ? NULL :
- auth_cache_parse_key_and_fields(pool, set->query,
- &post_set->fields, "sql");
+ int ret = passdb_set_cache_key(&module->module, passdb_params, pool,
+ set->query, &post_set->fields, "sql",
+ error_r);
settings_free(set);
settings_free(post_set);
*module_r = &module->module;
- return 0;
+ return ret;
}
static void passdb_sql_init(struct passdb_module *_module)
#include "auth-common.h"
#include "array.h"
#include "password-scheme.h"
+#include "auth-cache.h"
#include "auth-worker-connection.h"
#include "passdb.h"
callback(result, credentials, size, auth_request);
}
+int passdb_set_cache_key(struct passdb_module *module,
+ const struct passdb_parameters *passdb_params,
+ pool_t pool, const char *query,
+ const ARRAY_TYPE(const_string) *fields,
+ const char *exclude_driver, const char **error_r ATTR_UNUSED)
+{
+ if (!passdb_params->use_cache)
+ return 0;
+
+ module->default_cache_key =
+ auth_cache_parse_key_and_fields(pool, query, fields,
+ exclude_driver);
+ return 0;
+}
+
struct passdb_module *
passdb_preinit(pool_t pool, struct event *event,
const struct auth_passdb_settings *set, bool use_cache)
lookup_credentials_callback_t *callback,
struct auth_request *auth_request);
+int passdb_set_cache_key(struct passdb_module *module,
+ const struct passdb_parameters *passdb_params,
+ pool_t pool, const char *query,
+ const ARRAY_TYPE(const_string) *fields,
+ const char *exclude_driver, const char **error_r);
+
struct passdb_module *
passdb_preinit(pool_t pool, struct event *event,
const struct auth_passdb_settings *set, bool use_cache);