]>
Commit | Line | Data |
---|---|---|
94439e4e | 1 | /* |
2 | * auth_basic.h | |
3 | * Internal declarations for the basic auth module | |
4 | */ | |
5 | ||
6 | #ifndef __AUTH_BASIC_H__ | |
7 | #define __AUTH_BASIC_H__ | |
82b045dc | 8 | #include "authenticate.h" |
f5691f9c | 9 | #include "AuthUser.h" |
10 | #include "AuthUserRequest.h" | |
11 | #include "AuthConfig.h" | |
aa839030 | 12 | #include "helper.h" |
94439e4e | 13 | |
94439e4e | 14 | #define DefaultAuthenticateChildrenMax 32 /* 32 processes */ |
15 | ||
16 | /* Generic */ | |
62e76326 | 17 | |
18 | class AuthenticateStateData | |
19 | { | |
20 | ||
e6ccf245 | 21 | public: |
94439e4e | 22 | void *data; |
76f142cd | 23 | AuthUserRequest *auth_user_request; |
94439e4e | 24 | RH *handler; |
e6ccf245 | 25 | }; |
94439e4e | 26 | |
27 | /* queue of auth requests waiting for verification to occur */ | |
62e76326 | 28 | |
29 | class BasicAuthQueueNode | |
30 | { | |
31 | ||
e6ccf245 | 32 | public: |
33 | BasicAuthQueueNode *next; | |
34 | AuthUserRequest *auth_user_request; | |
94439e4e | 35 | RH *handler; |
36 | void *data; | |
37 | }; | |
38 | ||
f5691f9c | 39 | class AuthBasicUserRequest; |
40 | ||
41 | class BasicUser : public AuthUser | |
62e76326 | 42 | { |
43 | ||
e6ccf245 | 44 | public: |
b001e822 | 45 | MEMPROXY_CLASS(BasicUser); |
46 | ||
f5691f9c | 47 | virtual void deleteSelf() const; |
f5691f9c | 48 | BasicUser(AuthConfig *); |
49 | ~BasicUser(); | |
50 | bool authenticated() const; | |
76f142cd | 51 | void queueRequest(AuthUserRequest * auth_user_request, RH * handler, void *data); |
52 | void submitRequest (AuthUserRequest * auth_user_request, RH * handler, void *data); | |
f5691f9c | 53 | void decode(char const *credentials, AuthUserRequest *); |
54 | char *getCleartext() {return cleartext;} | |
55 | ||
56 | bool valid() const; | |
57 | void makeLoggingInstance(AuthBasicUserRequest *auth_user_request); | |
58 | AuthUser * makeCachedFrom(); | |
59 | void updateCached(BasicUser *from); | |
94439e4e | 60 | char *passwd; |
61 | time_t credentials_checkedtime; | |
62e76326 | 62 | |
63 | struct | |
64 | { | |
65 | ||
66 | unsigned int credentials_ok: | |
67 | 2; /*0=unchecked,1=ok,2=failed */ | |
2fadd50d | 68 | } flags; |
e6ccf245 | 69 | BasicAuthQueueNode *auth_queue; |
f5691f9c | 70 | |
71 | private: | |
35b3bc89 | 72 | bool decodeCleartext(); |
73 | void extractUsername(); | |
f5691f9c | 74 | void extractPassword(); |
75 | char *cleartext; | |
76 | AuthUserRequest *currentRequest; | |
77 | char const *httpAuthHeader; | |
78 | }; | |
79 | ||
63be0a78 | 80 | MEMPROXY_CLASS_INLINE(BasicUser) /**DOCS_NOSEMI*/ |
b001e822 | 81 | |
f5691f9c | 82 | typedef class BasicUser basic_data; |
83 | ||
84 | /* follows the http request around */ | |
85 | ||
86 | class AuthBasicUserRequest : public AuthUserRequest | |
87 | { | |
88 | ||
89 | public: | |
b001e822 | 90 | MEMPROXY_CLASS(AuthBasicUserRequest); |
91 | ||
f5691f9c | 92 | AuthBasicUserRequest(); |
93 | virtual ~AuthBasicUserRequest(); | |
94 | ||
95 | virtual int authenticated() const; | |
486bf0fb | 96 | virtual void authenticate(HttpRequest * request, ConnStateData *conn, http_hdr_type type); |
f5691f9c | 97 | virtual int module_direction(); |
98 | virtual void module_start(RH *, void *); | |
99 | virtual AuthUser *user() {return _theUser;} | |
100 | ||
101 | virtual const AuthUser *user() const {return _theUser;} | |
102 | ||
103 | virtual void user (AuthUser *aUser) {_theUser=dynamic_cast<BasicUser *>(aUser);} | |
104 | ||
105 | private: | |
f5691f9c | 106 | BasicUser *_theUser; |
94439e4e | 107 | }; |
108 | ||
63be0a78 | 109 | MEMPROXY_CLASS_INLINE(AuthBasicUserRequest) /**DOCS_NOSEMI*/ |
b001e822 | 110 | |
94439e4e | 111 | /* configuration runtime data */ |
62e76326 | 112 | |
f5691f9c | 113 | class AuthBasicConfig : public AuthConfig |
62e76326 | 114 | { |
115 | ||
e6ccf245 | 116 | public: |
5c926411 | 117 | AuthBasicConfig(); |
3845e4c8 | 118 | ~AuthBasicConfig(); |
f5691f9c | 119 | virtual bool active() const; |
120 | virtual bool configured() const; | |
121 | virtual AuthUserRequest *decode(char const *proxy_auth); | |
122 | virtual void done(); | |
123 | virtual void dump(StoreEntry *, const char *, AuthConfig *); | |
76f142cd | 124 | virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *); |
f5691f9c | 125 | virtual void init(AuthConfig *); |
126 | virtual void parse(AuthConfig *, int, char *); | |
62ee09ca | 127 | virtual void registerWithCacheManager(CacheManager & manager); |
f5691f9c | 128 | virtual const char * type() const; |
94439e4e | 129 | int authenticateChildren; |
07eca7e0 | 130 | int authenticateConcurrency; |
94439e4e | 131 | char *basicAuthRealm; |
132 | wordlist *authenticate; | |
133 | time_t credentialsTTL; | |
64658378 | 134 | int casesensitive; |
94439e4e | 135 | }; |
136 | ||
94439e4e | 137 | #endif |