1*76404edcSAsim Jamshed #ifndef _HTTP_AUTH_H_ 2*76404edcSAsim Jamshed #define _HTTP_AUTH_H_ 3*76404edcSAsim Jamshed 4*76404edcSAsim Jamshed #include "server.h" 5*76404edcSAsim Jamshed #include "plugin.h" 6*76404edcSAsim Jamshed 7*76404edcSAsim Jamshed #if defined(HAVE_LDAP_H) && defined(HAVE_LBER_H) && defined(HAVE_LIBLDAP) && defined(HAVE_LIBLBER) 8*76404edcSAsim Jamshed # define USE_LDAP 9*76404edcSAsim Jamshed # include <ldap.h> 10*76404edcSAsim Jamshed #endif 11*76404edcSAsim Jamshed 12*76404edcSAsim Jamshed typedef enum { 13*76404edcSAsim Jamshed AUTH_BACKEND_UNSET, 14*76404edcSAsim Jamshed AUTH_BACKEND_PLAIN, 15*76404edcSAsim Jamshed AUTH_BACKEND_LDAP, 16*76404edcSAsim Jamshed AUTH_BACKEND_HTPASSWD, 17*76404edcSAsim Jamshed AUTH_BACKEND_HTDIGEST 18*76404edcSAsim Jamshed } auth_backend_t; 19*76404edcSAsim Jamshed 20*76404edcSAsim Jamshed typedef struct { 21*76404edcSAsim Jamshed /* auth */ 22*76404edcSAsim Jamshed array *auth_require; 23*76404edcSAsim Jamshed 24*76404edcSAsim Jamshed buffer *auth_plain_groupfile; 25*76404edcSAsim Jamshed buffer *auth_plain_userfile; 26*76404edcSAsim Jamshed 27*76404edcSAsim Jamshed buffer *auth_htdigest_userfile; 28*76404edcSAsim Jamshed buffer *auth_htpasswd_userfile; 29*76404edcSAsim Jamshed 30*76404edcSAsim Jamshed buffer *auth_backend_conf; 31*76404edcSAsim Jamshed 32*76404edcSAsim Jamshed buffer *auth_ldap_hostname; 33*76404edcSAsim Jamshed buffer *auth_ldap_basedn; 34*76404edcSAsim Jamshed buffer *auth_ldap_binddn; 35*76404edcSAsim Jamshed buffer *auth_ldap_bindpw; 36*76404edcSAsim Jamshed buffer *auth_ldap_filter; 37*76404edcSAsim Jamshed buffer *auth_ldap_cafile; 38*76404edcSAsim Jamshed unsigned short auth_ldap_starttls; 39*76404edcSAsim Jamshed unsigned short auth_ldap_allow_empty_pw; 40*76404edcSAsim Jamshed 41*76404edcSAsim Jamshed unsigned short auth_debug; 42*76404edcSAsim Jamshed 43*76404edcSAsim Jamshed /* generated */ 44*76404edcSAsim Jamshed auth_backend_t auth_backend; 45*76404edcSAsim Jamshed 46*76404edcSAsim Jamshed #ifdef USE_LDAP 47*76404edcSAsim Jamshed LDAP *ldap; 48*76404edcSAsim Jamshed 49*76404edcSAsim Jamshed buffer *ldap_filter_pre; 50*76404edcSAsim Jamshed buffer *ldap_filter_post; 51*76404edcSAsim Jamshed #endif 52*76404edcSAsim Jamshed } mod_auth_plugin_config; 53*76404edcSAsim Jamshed 54*76404edcSAsim Jamshed typedef struct { 55*76404edcSAsim Jamshed PLUGIN_DATA; 56*76404edcSAsim Jamshed buffer *tmp_buf; 57*76404edcSAsim Jamshed 58*76404edcSAsim Jamshed buffer *auth_user; 59*76404edcSAsim Jamshed 60*76404edcSAsim Jamshed #ifdef USE_LDAP 61*76404edcSAsim Jamshed buffer *ldap_filter; 62*76404edcSAsim Jamshed #endif 63*76404edcSAsim Jamshed 64*76404edcSAsim Jamshed mod_auth_plugin_config **config_storage; 65*76404edcSAsim Jamshed 66*76404edcSAsim Jamshed mod_auth_plugin_config conf, *anon_conf; /* this is only used as long as no handler_ctx is setup */ 67*76404edcSAsim Jamshed } mod_auth_plugin_data; 68*76404edcSAsim Jamshed 69*76404edcSAsim Jamshed int http_auth_basic_check(server *srv, connection *con, mod_auth_plugin_data *p, array *req, buffer *url, const char *realm_str); 70*76404edcSAsim Jamshed int http_auth_digest_check(server *srv, connection *con, mod_auth_plugin_data *p, array *req, buffer *url, const char *realm_str); 71*76404edcSAsim Jamshed int http_auth_digest_generate_nonce(server *srv, mod_auth_plugin_data *p, buffer *fn, char hh[33]); 72*76404edcSAsim Jamshed 73*76404edcSAsim Jamshed #endif 74