int len = strlen(url);
Must(len > 0);
t = sscanf(url, "cache_object://%[^/]/%[^@?]%n@%[^?]?%s", host, request, &pos, password, params);
+ if (t < 1) {
+ t = sscanf(url, "http://%[^/]/squid-internal-mgr/%[^?]%n?%s", host, request, &pos, params);
+ }
+ if (t < 1) {
+ t = sscanf(url, "https://%[^/]/squid-internal-mgr/%[^?]%n?%s", host, request, &pos, params);
+ }
+ debugs(16, 3, HERE << "HTTPS: t=" << t << ", host='" << host << "', request='" << request << "', pos=" << pos <<
+ ", password='" << password << "', params='" << params << "'");
if (pos >0 && url[pos] == '?') {
++pos;
#
# Recommended minimum configuration:
#
-acl manager proto cache_object
+acl manager url_regex -i ^cache_object:// +i ^https?://[^/]+/squid-internal-mgr/
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
switch (request->protocol) {
case AnyP::PROTO_INTERNAL:
- internalStart(request, entry);
+ internalStart(clientConn, request, entry);
return;
case AnyP::PROTO_CACHE_OBJECT:
*/
#include "squid.h"
+#include "CacheManager.h"
+#include "comm/Connection.h"
#include "errorpage.h"
#include "Store.h"
#include "HttpRequest.h"
* return HTTP_NOT_FOUND for others
*/
void
-internalStart(HttpRequest * request, StoreEntry * entry)
+internalStart(const Comm::ConnectionPointer &clientConn, HttpRequest * request, StoreEntry * entry)
{
ErrorState *err;
const char *upath = request->urlpath.termedBuf();
- debugs(76, 3, "internalStart: " << request->client_addr << " requesting '" << upath << "'");
+ debugs(76, 3, HERE << clientConn << " requesting '" << upath << "'");
if (0 == strcmp(upath, "/squid-internal-dynamic/netdb")) {
netdbBinaryExchange(entry);
entry->replaceHttpReply(reply);
entry->append(msgbuf, strlen(msgbuf));
entry->complete();
+ } else if (0 == strncmp(upath, "/squid-internal-mgr/", 20)) {
+ CacheManager::GetInstance()->Start(clientConn, request, entry);
} else {
debugObj(76, 1, "internalStart: unknown request:\n",
request, (ObjPackMethod) & httpRequestPack);
SQUIDCEXTERN void cacheDigestGuessStatsReport(const cd_guess_stats * stats, StoreEntry * sentry, const char *label);
SQUIDCEXTERN void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e);
-SQUIDCEXTERN void internalStart(HttpRequest *, StoreEntry *);
+SQUIDCEXTERN void internalStart(const Comm::ConnectionPointer &clientConn, HttpRequest *, StoreEntry *);
SQUIDCEXTERN int internalCheck(const char *urlpath);
SQUIDCEXTERN int internalStaticCheck(const char *urlpath);
SQUIDCEXTERN char *internalLocalUri(const char *dir, const char *name);