|
Squid Web Cache v8/master
|
#include <CacheManager.h>
Public Types | |
| typedef std::vector< Mgr::ActionProfilePointer > | Menu |
Public Member Functions | |
| void | registerProfile (const Mgr::ActionProfilePointer &) |
| remembers the given profile while ignoring attempts to register a same-name duplicate | |
| Mgr::ActionProfilePointer | findAction (char const *action) const |
| Mgr::Action::Pointer | createNamedAction (const char *actionName) |
| Mgr::Action::Pointer | createRequestedAction (const Mgr::ActionParams &) |
| const Menu & | menu () const |
| void | start (const Comm::ConnectionPointer &client, HttpRequest *request, StoreEntry *entry, const AccessLogEntryPointer &ale) |
| const char * | ActionProtection (const Mgr::ActionProfilePointer &profile) |
Static Public Member Functions | |
| static const SBuf & | WellKnownUrlPathPrefix () |
| initial URL path characters that identify cache manager requests | |
| static CacheManager * | GetInstance () |
| static void | PutCommonResponseHeaders (HttpReply &, const char *httpOrigin) |
Protected Member Functions | |
| CacheManager () | |
| use Instance() instead | |
| Mgr::CommandPointer | ParseUrl (const AnyP::Uri &) |
| void | ParseHeaders (const HttpRequest *request, Mgr::ActionParams ¶ms) |
| int | CheckPassword (const Mgr::Command &cmd) |
| char * | PasswdGet (Mgr::ActionPasswordList *, const char *) |
Protected Attributes | |
| Menu | menu_ |
a CacheManager - the menu system for interacting with squid. This is currently just an adapter to the global cachemgr* routines to provide looser coupling between modules, but once fully transitioned, an instance of this class will represent a single independent manager. TODO: update documentation to reflect the new singleton model.
Definition at line 32 of file CacheManager.h.
| typedef std::vector<Mgr::ActionProfilePointer> CacheManager::Menu |
Definition at line 35 of file CacheManager.h.
|
inlineprotected |
Definition at line 59 of file CacheManager.h.
Referenced by GetInstance().
| const char * CacheManager::ActionProtection | ( | const Mgr::ActionProfilePointer & | profile | ) |
Definition at line 359 of file cache_manager.cc.
References assert, Config, SquidConfig::passwd_list, and PasswdGet().
Referenced by Mgr::MenuAction::dump(), and ParseUrl().
|
protected |
| 0 | if mgr->password is good or "none" |
| 1 | if mgr->password is "disable" |
| !0 | if mgr->password does not match configured password |
Definition at line 216 of file cache_manager.cc.
References assert, Config, debugs, Mgr::Command::params, SquidConfig::passwd_list, PasswdGet(), Mgr::ActionParams::password, Mgr::Command::profile, and String::size().
Referenced by start().
| Mgr::Action::Pointer CacheManager::createNamedAction(char const *) CacheManager::GetInstance STUB_RETVAL(nullptr) void CacheManager CacheManager *() STUB_RETVAL(instance) void Mgr | ( | const char * | actionName | ) |
Definition at line 84 of file cache_manager.cc.
References findAction(), and Must.
Referenced by Mgr::Response::Response(), and TestCacheManager::testRegister().
| Mgr::Action::Pointer CacheManager::createRequestedAction | ( | const Mgr::ActionParams & | params | ) |
Definition at line 97 of file cache_manager.cc.
References Mgr::ActionParams::actionName, findAction(), Must, and String::termedBuf().
Referenced by Ipc::Coordinator::handleCacheMgrRequest(), and Ipc::Strand::handleCacheMgrRequest().
| Mgr::ActionProfile::Pointer CacheManager::findAction | ( | char const * | action | ) | const |
Locates an action in the actions registry ActionsList.
| NULL | if Action not found |
| CacheManagerAction* | if the action was found |
Definition at line 66 of file cache_manager.cc.
References debugs, menu_, and Must.
Referenced by createNamedAction(), createRequestedAction(), ParseUrl(), and registerProfile().
|
static |
Definition at line 422 of file cache_manager.cc.
References CacheManager(), debugs, and Mgr::RegisterBasics().
Referenced by Mgr::Response::Response(), Mgr::MenuAction::dump(), Ipc::Coordinator::handleCacheMgrRequest(), Ipc::Strand::handleCacheMgrRequest(), internalStart(), Mgr::RegisterAction(), Mgr::RegisterAction(), TestCacheManager::testCreate(), TestCacheManager::testParseUrl(), and TestCacheManager::testRegister().
|
inline |
Definition at line 46 of file CacheManager.h.
References menu_.
Referenced by Mgr::MenuAction::dump().
|
protected |
Definition at line 176 of file cache_manager.cc.
References assert, Http::AUTHORIZATION, DBG_IMPORTANT, debugs, HttpRequest::flags, HttpHeader::getAuthToken(), Http::Message::header, Mgr::ActionParams::httpFlags, Mgr::ActionParams::httpMethod, HttpRequestMethod::id(), HttpRequest::method, SBuf::npos, Mgr::ActionParams::password, SBufToString(), and Mgr::ActionParams::userName.
Referenced by start().
|
protected |
Parses the action requested by the user and checks via CacheManager::ActionProtection() that the item is accessible by the user.
Syntax:
[ scheme "://" authority ] '/squid-internal-mgr' path-absolute [ "?" query ] [ "#" fragment ]
see RFC 3986 for definitions of scheme, authority, path-absolute, query
Definition at line 126 of file cache_manager.cc.
References AnyP::Uri::absolute(), ActionProtection(), Assure, SBuf::c_str(), CharacterSet::complement(), debugs, findAction(), Here, AnyP::Uri::host(), Mgr::QueryParams::Parse(), AnyP::Uri::path(), SBufToString(), ToSBuf(), and WellKnownUrlPathPrefix().
Referenced by start(), CacheManagerInternals::testInvalidUrl(), and CacheManagerInternals::testValidUrl().
|
protected |
Definition at line 382 of file cache_manager.cc.
References Mgr::ActionPasswordList::actions, Mgr::ActionPasswordList::next, and Mgr::ActionPasswordList::passwd.
Referenced by ActionProtection(), and CheckPassword().
|
static |
Add HTTP response headers specific/common to all cache manager replies, including cache manager errors and Action reports.
| httpOrigin | the value of Origin header in the trigger HTTP request (or nil) |
Definition at line 401 of file cache_manager.cc.
References Http::Message::header, HttpHdrCc::noCache(), HttpHdrCc::noStore(), Http::Message::putCc(), and HttpHeader::putExt().
Referenced by Mgr::Action::fillEntry(), Mgr::Inquirer::start(), and start().
| void CacheManager::registerProfile | ( | const Mgr::ActionProfilePointer & | profile | ) |
Definition at line 48 of file cache_manager.cc.
References debugs, findAction(), menu_, and Must.
Referenced by Mgr::RegisterAction(), and Mgr::RegisterAction().
| void CacheManager::start | ( | const Comm::ConnectionPointer & | client, |
| HttpRequest * | request, | ||
| StoreEntry * | entry, | ||
| const AccessLogEntryPointer & | ale | ||
| ) |
Main entry point in the Cache Manager's activity. Gets called as part of the forward chain if the right URL is detected there. Initiates all needed internal work and renders the response.
Definition at line 246 of file cache_manager.cc.
References HttpReply::body, ErrorState::BuildHttpReply(), CheckPassword(), StoreEntry::complete(), HttpBody::content(), CurrentException(), DBG_IMPORTANT, debugs, ERR_CACHE_MGR_ACCESS_DENIED, ERR_INVALID_URL, errorAppendEntry(), StoreEntry::expires, HttpHeader::getStr(), HttpHeader::has(), Http::Message::header, Here, IamWorkerProcess(), MGR_INDEX, Must, Http::ORIGIN, ParseHeaders(), ParseUrl(), Http::ProtocolVersion(), HttpHeader::putAuth(), PutCommonResponseHeaders(), StoreEntry::replaceHttpReply(), Http::scNotFound, Http::scOkay, Http::scUnauthorized, Http::StatusLine::set(), HttpReply::sline, squid_curtime, AsyncJob::Start(), ErrorState::url, HttpRequest::url, StoreEntry::url(), UsingSmp(), and xstrdup.
Referenced by internalStart().
|
static |
Definition at line 107 of file cache_manager.cc.
Referenced by ForSomeCacheManager(), ParseUrl(), and TestCacheManager::testParseUrl().
|
protected |
Definition at line 66 of file CacheManager.h.
Referenced by findAction(), menu(), and registerProfile().