userdb.h revision 43a66a0b16299bd4f7615acd85e98bd3832c54d5
e59faf65ce864fe95dc00f5d52b8323cdbd0608aTimo Sirainen#ifndef __USERDB_H
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen#define __USERDB_H
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen#include "auth-stream.h"
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
5d60e31c7b701b606067a20bc88dcc8a6de7bbd6Timo Sirainenstruct auth_request;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainenenum userdb_result {
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen USERDB_RESULT_INTERNAL_FAILURE = -1,
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen USERDB_RESULT_USER_UNKNOWN = -2,
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen USERDB_RESULT_OK = 1
d477acb83e14a776ece4ca94dcd1869e75d0c6eeTimo Sirainen};
9dd1c256910f1fb42823116a641e7edb3ad11970Timo Sirainen
9dd1c256910f1fb42823116a641e7edb3ad11970Timo Sirainentypedef void userdb_callback_t(enum userdb_result result,
d477acb83e14a776ece4ca94dcd1869e75d0c6eeTimo Sirainen struct auth_request *request);
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainenstruct userdb_module {
daa7e7459749ae8f82cd3eed9c44522d81c609a3Timo Sirainen /* The caching key for this module, or NULL if caching isn't wanted. */
bbadd5331f534017cf62d5183003b3d9fdad079eTimo Sirainen const char *cache_key;
373492be949e159fda651807b3acda2c5c077027Timo Sirainen
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen /* If blocking is set to TRUE, use child processes to access
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen this userdb. */
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen bool blocking;
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen const struct userdb_module_interface *iface;
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen};
373492be949e159fda651807b3acda2c5c077027Timo Sirainen
bbadd5331f534017cf62d5183003b3d9fdad079eTimo Sirainenstruct userdb_module_interface {
bbadd5331f534017cf62d5183003b3d9fdad079eTimo Sirainen const char *name;
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen struct userdb_module *
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen (*preinit)(struct auth_userdb *auth_userdb, const char *args);
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen void (*init)(struct userdb_module *module, const char *args);
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen void (*deinit)(struct userdb_module *module);
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen void (*lookup)(struct auth_request *auth_request,
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen userdb_callback_t *callback);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen};
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainenuid_t userdb_parse_uid(struct auth_request *request, const char *str);
635df5b4cbcd7b24c825e01d9dd66d3a4274c4c7Timo Sirainengid_t userdb_parse_gid(struct auth_request *request, const char *str);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainenvoid userdb_preinit(struct auth *auth, const char *driver, const char *args);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainenvoid userdb_init(struct auth_userdb *userdb);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainenvoid userdb_deinit(struct auth_userdb *userdb);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainenvoid userdb_register_module(struct userdb_module_interface *iface);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainenvoid userdb_unregister_module(struct userdb_module_interface *iface);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainenvoid userdbs_init(void);
99430beb12dfbc6c9c160f08e2102aeab38a589cTimo Sirainenvoid userdbs_deinit(void);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen
93a7d1ee4b518b5c85f9721dc6539e4dab6aae00Timo Sirainen#include "auth-request.h"
f7f25f9e1a38678d0e97d2e609beac16285fac6bTimo Sirainen
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen#endif
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen