diff options
Diffstat (limited to 'src/auth/auth.h')
-rw-r--r-- | src/auth/auth.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/auth/auth.h b/src/auth/auth.h new file mode 100644 index 0000000..3ca5a9b --- /dev/null +++ b/src/auth/auth.h @@ -0,0 +1,91 @@ +#ifndef AUTH_H +#define AUTH_H + +#include "auth-settings.h" + +#define PASSWORD_HIDDEN_STR "<hidden>" + +ARRAY_DEFINE_TYPE(auth, struct auth *); +extern ARRAY_TYPE(auth) auths; + +enum auth_passdb_skip { + AUTH_PASSDB_SKIP_NEVER, + AUTH_PASSDB_SKIP_AUTHENTICATED, + AUTH_PASSDB_SKIP_UNAUTHENTICATED +}; + +enum auth_userdb_skip { + AUTH_USERDB_SKIP_NEVER, + AUTH_USERDB_SKIP_FOUND, + AUTH_USERDB_SKIP_NOTFOUND +}; + +enum auth_db_rule { + AUTH_DB_RULE_RETURN, + AUTH_DB_RULE_RETURN_OK, + AUTH_DB_RULE_RETURN_FAIL, + AUTH_DB_RULE_CONTINUE, + AUTH_DB_RULE_CONTINUE_OK, + AUTH_DB_RULE_CONTINUE_FAIL +}; + +struct auth_passdb { + struct auth_passdb *next; + + const struct auth_passdb_settings *set; + struct passdb_module *passdb; + + /* The caching key for this passdb, or NULL if caching isn't wanted. */ + const char *cache_key; + + struct passdb_template *default_fields_tmpl; + struct passdb_template *override_fields_tmpl; + + enum auth_passdb_skip skip; + enum auth_db_rule result_success; + enum auth_db_rule result_failure; + enum auth_db_rule result_internalfail; +}; + +struct auth_userdb { + struct auth_userdb *next; + + const struct auth_userdb_settings *set; + struct userdb_module *userdb; + + /* The caching key for this userdb, or NULL if caching isn't wanted. */ + const char *cache_key; + + struct userdb_template *default_fields_tmpl; + struct userdb_template *override_fields_tmpl; + + enum auth_userdb_skip skip; + enum auth_db_rule result_success; + enum auth_db_rule result_failure; + enum auth_db_rule result_internalfail; +}; + +struct auth { + pool_t pool; + const char *service; + const struct auth_settings *set; + + const struct mechanisms_register *reg; + struct auth_passdb *masterdbs; + struct auth_passdb *passdbs; + struct auth_userdb *userdbs; +}; + +extern struct auth_penalty *auth_penalty; + +struct auth *auth_find_service(const char *name); +struct auth *auth_default_service(void); + +void auths_preinit(const struct auth_settings *set, pool_t pool, + const struct mechanisms_register *reg, + const char *const *services); +void auths_init(void); +void auths_deinit(void); +void auths_free(void); + +#endif |