[SCons] define with_krb5 for SCons build
[lighttpd.git] / src / http_auth.h
blob6eb0b3fb4c99a45e15a80e4f44ea03b048edc4f3
1 #ifndef _HTTP_AUTH_H_
2 #define _HTTP_AUTH_H_
3 #include "first.h"
5 #include "base.h"
7 struct http_auth_scheme_t;
8 struct http_auth_require_t;
9 struct http_auth_backend_t;
11 typedef struct http_auth_require_t {
12 const struct http_auth_scheme_t *scheme;
13 buffer *realm;
14 int valid_user;
15 array *user;
16 array *group;
17 array *host;
18 } http_auth_require_t;
20 http_auth_require_t * http_auth_require_init (void);
21 void http_auth_require_free (http_auth_require_t *require);
22 int http_auth_match_rules (const http_auth_require_t *require, const char *user, const char *group, const char *host);
24 typedef struct http_auth_backend_t {
25 const char *name;
26 handler_t(*basic)(server *srv, connection *con, void *p_d, const buffer *username, const buffer *realm, const char *pw);
27 handler_t(*digest)(server *srv, connection *con, void *p_d, const char *username, const char *realm, unsigned char HA1[16]);
28 void *p_d;
29 } http_auth_backend_t;
31 typedef struct http_auth_scheme_t {
32 const char *name;
33 handler_t(*checkfn)(server *srv, connection *con, void *p_d, const struct http_auth_require_t *require, const struct http_auth_backend_t *backend);
34 /*(backend is arg only because auth.backend is separate config directive)*/
35 void *p_d;
36 } http_auth_scheme_t;
38 const http_auth_scheme_t * http_auth_scheme_get (const buffer *name);
39 void http_auth_scheme_set (const http_auth_scheme_t *scheme);
40 const http_auth_backend_t * http_auth_backend_get (const buffer *name);
41 void http_auth_backend_set (const http_auth_backend_t *backend);
43 void http_auth_setenv(array *env, const char *username, size_t ulen, const char *auth_type, size_t alen);
45 int http_auth_md5_hex2bin (const char *md5hex, size_t len, unsigned char md5bin[16]);
47 #endif