From: Amos Jeffries Date: Sat, 9 Apr 2011 04:25:23 +0000 (-0600) Subject: SourceLayout: namespace for Auth::Config X-Git-Tag: take06~27^2~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9f3d2b2e6db6b2d59048af733766573575ef68fc;p=thirdparty%2Fsquid.git SourceLayout: namespace for Auth::Config Also renames symbol Auth::authConfig to Auth::ConfigVector to clarify that it is a vector<> of Auth::Config objects or children. No logic changes. --- diff --git a/src/auth/Config.cc b/src/auth/Config.cc index 83704a2c03..c34ee0ed7d 100644 --- a/src/auth/Config.cc +++ b/src/auth/Config.cc @@ -36,21 +36,22 @@ #include "auth/Config.h" #include "auth/UserRequest.h" -Auth::authConfig Auth::TheConfig; +Auth::ConfigVector Auth::TheConfig; /** - * Get Auth User: Return a filled out auth_user structure for the given - * Proxy Auth (or Auth) header. It may be a cached Auth User or a new - * Unauthenticated structure. The structure is given an initial lock here. + * Get an User credentials object filled out for the given Proxy- or WWW-Authenticate header. + * Any decoding which needs to be done will be done. + * + * It may be a cached AuthUser or a new Unauthenticated object. * It may also be NULL reflecting that no user could be created. */ AuthUserRequest::Pointer -AuthConfig::CreateAuthUser(const char *proxy_auth) +Auth::Config::CreateAuthUser(const char *proxy_auth) { assert(proxy_auth != NULL); - debugs(29, 9, "AuthConfig::CreateAuthUser: header = '" << proxy_auth << "'"); + debugs(29, 9, HERE << "header = '" << proxy_auth << "'"); - AuthConfig *config = Find(proxy_auth); + Auth::Config *config = Find(proxy_auth); if (config == NULL || !config->active()) { debugs(29, (shutting_down?3:DBG_IMPORTANT), (shutting_down?"":"WARNING: ") << @@ -61,17 +62,17 @@ AuthConfig::CreateAuthUser(const char *proxy_auth) return config->decode(proxy_auth); } -AuthConfig * -AuthConfig::Find(const char *proxy_auth) +Auth::Config * +Auth::Config::Find(const char *proxy_auth) { - for (Auth::authConfig::iterator i = Auth::TheConfig.begin(); i != Auth::TheConfig.end(); ++i) + for (Auth::ConfigVector::iterator i = Auth::TheConfig.begin(); i != Auth::TheConfig.end(); ++i) if (strncasecmp(proxy_auth, (*i)->type(), strlen((*i)->type())) == 0) return *i; return NULL; } -/* Default behaviour is to expose nothing */ +/** Default behaviour is to expose nothing */ void -AuthConfig::registerWithCacheManager(void) +Auth::Config::registerWithCacheManager(void) {} diff --git a/src/auth/Config.h b/src/auth/Config.h index 8c80fa9512..100aed2a74 100644 --- a/src/auth/Config.h +++ b/src/auth/Config.h @@ -29,8 +29,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. * */ -#ifndef SQUID_AUTHCONFIG_H -#define SQUID_AUTHCONFIG_H +#ifndef SQUID_AUTH_CONFIG_H +#define SQUID_AUTH_CONFIG_H #if USE_AUTH @@ -45,28 +45,30 @@ class wordlist; /* for http_hdr_type parameters-by-value */ #include "HttpHeader.h" +namespace Auth +{ /** - \ingroup AuthAPI - \par + * \ingroup AuthAPI + * \par * I am the configuration for an auth scheme. * Currently each scheme has only one instance of me, * but this may change. - \par + * \par * This class is treated like a ref counted class. * If the children ever stop being singletons, implement the * ref counting... */ -class AuthConfig +class Config { public: static AuthUserRequest::Pointer CreateAuthUser(const char *proxy_auth); - static AuthConfig *Find(const char *proxy_auth); - AuthConfig() : authenticateChildren(20), authenticateProgram(NULL) {} + static Config *Find(const char *proxy_auth); + Config() : authenticateChildren(20), authenticateProgram(NULL) {} - virtual ~AuthConfig() {} + virtual ~Config() {} /** * Used by squid to determine whether the auth module has successfully initialised itself with the current configuration. @@ -117,16 +119,20 @@ public: * Responsible for writing to the StoreEntry the configuration parameters that a user * would put in a config file to recreate the running configuration. */ - virtual void dump(StoreEntry *, const char *, AuthConfig *) = 0; + virtual void dump(StoreEntry *, const char *, Config *) = 0; /** add headers as needed when challenging for auth */ virtual void fixHeader(AuthUserRequest::Pointer, HttpReply *, http_hdr_type, HttpRequest *) = 0; + /** prepare to handle requests */ - virtual void init(AuthConfig *) = 0; + virtual void init(Config *) = 0; + /** expose any/all statistics to a CacheManager */ virtual void registerWithCacheManager(void); + /** parse config options */ - virtual void parse(AuthConfig *, int, char *) = 0; + virtual void parse(Config *, int, char *) = 0; + /** the http string id */ virtual const char * type() const = 0; @@ -135,12 +141,9 @@ public: wordlist *authenticateProgram; ///< Helper program to run, includes all parameters }; -namespace Auth -{ - -typedef Vector authConfig; +typedef Vector ConfigVector; -extern authConfig TheConfig; +extern ConfigVector TheConfig; } // namespace Auth diff --git a/src/auth/Gadgets.cc b/src/auth/Gadgets.cc index 63781bd8f9..01fc8446ec 100644 --- a/src/auth/Gadgets.cc +++ b/src/auth/Gadgets.cc @@ -56,7 +56,7 @@ authenticateActiveSchemeCount(void) { int rv = 0; - for (Auth::authConfig::iterator i = Auth::TheConfig.begin(); i != Auth::TheConfig.end(); ++i) + for (Auth::ConfigVector::iterator i = Auth::TheConfig.begin(); i != Auth::TheConfig.end(); ++i) if ((*i)->configured()) ++rv; @@ -76,16 +76,16 @@ authenticateSchemeCount(void) } static void -authenticateRegisterWithCacheManager(Auth::authConfig * config) +authenticateRegisterWithCacheManager(Auth::ConfigVector * config) { - for (Auth::authConfig::iterator i = config->begin(); i != config->end(); ++i) { - AuthConfig *scheme = *i; + for (Auth::ConfigVector::iterator i = config->begin(); i != config->end(); ++i) { + Auth::Config *scheme = *i; scheme->registerWithCacheManager(); } } void -authenticateInit(Auth::authConfig * config) +authenticateInit(Auth::ConfigVector * config) { /* Do this first to clear memory and remove dead state on a reconfigure */ if (proxy_auth_username_cache) @@ -95,8 +95,8 @@ authenticateInit(Auth::authConfig * config) if (!config) return; - for (Auth::authConfig::iterator i = config->begin(); i != config->end(); ++i) { - AuthConfig *schemeCfg = *i; + for (Auth::ConfigVector::iterator i = config->begin(); i != config->end(); ++i) { + Auth::Config *schemeCfg = *i; if (schemeCfg->configured()) schemeCfg->init(schemeCfg); @@ -111,7 +111,7 @@ authenticateInit(Auth::authConfig * config) void authenticateRotate(void) { - for (Auth::authConfig::iterator i = Auth::TheConfig.begin(); i != Auth::TheConfig.end(); ++i) + for (Auth::ConfigVector::iterator i = Auth::TheConfig.begin(); i != Auth::TheConfig.end(); ++i) if ((*i)->configured()) (*i)->rotateHelpers(); } diff --git a/src/auth/Gadgets.h b/src/auth/Gadgets.h index 72cecfa41c..1a053d10c2 100644 --- a/src/auth/Gadgets.h +++ b/src/auth/Gadgets.h @@ -86,7 +86,7 @@ class StoreEntry; typedef void AUTHSSTATS(StoreEntry *); /// \ingroup AuthAPI -extern void authenticateInit(Auth::authConfig *); +extern void authenticateInit(Auth::ConfigVector *); /** \ingroup AuthAPI * Remove all idle authentication state. Intended for use by reconfigure. diff --git a/src/auth/Scheme.h b/src/auth/Scheme.h index d901293a71..4f68e46b5b 100644 --- a/src/auth/Scheme.h +++ b/src/auth/Scheme.h @@ -38,8 +38,6 @@ #include "Array.h" #include "RefCount.h" -class AuthConfig; - /** \defgroup AuthSchemeAPI Authentication Scheme API \ingroup AuthAPI @@ -48,6 +46,8 @@ class AuthConfig; namespace Auth { +class Config; + /** * \ingroup AuthAPI * \ingroup AuthSchemeAPI @@ -56,8 +56,7 @@ namespace Auth * store the scheme metadata. * \par * Should we need multiple configs of a single scheme, - * a new class AuthConfiguration should be made, and the - * config specific calls on Auth::Scheme moved to it. + * a new class should be made, and the config specific calls on Auth::Scheme moved to it. */ class Scheme : public RefCountable { @@ -90,7 +89,7 @@ public: /* per scheme methods */ virtual char const *type() const = 0; virtual void shutdownCleanup() = 0; - virtual AuthConfig *createConfig() = 0; + virtual Auth::Config *createConfig() = 0; // Not implemented Scheme(Scheme const &); diff --git a/src/auth/User.cc b/src/auth/User.cc index 54e2446b5d..801f19adbd 100644 --- a/src/auth/User.cc +++ b/src/auth/User.cc @@ -56,7 +56,7 @@ time_t AuthUser::last_discard = 0; const char *CredentialsState_str[] = { "Unchecked", "Ok", "Pending", "Handshake", "Failed" }; -AuthUser::AuthUser(AuthConfig *aConfig) : +AuthUser::AuthUser(Auth::Config *aConfig) : auth_type(Auth::AUTH_UNKNOWN), config(aConfig), ipcount(0), diff --git a/src/auth/User.h b/src/auth/User.h index 81c0f73684..7dd0e45659 100644 --- a/src/auth/User.h +++ b/src/auth/User.h @@ -41,10 +41,14 @@ #include "ip/Address.h" #include "RefCount.h" -class AuthConfig; class AuthUserHashPointer; class StoreEntry; +namespace Auth +{ +class Config; +} + /** * \ingroup AuthAPI * This is the main user related structure. It stores user-related data, @@ -65,7 +69,7 @@ public: /** \deprecated this determines what scheme owns the user data. */ Auth::Type auth_type; /** the config for this user */ - AuthConfig *config; + Auth::Config *config; /** we may have many proxy-authenticate strings that decode to the same user */ dlink_list proxy_auth_list; dlink_list proxy_match_cache; @@ -110,7 +114,7 @@ private: CredentialsState credentials_state; protected: - AuthUser(AuthConfig *); + AuthUser(Auth::Config *); private: /** diff --git a/src/auth/UserRequest.cc b/src/auth/UserRequest.cc index da2be768fc..59a1fb6fd1 100644 --- a/src/auth/UserRequest.cc +++ b/src/auth/UserRequest.cc @@ -346,7 +346,7 @@ AuthUserRequest::authenticate(AuthUserRequest::Pointer * auth_user_request, http debugs(29, 9, HERE << "This is a new checklist test on FD:" << (conn != NULL ? conn->fd : -1) ); if (proxy_auth && request->auth_user_request == NULL && conn != NULL && conn->auth_user_request != NULL) { - AuthConfig * scheme = AuthConfig::Find(proxy_auth); + Auth::Config * scheme = Auth::Config::Find(proxy_auth); if (conn->auth_user_request->user() == NULL || conn->auth_user_request->user()->config != scheme) { debugs(29, 1, "WARNING: Unexpected change of authentication scheme from '" << @@ -362,7 +362,7 @@ AuthUserRequest::authenticate(AuthUserRequest::Pointer * auth_user_request, http /* beginning of a new request check */ debugs(29, 4, HERE << "No connection authentication type"); - *auth_user_request = AuthConfig::CreateAuthUser(proxy_auth); + *auth_user_request = Auth::Config::CreateAuthUser(proxy_auth); if (*auth_user_request == NULL) return AUTH_ACL_CHALLENGE; else if (!(*auth_user_request)->valid()) { @@ -526,8 +526,8 @@ AuthUserRequest::addReplyAuthHeader(HttpReply * rep, AuthUserRequest::Pointer au else { /* call each configured & running authscheme */ - for (Auth::authConfig::iterator i = Auth::TheConfig.begin(); i != Auth::TheConfig.end(); ++i) { - AuthConfig *scheme = *i; + for (Auth::ConfigVector::iterator i = Auth::TheConfig.begin(); i != Auth::TheConfig.end(); ++i) { + Auth::Config *scheme = *i; if (scheme->active()) scheme->fixHeader(NULL, rep, type, request); diff --git a/src/auth/basic/Scheme.cc b/src/auth/basic/Scheme.cc index 420ebf12a4..7043b7da8b 100644 --- a/src/auth/basic/Scheme.cc +++ b/src/auth/basic/Scheme.cc @@ -34,7 +34,7 @@ #include "auth/basic/Scheme.h" #include "helper.h" -/* for AuthConfig */ +/* for Auth::Config */ #include "auth/basic/auth_basic.h" Auth::Scheme::Pointer Auth::Basic::Scheme::_instance = NULL; @@ -65,9 +65,9 @@ Auth::Basic::Scheme::shutdownCleanup() debugs(29, DBG_CRITICAL, "Shutdown: Basic authentication."); } -AuthConfig * +Auth::Config * Auth::Basic::Scheme::createConfig() { AuthBasicConfig *newCfg = new AuthBasicConfig; - return dynamic_cast(newCfg); + return dynamic_cast(newCfg); } diff --git a/src/auth/basic/Scheme.h b/src/auth/basic/Scheme.h index 863f88dfff..496e90b4b8 100644 --- a/src/auth/basic/Scheme.h +++ b/src/auth/basic/Scheme.h @@ -54,7 +54,7 @@ public: /* per scheme */ virtual char const *type() const; virtual void shutdownCleanup(); - virtual AuthConfig *createConfig(); + virtual Auth::Config *createConfig(); /* Not implemented */ Scheme(Scheme const &); Scheme &operator=(Scheme const &); diff --git a/src/auth/basic/UserRequest.cc b/src/auth/basic/UserRequest.cc index 622db5aa4c..dce899a11c 100644 --- a/src/auth/basic/UserRequest.cc +++ b/src/auth/basic/UserRequest.cc @@ -26,7 +26,7 @@ AuthBasicUserRequest::authenticate(HttpRequest * request, ConnStateData * conn, return; /* are we about to recheck the credentials externally? */ - if ((user()->expiretime + static_cast(AuthConfig::Find("basic"))->credentialsTTL) <= squid_curtime) { + if ((user()->expiretime + static_cast(Auth::Config::Find("basic"))->credentialsTTL) <= squid_curtime) { debugs(29, 4, HERE << "credentials expired - rechecking"); return; } @@ -55,7 +55,7 @@ AuthBasicUserRequest::module_direction() return -1; case AuthUser::Ok: - if (user()->expiretime + static_cast(AuthConfig::Find("basic"))->credentialsTTL <= squid_curtime) + if (user()->expiretime + static_cast(Auth::Config::Find("basic"))->credentialsTTL <= squid_curtime) return -1; return 0; @@ -76,7 +76,7 @@ AuthBasicUserRequest::module_start(RH * handler, void *data) assert(basic_auth != NULL); debugs(29, 9, HERE << "'" << basic_auth->username() << ":" << basic_auth->passwd << "'"); - if (static_cast(AuthConfig::Find("basic"))->authenticateProgram == NULL) { + if (static_cast(Auth::Config::Find("basic"))->authenticateProgram == NULL) { debugs(29, DBG_CRITICAL, "ERROR: No Basic authentication program configured."); handler(data, NULL); return; diff --git a/src/auth/basic/auth_basic.cc b/src/auth/basic/auth_basic.cc index 8503eadd8a..661a5b0cc1 100644 --- a/src/auth/basic/auth_basic.cc +++ b/src/auth/basic/auth_basic.cc @@ -219,7 +219,7 @@ authenticateBasicHandleReply(void *data, char *reply) } void -AuthBasicConfig::dump(StoreEntry * entry, const char *name, AuthConfig * scheme) +AuthBasicConfig::dump(StoreEntry * entry, const char *name, Auth::Config * scheme) { wordlist *list = authenticateProgram; storeAppendPrintf(entry, "%s %s", name, "basic"); @@ -251,7 +251,7 @@ AuthBasicConfig::~AuthBasicConfig() } void -AuthBasicConfig::parse(AuthConfig * scheme, int n_configured, char *param_str) +AuthBasicConfig::parse(Auth::Config * scheme, int n_configured, char *param_str) { if (strcasecmp(param_str, "program") == 0) { if (authenticateProgram) @@ -300,7 +300,7 @@ authBasicAuthUserFindUsername(const char *username) return NULL; } -BasicUser::BasicUser(AuthConfig *aConfig) : +BasicUser::BasicUser(Auth::Config *aConfig) : AuthUser(aConfig), passwd(NULL), auth_queue(NULL), @@ -466,7 +466,7 @@ AuthBasicConfig::decode(char const *proxy_auth) /** Initialize helpers and the like for this auth scheme. Called AFTER parsing the * config file */ void -AuthBasicConfig::init(AuthConfig * schemeCfg) +AuthBasicConfig::init(Auth::Config * schemeCfg) { if (authenticateProgram) { authbasic_initialised = 1; diff --git a/src/auth/basic/auth_basic.h b/src/auth/basic/auth_basic.h index b97e62e2b8..e2891320be 100644 --- a/src/auth/basic/auth_basic.h +++ b/src/auth/basic/auth_basic.h @@ -31,7 +31,7 @@ class BasicUser : public AuthUser public: MEMPROXY_CLASS(BasicUser); - BasicUser(AuthConfig *); + BasicUser(Auth::Config *); ~BasicUser(); bool authenticated() const; void queueRequest(AuthUserRequest::Pointer auth_user_request, RH * handler, void *data); @@ -55,7 +55,7 @@ MEMPROXY_CLASS_INLINE(BasicUser); /* configuration runtime data */ -class AuthBasicConfig : public AuthConfig +class AuthBasicConfig : public Auth::Config { public: @@ -66,10 +66,10 @@ public: virtual AuthUserRequest::Pointer decode(char const *proxy_auth); virtual void done(); virtual void rotateHelpers(); - virtual void dump(StoreEntry *, const char *, AuthConfig *); + virtual void dump(StoreEntry *, const char *, Auth::Config *); virtual void fixHeader(AuthUserRequest::Pointer, HttpReply *, http_hdr_type, HttpRequest *); - virtual void init(AuthConfig *); - virtual void parse(AuthConfig *, int, char *); + virtual void init(Auth::Config *); + virtual void parse(Auth::Config *, int, char *); void decode(char const *httpAuthHeader, AuthUserRequest::Pointer); virtual void registerWithCacheManager(void); virtual const char * type() const; diff --git a/src/auth/digest/Scheme.cc b/src/auth/digest/Scheme.cc index 3cbf2f8127..87ed0b23c1 100644 --- a/src/auth/digest/Scheme.cc +++ b/src/auth/digest/Scheme.cc @@ -65,11 +65,11 @@ Auth::Digest::Scheme::shutdownCleanup() debugs(29, DBG_CRITICAL, "Shutdown: Digest authentication."); } -AuthConfig * +Auth::Config * Auth::Digest::Scheme::createConfig() { AuthDigestConfig *digestCfg = new AuthDigestConfig; - return dynamic_cast(digestCfg); + return dynamic_cast(digestCfg); } void diff --git a/src/auth/digest/Scheme.h b/src/auth/digest/Scheme.h index 1b361a9721..f7552a3800 100644 --- a/src/auth/digest/Scheme.h +++ b/src/auth/digest/Scheme.h @@ -54,7 +54,7 @@ public: /* per scheme */ virtual char const *type () const; virtual void shutdownCleanup(); - virtual AuthConfig *createConfig(); + virtual Auth::Config *createConfig(); /* Not implemented */ Scheme(Scheme const &); diff --git a/src/auth/digest/UserRequest.cc b/src/auth/digest/UserRequest.cc index 63b0b84c1f..3b84b0878b 100644 --- a/src/auth/digest/UserRequest.cc +++ b/src/auth/digest/UserRequest.cc @@ -102,7 +102,7 @@ AuthDigestUserRequest::authenticate(HttpRequest * request, ConnStateData * conn, return; } - if (static_cast(AuthConfig::Find("digest"))->PostWorkaround && request->method != METHOD_GET) { + if (static_cast(Auth::Config::Find("digest"))->PostWorkaround && request->method != METHOD_GET) { /* Ugly workaround for certain very broken browsers using the * wrong method to calculate the request-digest on POST request. * This should be deleted once Digest authentication becomes more @@ -209,7 +209,7 @@ AuthDigestUserRequest::addHeader(HttpReply * rep, int accel) return; #endif - if ((static_cast(AuthConfig::Find("digest"))->authenticateProgram) && authDigestNonceLastRequest(nonce)) { + if ((static_cast(Auth::Config::Find("digest"))->authenticateProgram) && authDigestNonceLastRequest(nonce)) { flags.authinfo_sent = 1; debugs(29, 9, "authDigestAddHead: Sending type:" << type << " header: 'nextnonce=\"" << authenticateDigestNonceNonceb64(nonce) << "\""); httpHeaderPutStrf(&rep->header, type, "nextnonce=\"%s\"", authenticateDigestNonceNonceb64(nonce)); @@ -254,7 +254,7 @@ AuthDigestUserRequest::module_start(RH * handler, void *data) assert(user() != NULL && user()->auth_type == Auth::AUTH_DIGEST); debugs(29, 9, "authenticateStart: '\"" << user()->username() << "\":\"" << realm << "\"'"); - if (static_cast(AuthConfig::Find("digest"))->authenticateProgram == NULL) { + if (static_cast(Auth::Config::Find("digest"))->authenticateProgram == NULL) { debugs(29, DBG_CRITICAL, "ERROR: No Digest authentication program configured."); handler(data, NULL); return; @@ -264,7 +264,7 @@ AuthDigestUserRequest::module_start(RH * handler, void *data) r->handler = handler; r->data = cbdataReference(data); r->auth_user_request = static_cast(this); - if (static_cast(AuthConfig::Find("digest"))->utf8) { + if (static_cast(Auth::Config::Find("digest"))->utf8) { char userstr[1024]; latin1_to_utf8(userstr, sizeof(userstr), user()->username()); snprintf(buf, 8192, "\"%s\":\"%s\"\n", userstr, realm); diff --git a/src/auth/digest/auth_digest.cc b/src/auth/digest/auth_digest.cc index 013680c603..792360980a 100644 --- a/src/auth/digest/auth_digest.cc +++ b/src/auth/digest/auth_digest.cc @@ -225,7 +225,7 @@ authenticateDigestNonceSetup(void) if (!digest_nonce_cache) { digest_nonce_cache = hash_create((HASHCMP *) strcmp, 7921, hash_string); assert(digest_nonce_cache); - eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(AuthConfig::Find("digest"))->nonceGCInterval, 1); + eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); } } @@ -288,8 +288,8 @@ authenticateDigestNonceCacheCleanup(void *data) debugs(29, 3, "authenticateDigestNonceCacheCleanup: Finished cleaning the nonce cache."); - if (static_cast(AuthConfig::Find("digest"))->active()) - eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(AuthConfig::Find("digest"))->nonceGCInterval, 1); + if (static_cast(Auth::Config::Find("digest"))->active()) + eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); } static void @@ -376,12 +376,12 @@ authDigestNonceIsValid(digest_nonce_h * nonce, char nc[9]) } /* is the nonce-count ok ? */ - if (!static_cast(AuthConfig::Find("digest"))->CheckNonceCount) { + if (!static_cast(Auth::Config::Find("digest"))->CheckNonceCount) { nonce->nc++; return -1; /* forced OK by configuration */ } - if ((static_cast(AuthConfig::Find("digest"))->NonceStrictness && intnc != nonce->nc + 1) || + if ((static_cast(Auth::Config::Find("digest"))->NonceStrictness && intnc != nonce->nc + 1) || intnc < nonce->nc + 1) { debugs(29, 4, "authDigestNonceIsValid: Nonce count doesn't match"); nonce->flags.valid = 0; @@ -406,10 +406,10 @@ authDigestNonceIsStale(digest_nonce_h * nonce) return -1; /* has it's max duration expired? */ - if (nonce->noncedata.creationtime + static_cast(AuthConfig::Find("digest"))->noncemaxduration < current_time.tv_sec) { + if (nonce->noncedata.creationtime + static_cast(Auth::Config::Find("digest"))->noncemaxduration < current_time.tv_sec) { debugs(29, 4, "authDigestNonceIsStale: Nonce is too old. " << nonce->noncedata.creationtime << " " << - static_cast(AuthConfig::Find("digest"))->noncemaxduration << " " << + static_cast(Auth::Config::Find("digest"))->noncemaxduration << " " << current_time.tv_sec); nonce->flags.valid = 0; @@ -422,7 +422,7 @@ authDigestNonceIsStale(digest_nonce_h * nonce) return -1; } - if (nonce->nc > static_cast(AuthConfig::Find("digest"))->noncemaxuses) { + if (nonce->nc > static_cast(Auth::Config::Find("digest"))->noncemaxuses) { debugs(29, 4, "authDigestNoncelastRequest: Nonce count over user limit"); nonce->flags.valid = 0; return -1; @@ -447,7 +447,7 @@ authDigestNonceLastRequest(digest_nonce_h * nonce) return -1; } - if (nonce->nc >= static_cast(AuthConfig::Find("digest"))->noncemaxuses - 1) { + if (nonce->nc >= static_cast(Auth::Config::Find("digest"))->noncemaxuses - 1) { debugs(29, 4, "authDigestNoncelastRequest: Nonce count about to hit user limit"); return -1; } @@ -504,7 +504,7 @@ AuthDigestConfig::rotateHelpers() } void -AuthDigestConfig::dump(StoreEntry * entry, const char *name, AuthConfig * scheme) +AuthDigestConfig::dump(StoreEntry * entry, const char *name, Auth::Config * scheme) { wordlist *list = authenticateProgram; debugs(29, 9, "authDigestCfgDump: Dumping configuration"); @@ -602,7 +602,7 @@ DigestUser::ttl() const if (latest_nonce == -1) return min(-1, global_ttl); - int32_t nonce_ttl = latest_nonce - current_time.tv_sec + static_cast(AuthConfig::Find("digest"))->noncemaxduration; + int32_t nonce_ttl = latest_nonce - current_time.tv_sec + static_cast(Auth::Config::Find("digest"))->noncemaxduration; return min(nonce_ttl, global_ttl); } @@ -610,7 +610,7 @@ DigestUser::ttl() const /* Initialize helpers and the like for this auth scheme. Called AFTER parsing the * config file */ void -AuthDigestConfig::init(AuthConfig * scheme) +AuthDigestConfig::init(Auth::Config * scheme) { if (authenticateProgram) { DigestFieldsInfo = httpHeaderBuildFieldsInfo(DigestAttrs, DIGEST_ENUM_END); @@ -682,7 +682,7 @@ AuthDigestConfig::AuthDigestConfig() } void -AuthDigestConfig::parse(AuthConfig * scheme, int n_configured, char *param_str) +AuthDigestConfig::parse(Auth::Config * scheme, int n_configured, char *param_str) { if (strcasecmp(param_str, "program") == 0) { if (authenticateProgram) @@ -810,7 +810,7 @@ authDigestLogUsername(char *username, AuthUserRequest::Pointer auth_user_request /* log the username */ debugs(29, 9, "authDigestLogUsername: Creating new user for logging '" << username << "'"); - AuthUser::Pointer digest_user = new DigestUser(static_cast(AuthConfig::Find("digest"))); + AuthUser::Pointer digest_user = new DigestUser(static_cast(Auth::Config::Find("digest"))); /* save the credentials */ digest_user->username(username); /* set the auth_user type */ @@ -1110,5 +1110,5 @@ AuthDigestConfig::decode(char const *proxy_auth) return digest_request; } -DigestUser::DigestUser(AuthConfig *aConfig) : AuthUser(aConfig), HA1created (0) +DigestUser::DigestUser(Auth::Config *aConfig) : AuthUser(aConfig), HA1created (0) {} diff --git a/src/auth/digest/auth_digest.h b/src/auth/digest/auth_digest.h index 5545345db0..09942abba4 100644 --- a/src/auth/digest/auth_digest.h +++ b/src/auth/digest/auth_digest.h @@ -26,7 +26,7 @@ class DigestUser : public AuthUser public: MEMPROXY_CLASS(DigestUser); - DigestUser(AuthConfig *); + DigestUser(Auth::Config *); ~DigestUser(); int authenticated() const; @@ -78,7 +78,7 @@ extern void authenticateDigestNonceShutdown(void); /* configuration runtime data */ -class AuthDigestConfig : public AuthConfig +class AuthDigestConfig : public Auth::Config { public: @@ -88,12 +88,14 @@ public: virtual AuthUserRequest::Pointer decode(char const *proxy_auth); virtual void done(); virtual void rotateHelpers(); - virtual void dump(StoreEntry *, const char *, AuthConfig *); + virtual void dump(StoreEntry *, const char *, Auth::Config *); virtual void fixHeader(AuthUserRequest::Pointer, HttpReply *, http_hdr_type, HttpRequest *); - virtual void init(AuthConfig *); - virtual void parse(AuthConfig *, int, char *); + virtual void init(Auth::Config *); + virtual void parse(Auth::Config *, int, char *); virtual void registerWithCacheManager(void); virtual const char * type() const; + +public: char *digestAuthRealm; time_t nonceGCInterval; time_t noncemaxduration; diff --git a/src/auth/negotiate/Scheme.cc b/src/auth/negotiate/Scheme.cc index d6d77d9e5a..7ae08b63b9 100644 --- a/src/auth/negotiate/Scheme.cc +++ b/src/auth/negotiate/Scheme.cc @@ -62,9 +62,9 @@ Auth::Negotiate::Scheme::shutdownCleanup() debugs(29, DBG_CRITICAL, "Shutdown: Negotiate authentication."); } -AuthConfig * +Auth::Config * Auth::Negotiate::Scheme::createConfig() { AuthNegotiateConfig *negotiateCfg = new AuthNegotiateConfig; - return dynamic_cast(negotiateCfg); + return dynamic_cast(negotiateCfg); } diff --git a/src/auth/negotiate/Scheme.h b/src/auth/negotiate/Scheme.h index b65cb5748f..65936db7ce 100644 --- a/src/auth/negotiate/Scheme.h +++ b/src/auth/negotiate/Scheme.h @@ -54,7 +54,7 @@ public: /* per scheme */ virtual char const *type() const; virtual void shutdownCleanup(); - virtual AuthConfig *createConfig(); + virtual Auth::Config *createConfig(); /* Not implemented */ Scheme (Scheme const &); diff --git a/src/auth/negotiate/UserRequest.cc b/src/auth/negotiate/UserRequest.cc index a7177e9c75..cec4c2ae96 100644 --- a/src/auth/negotiate/UserRequest.cc +++ b/src/auth/negotiate/UserRequest.cc @@ -121,7 +121,7 @@ AuthNegotiateUserRequest::module_start(RH * handler, void *data) debugs(29, 8, HERE << "auth state is '" << user()->credentials() << "'"); - if (static_cast(AuthConfig::Find("negotiate"))->authenticateProgram == NULL) { + if (static_cast(Auth::Config::Find("negotiate"))->authenticateProgram == NULL) { debugs(29, DBG_CRITICAL, "ERROR: No Negotiate authentication program configured."); handler(data, NULL); return; diff --git a/src/auth/negotiate/auth_negotiate.cc b/src/auth/negotiate/auth_negotiate.cc index f082e8158a..6f6358943d 100644 --- a/src/auth/negotiate/auth_negotiate.cc +++ b/src/auth/negotiate/auth_negotiate.cc @@ -110,7 +110,7 @@ AuthNegotiateConfig::done() } void -AuthNegotiateConfig::dump(StoreEntry * entry, const char *name, AuthConfig * scheme) +AuthNegotiateConfig::dump(StoreEntry * entry, const char *name, Auth::Config * scheme) { wordlist *list = authenticateProgram; storeAppendPrintf(entry, "%s %s", name, "negotiate"); @@ -130,7 +130,7 @@ AuthNegotiateConfig::AuthNegotiateConfig() : keep_alive(1) { } void -AuthNegotiateConfig::parse(AuthConfig * scheme, int n_configured, char *param_str) +AuthNegotiateConfig::parse(Auth::Config * scheme, int n_configured, char *param_str) { if (strcasecmp(param_str, "program") == 0) { if (authenticateProgram) @@ -159,7 +159,7 @@ AuthNegotiateConfig::type() const * Called AFTER parsing the config file */ void -AuthNegotiateConfig::init(AuthConfig * scheme) +AuthNegotiateConfig::init(Auth::Config * scheme) { if (authenticateProgram) { @@ -319,7 +319,7 @@ AuthNegotiateConfig::decode(char const *proxy_auth) return auth_user_request; } -NegotiateUser::NegotiateUser(AuthConfig *aConfig) : AuthUser (aConfig) +NegotiateUser::NegotiateUser(Auth::Config *aConfig) : AuthUser(aConfig) { proxy_auth_list.head = proxy_auth_list.tail = NULL; } diff --git a/src/auth/negotiate/auth_negotiate.h b/src/auth/negotiate/auth_negotiate.h index 25c220f4be..11ffd93ed5 100644 --- a/src/auth/negotiate/auth_negotiate.h +++ b/src/auth/negotiate/auth_negotiate.h @@ -27,7 +27,7 @@ class NegotiateUser : public AuthUser public: MEMPROXY_CLASS(NegotiateUser); - NegotiateUser(AuthConfig *); + NegotiateUser(Auth::Config *); ~NegotiateUser(); virtual int32_t ttl() const; @@ -41,7 +41,7 @@ extern statefulhelper *negotiateauthenticators; /* configuration runtime data */ /// \ingroup AuthNegotiateAPI -class AuthNegotiateConfig : public AuthConfig +class AuthNegotiateConfig : public Auth::Config { public: @@ -51,10 +51,10 @@ public: virtual AuthUserRequest::Pointer decode(char const *proxy_auth); virtual void done(); virtual void rotateHelpers(); - virtual void dump(StoreEntry *, const char *, AuthConfig *); + virtual void dump(StoreEntry *, const char *, Auth::Config *); virtual void fixHeader(AuthUserRequest::Pointer, HttpReply *, http_hdr_type, HttpRequest *); - virtual void init(AuthConfig *); - virtual void parse(AuthConfig *, int, char *); + virtual void init(Auth::Config *); + virtual void parse(Auth::Config *, int, char *); virtual void registerWithCacheManager(void); virtual const char * type() const; int keep_alive; diff --git a/src/auth/ntlm/Scheme.cc b/src/auth/ntlm/Scheme.cc index fa25c9c445..8abce30fd3 100644 --- a/src/auth/ntlm/Scheme.cc +++ b/src/auth/ntlm/Scheme.cc @@ -63,9 +63,9 @@ Auth::Ntlm::Scheme::shutdownCleanup() debugs(29, DBG_CRITICAL, "Shutdown: NTLM authentication."); } -AuthConfig * +Auth::Config * Auth::Ntlm::Scheme::createConfig() { auth_ntlm_config *ntlmCfg = new auth_ntlm_config; - return dynamic_cast(ntlmCfg); + return dynamic_cast(ntlmCfg); } diff --git a/src/auth/ntlm/Scheme.h b/src/auth/ntlm/Scheme.h index cdbf794fc9..9e8a3a1831 100644 --- a/src/auth/ntlm/Scheme.h +++ b/src/auth/ntlm/Scheme.h @@ -54,7 +54,7 @@ public: /* per scheme */ virtual char const *type() const; virtual void shutdownCleanup(); - virtual AuthConfig *createConfig(); + virtual Auth::Config *createConfig(); /* Not implemented */ Scheme (Scheme const &); diff --git a/src/auth/ntlm/UserRequest.cc b/src/auth/ntlm/UserRequest.cc index f655831852..89e91b5493 100644 --- a/src/auth/ntlm/UserRequest.cc +++ b/src/auth/ntlm/UserRequest.cc @@ -79,7 +79,7 @@ AuthNTLMUserRequest::module_start(RH * handler, void *data) debugs(29, 8, HERE << "credentials state is '" << user()->credentials() << "'"); - if (static_cast(AuthConfig::Find("ntlm"))->authenticateProgram == NULL) { + if (static_cast(Auth::Config::Find("ntlm"))->authenticateProgram == NULL) { debugs(29, DBG_CRITICAL, "ERROR: NTLM Start: no NTLM program configured."); handler(data, NULL); return; diff --git a/src/auth/ntlm/auth_ntlm.cc b/src/auth/ntlm/auth_ntlm.cc index 9e3e8ebf6e..00a9047437 100644 --- a/src/auth/ntlm/auth_ntlm.cc +++ b/src/auth/ntlm/auth_ntlm.cc @@ -99,7 +99,7 @@ AuthNTLMConfig::done() } void -AuthNTLMConfig::dump(StoreEntry * entry, const char *name, AuthConfig * scheme) +AuthNTLMConfig::dump(StoreEntry * entry, const char *name, Auth::Config * scheme) { wordlist *list = authenticateProgram; storeAppendPrintf(entry, "%s %s", name, "ntlm"); @@ -119,7 +119,7 @@ AuthNTLMConfig::AuthNTLMConfig() : keep_alive(1) { } void -AuthNTLMConfig::parse(AuthConfig * scheme, int n_configured, char *param_str) +AuthNTLMConfig::parse(Auth::Config * scheme, int n_configured, char *param_str) { if (strcasecmp(param_str, "program") == 0) { if (authenticateProgram) @@ -146,7 +146,7 @@ AuthNTLMConfig::type() const /* Initialize helpers and the like for this auth scheme. Called AFTER parsing the * config file */ void -AuthNTLMConfig::init(AuthConfig * scheme) +AuthNTLMConfig::init(Auth::Config * scheme) { if (authenticateProgram) { @@ -282,7 +282,7 @@ authenticateNTLMStats(StoreEntry * sentry) AuthUserRequest::Pointer AuthNTLMConfig::decode(char const *proxy_auth) { - NTLMUser *newUser = new NTLMUser(AuthConfig::Find("ntlm")); + NTLMUser *newUser = new NTLMUser(Auth::Config::Find("ntlm")); AuthUserRequest::Pointer auth_user_request = new AuthNTLMUserRequest(); assert(auth_user_request->user() == NULL); @@ -294,7 +294,7 @@ AuthNTLMConfig::decode(char const *proxy_auth) return auth_user_request; } -NTLMUser::NTLMUser (AuthConfig *aConfig) : AuthUser (aConfig) +NTLMUser::NTLMUser(Auth::Config *aConfig) : AuthUser(aConfig) { proxy_auth_list.head = proxy_auth_list.tail = NULL; } diff --git a/src/auth/ntlm/auth_ntlm.h b/src/auth/ntlm/auth_ntlm.h index ec137fb6da..a4dee84f44 100644 --- a/src/auth/ntlm/auth_ntlm.h +++ b/src/auth/ntlm/auth_ntlm.h @@ -18,7 +18,7 @@ class NTLMUser : public AuthUser public: MEMPROXY_CLASS(NTLMUser); - NTLMUser(AuthConfig *); + NTLMUser(Auth::Config *); ~NTLMUser(); virtual int32_t ttl() const; @@ -32,7 +32,7 @@ typedef class NTLMUser ntlm_user_t; /* configuration runtime data */ -class AuthNTLMConfig : public AuthConfig +class AuthNTLMConfig : public Auth::Config { public: @@ -42,10 +42,10 @@ public: virtual AuthUserRequest::Pointer decode(char const *proxy_auth); virtual void done(); virtual void rotateHelpers(); - virtual void dump(StoreEntry *, const char *, AuthConfig *); + virtual void dump(StoreEntry *, const char *, Auth::Config *); virtual void fixHeader(AuthUserRequest::Pointer, HttpReply *, http_hdr_type, HttpRequest *); - virtual void init(AuthConfig *); - virtual void parse(AuthConfig *, int, char *); + virtual void init(Auth::Config *); + virtual void parse(Auth::Config *, int, char *); virtual void registerWithCacheManager(void); virtual const char * type() const; int keep_alive; diff --git a/src/cache_cf.cc b/src/cache_cf.cc index dae538b9f6..201a768afc 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -927,8 +927,8 @@ configDoConfigure(void) * state will be preserved. */ if (Config.onoff.pipeline_prefetch) { - AuthConfig *nego = AuthConfig::Find("Negotiate"); - AuthConfig *ntlm = AuthConfig::Find("NTLM"); + Auth::Config *nego = Auth::Config::Find("Negotiate"); + Auth::Config *ntlm = Auth::Config::Find("NTLM"); if ((nego && nego->active()) || (ntlm && ntlm->active())) { debugs(3, DBG_IMPORTANT, "WARNING: pipeline_prefetch breaks NTLM and Negotiate authentication. Forced OFF."); Config.onoff.pipeline_prefetch = 0; @@ -1835,7 +1835,7 @@ check_null_string(char *s) #if USE_AUTH static void -parse_authparam(Auth::authConfig * config) +parse_authparam(Auth::ConfigVector * config) { char *type_str; char *param_str; @@ -1847,7 +1847,7 @@ parse_authparam(Auth::authConfig * config) self_destruct(); /* find a configuration for the scheme in the currently parsed configs... */ - AuthConfig *schemeCfg = AuthConfig::Find(type_str); + Auth::Config *schemeCfg = Auth::Config::Find(type_str); if (schemeCfg == NULL) { /* Create a configuration based on the scheme info */ @@ -1859,7 +1859,7 @@ parse_authparam(Auth::authConfig * config) } config->push_back(theScheme->createConfig()); - schemeCfg = AuthConfig::Find(type_str); + schemeCfg = Auth::Config::Find(type_str); if (schemeCfg == NULL) { debugs(3, DBG_CRITICAL, "Parsing Config File: Corruption configuring authentication scheme '" << type_str << "'."); self_destruct(); @@ -1870,7 +1870,7 @@ parse_authparam(Auth::authConfig * config) } static void -free_authparam(Auth::authConfig * cfg) +free_authparam(Auth::ConfigVector * cfg) { /* Wipe the Auth globals and Detach/Destruct component config + state. */ cfg->clean(); @@ -1887,9 +1887,9 @@ free_authparam(Auth::authConfig * cfg) } static void -dump_authparam(StoreEntry * entry, const char *name, authConfig cfg) +dump_authparam(StoreEntry * entry, const char *name, Auth::ConfigVector cfg) { - for (authConfig::iterator i = cfg.begin(); i != cfg.end(); ++i) + for (Auth::ConfigVector::iterator i = cfg.begin(); i != cfg.end(); ++i) (*i)->dump(entry, name, (*i)); } #endif /* USE_AUTH */ diff --git a/src/tests/testAuth.cc b/src/tests/testAuth.cc index 0476220c10..ae67d8d16e 100644 --- a/src/tests/testAuth.cc +++ b/src/tests/testAuth.cc @@ -59,12 +59,12 @@ find_proxy_auth(char const *type) } static -AuthConfig * +Auth::Config * getConfig(char const *type_str) { - Auth::authConfig &config = Auth::TheConfig; + Auth::ConfigVector &config = Auth::TheConfig; /* find a configuration for the scheme */ - AuthConfig *scheme = AuthConfig::Find(type_str); + Auth::Config *scheme = Auth::Config::Find(type_str); if (scheme == NULL) { /* Create a configuration */ @@ -85,9 +85,9 @@ getConfig(char const *type_str) static void -setup_scheme(AuthConfig *scheme, char const **params, unsigned param_count) +setup_scheme(Auth::Config *scheme, char const **params, unsigned param_count) { - Auth::authConfig &config = Auth::TheConfig; + Auth::ConfigVector &config = Auth::TheConfig; for (unsigned position=0; position < param_count; position++) { char *param_str=xstrdup(params[position]); @@ -107,7 +107,7 @@ fake_auth_setup() Mem::Init(); - Auth::authConfig &config = Auth::TheConfig; + Auth::ConfigVector &config = Auth::TheConfig; char const *digest_parms[]= {"program /home/robertc/install/squid/libexec/digest_pw_auth /home/robertc/install/squid/etc/digest.pwd", "realm foo" @@ -134,7 +134,7 @@ fake_auth_setup() }; for (unsigned scheme=0; scheme < 4; scheme++) { - AuthConfig *schemeConfig; + Auth::Config *schemeConfig; schemeConfig = getConfig(params[scheme].name); if (schemeConfig != NULL) setup_scheme(schemeConfig, params[scheme].params, @@ -149,7 +149,7 @@ fake_auth_setup() setup=true; } -/* AuthConfig::CreateAuthUser works for all +/* Auth::Config::CreateAuthUser works for all * authentication types */ void @@ -159,7 +159,7 @@ testAuthConfig::create() fake_auth_setup(); for (Auth::Scheme::iterator i = Auth::Scheme::GetSchemes().begin(); i != Auth::Scheme::GetSchemes().end(); ++i) { - AuthUserRequest::Pointer authRequest = AuthConfig::CreateAuthUser(find_proxy_auth((*i)->type())); + AuthUserRequest::Pointer authRequest = Auth::Config::CreateAuthUser(find_proxy_auth((*i)->type())); CPPUNIT_ASSERT(authRequest != NULL); } } @@ -180,7 +180,7 @@ testAuthUserRequest::scheme() for (Auth::Scheme::iterator i = Auth::Scheme::GetSchemes().begin(); i != Auth::Scheme::GetSchemes().end(); ++i) { // create a user request // check its scheme matches *i - AuthUserRequest::Pointer authRequest = AuthConfig::CreateAuthUser(find_proxy_auth((*i)->type())); + AuthUserRequest::Pointer authRequest = Auth::Config::CreateAuthUser(find_proxy_auth((*i)->type())); CPPUNIT_ASSERT_EQUAL(authRequest->scheme(), *i); } } @@ -202,7 +202,7 @@ void testAuthBasicUserRequest::username() { AuthUserRequest::Pointer temp = new AuthBasicUserRequest(); - BasicUser *basic_auth=new BasicUser(AuthConfig::Find("basic")); + BasicUser *basic_auth=new BasicUser(Auth::Config::Find("basic")); basic_auth->username("John"); temp->user(basic_auth); CPPUNIT_ASSERT_EQUAL(0, strcmp("John", temp->username())); @@ -225,7 +225,7 @@ void testAuthDigestUserRequest::username() { AuthUserRequest::Pointer temp = new AuthDigestUserRequest(); - DigestUser *duser=new DigestUser(AuthConfig::Find("digest")); + DigestUser *duser=new DigestUser(Auth::Config::Find("digest")); duser->username("John"); temp->user(duser); CPPUNIT_ASSERT_EQUAL(0, strcmp("John", temp->username())); @@ -248,7 +248,7 @@ void testAuthNTLMUserRequest::username() { AuthUserRequest::Pointer temp = new AuthNTLMUserRequest(); - NTLMUser *nuser=new NTLMUser(AuthConfig::Find("ntlm")); + NTLMUser *nuser=new NTLMUser(Auth::Config::Find("ntlm")); nuser->username("John"); temp->user(nuser); CPPUNIT_ASSERT_EQUAL(0, strcmp("John", temp->username())); @@ -271,7 +271,7 @@ void testAuthNegotiateUserRequest::username() { AuthUserRequest::Pointer temp = new AuthNegotiateUserRequest(); - NegotiateUser *nuser=new NegotiateUser(AuthConfig::Find("negotiate")); + NegotiateUser *nuser=new NegotiateUser(Auth::Config::Find("negotiate")); nuser->username("John"); temp->user(nuser); CPPUNIT_ASSERT_EQUAL(0, strcmp("John", temp->username())); diff --git a/src/typedefs.h b/src/typedefs.h index 2e7239d8e6..87e16d7c3e 100644 --- a/src/typedefs.h +++ b/src/typedefs.h @@ -51,12 +51,6 @@ typedef struct { /// \deprecated Use AuthUserHashPointer instead. typedef struct AuthUserHashPointer auth_user_hash_pointer; -/* temporary: once Config is fully hidden, this shouldn't be needed */ -#include "Array.h" - -class AuthConfig; -typedef Vector authConfig; - struct http_port_list; struct https_port_list;