]> git.ipfire.org Git - thirdparty/squid.git/blame - src/auth/basic/auth_basic.h
Refactored actions "via_headers", "forw_headers" and "asndb" to Cache Manager
[thirdparty/squid.git] / src / auth / basic / auth_basic.h
CommitLineData
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
18class AuthenticateStateData
19{
20
e6ccf245 21public:
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
29class BasicAuthQueueNode
30{
31
e6ccf245 32public:
33 BasicAuthQueueNode *next;
34 AuthUserRequest *auth_user_request;
94439e4e 35 RH *handler;
36 void *data;
37};
38
f5691f9c 39class AuthBasicUserRequest;
40
41class BasicUser : public AuthUser
62e76326 42{
43
e6ccf245 44public:
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
66unsigned int credentials_ok:
67 2; /*0=unchecked,1=ok,2=failed */
2fadd50d 68 } flags;
e6ccf245 69 BasicAuthQueueNode *auth_queue;
f5691f9c 70
71private:
35b3bc89 72 bool decodeCleartext();
73 void extractUsername();
f5691f9c 74 void extractPassword();
75 char *cleartext;
76 AuthUserRequest *currentRequest;
77 char const *httpAuthHeader;
78};
79
63be0a78 80MEMPROXY_CLASS_INLINE(BasicUser) /**DOCS_NOSEMI*/
b001e822 81
f5691f9c 82typedef class BasicUser basic_data;
83
84/* follows the http request around */
85
86class AuthBasicUserRequest : public AuthUserRequest
87{
88
89public:
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
105private:
f5691f9c 106 BasicUser *_theUser;
94439e4e 107};
108
63be0a78 109MEMPROXY_CLASS_INLINE(AuthBasicUserRequest) /**DOCS_NOSEMI*/
b001e822 110
94439e4e 111/* configuration runtime data */
62e76326 112
f5691f9c 113class AuthBasicConfig : public AuthConfig
62e76326 114{
115
e6ccf245 116public:
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