]>
Commit | Line | Data |
---|---|---|
f5691f9c | 1 | /* |
262a0e14 | 2 | * $Id$ |
f5691f9c | 3 | * |
4 | * | |
5 | * SQUID Web Proxy Cache http://www.squid-cache.org/ | |
6 | * ---------------------------------------------------------- | |
7 | * | |
8 | * Squid is the result of efforts by numerous individuals from | |
9 | * the Internet community; see the CONTRIBUTORS file for full | |
10 | * details. Many organizations have provided support for Squid's | |
11 | * development; see the SPONSORS file for full details. Squid is | |
12 | * Copyrighted (C) 2001 by the Regents of the University of | |
13 | * California; see the COPYRIGHT file for full details. Squid | |
14 | * incorporates software developed and/or copyrighted by other | |
15 | * sources; see the CREDITS file for full details. | |
16 | * | |
17 | * This program is free software; you can redistribute it and/or modify | |
18 | * it under the terms of the GNU General Public License as published by | |
19 | * the Free Software Foundation; either version 2 of the License, or | |
20 | * (at your option) any later version. | |
26ac0430 | 21 | * |
f5691f9c | 22 | * This program is distributed in the hope that it will be useful, |
23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
25 | * GNU General Public License for more details. | |
26ac0430 | 26 | * |
f5691f9c | 27 | * You should have received a copy of the GNU General Public License |
28 | * along with this program; if not, write to the Free Software | |
29 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. | |
30 | * | |
31 | */ | |
f5691f9c | 32 | #ifndef SQUID_AUTHCONFIG_H |
33 | #define SQUID_AUTHCONFIG_H | |
34 | ||
2f1431ea AJ |
35 | #if USE_AUTH |
36 | ||
a33a428a | 37 | #include "auth/UserRequest.h" |
ea0695f2 | 38 | #include "HelperChildConfig.h" |
a33a428a | 39 | |
e1f7507e AJ |
40 | class StoreEntry; |
41 | class HttpReply; | |
42 | class HttpRequest; | |
ea0695f2 | 43 | class wordlist; |
e1f7507e AJ |
44 | |
45 | /* for http_hdr_type parameters-by-value */ | |
46 | #include "HttpHeader.h" | |
47 | ||
48 | ||
49 | /** | |
50 | \ingroup AuthAPI | |
51 | \par | |
f5691f9c | 52 | * I am the configuration for an auth scheme. |
53 | * Currently each scheme has only one instance of me, | |
54 | * but this may change. | |
e1f7507e AJ |
55 | \par |
56 | * This class is treated like a ref counted class. | |
f5691f9c | 57 | * If the children ever stop being singletons, implement the |
58 | * ref counting... | |
59 | */ | |
f5691f9c | 60 | class AuthConfig |
61 | { | |
62 | ||
63 | public: | |
a33a428a | 64 | static AuthUserRequest::Pointer CreateAuthUser(const char *proxy_auth); |
f5691f9c | 65 | |
66 | static AuthConfig *Find(const char *proxy_auth); | |
58ee2093 | 67 | AuthConfig() : authenticateChildren(20), authenticateProgram(NULL) {} |
f5691f9c | 68 | |
26ac0430 | 69 | virtual ~AuthConfig() {} |
f5691f9c | 70 | |
63be0a78 | 71 | /** |
72 | * Used by squid to determine whether the auth module has successfully initialised itself with the current configuration. | |
73 | * | |
74 | \retval true Authentication Module loaded and running. | |
75 | \retval false No Authentication Module loaded. | |
76 | */ | |
f5691f9c | 77 | virtual bool active() const = 0; |
63be0a78 | 78 | |
79 | /** | |
80 | * new decode API: virtual factory pattern | |
81 | \par | |
82 | * Responsible for decoding the passed authentication header, creating or | |
83 | * linking to a AuthUser object and for storing any needed details to complete | |
84 | * authentication in AuthUserRequest::authenticate(). | |
85 | * | |
86 | \param proxy_auth Login Pattern to parse. | |
87 | \retval * Details needed to authenticate. | |
88 | */ | |
a33a428a | 89 | virtual AuthUserRequest::Pointer decode(char const *proxy_auth) = 0; |
63be0a78 | 90 | |
91 | /** | |
92 | * squid is finished with this config, release any unneeded resources. | |
f5691f9c | 93 | * If a singleton, delete will not occur. if not a singleton (future), |
94 | * delete will occur when no references are held. | |
63be0a78 | 95 | * |
96 | \todo we need a 'done for reconfigure' and a 'done permanently' concept. | |
f5691f9c | 97 | */ |
98 | virtual void done() = 0; | |
63be0a78 | 99 | |
100 | /** | |
101 | * The configured function is used to see if the auth module has been given valid | |
102 | * parameters and is able to handle authentication requests. | |
103 | * | |
104 | \retval true Authentication Module configured ready for use. | |
105 | \retval false Not configured or Configuration Error. | |
106 | * No other module functions except Shutdown/Dump/Parse/FreeConfig will be called by Squid. | |
107 | */ | |
f5691f9c | 108 | virtual bool configured() const = 0; |
63be0a78 | 109 | |
0bcb6908 AJ |
110 | /** |
111 | * Shutdown just the auth helpers. | |
112 | * For use by log rotate etc. where auth needs to stay running, with the helpers restarted. | |
113 | */ | |
114 | virtual void rotateHelpers(void) = 0; | |
115 | ||
63be0a78 | 116 | /** |
117 | * Responsible for writing to the StoreEntry the configuration parameters that a user | |
118 | * would put in a config file to recreate the running configuration. | |
119 | */ | |
f5691f9c | 120 | virtual void dump(StoreEntry *, const char *, AuthConfig *) = 0; |
63be0a78 | 121 | |
122 | /** add headers as needed when challenging for auth */ | |
a33a428a | 123 | virtual void fixHeader(AuthUserRequest::Pointer, HttpReply *, http_hdr_type, HttpRequest *) = 0; |
63be0a78 | 124 | /** prepare to handle requests */ |
f5691f9c | 125 | virtual void init(AuthConfig *) = 0; |
63be0a78 | 126 | /** expose any/all statistics to a CacheManager */ |
15fab853 | 127 | virtual void registerWithCacheManager(void); |
63be0a78 | 128 | /** parse config options */ |
f5691f9c | 129 | virtual void parse(AuthConfig *, int, char *) = 0; |
63be0a78 | 130 | /** the http string id */ |
f5691f9c | 131 | virtual const char * type() const = 0; |
ea0695f2 AJ |
132 | |
133 | public: | |
ec5858ff | 134 | HelperChildConfig authenticateChildren; |
58ee2093 | 135 | wordlist *authenticateProgram; ///< Helper program to run, includes all parameters |
f5691f9c | 136 | }; |
137 | ||
5817ee13 AJ |
138 | namespace Auth |
139 | { | |
140 | ||
141 | typedef Vector<AuthConfig *> authConfig; | |
142 | ||
143 | extern authConfig TheConfig; | |
144 | ||
e5519212 | 145 | } // namespace Auth |
5817ee13 | 146 | |
2f1431ea | 147 | #endif /* USE_AUTH */ |
f5691f9c | 148 | #endif /* SQUID_AUTHCONFIG_H */ |