Squid Web Cache master
Loading...
Searching...
No Matches
ExternalACL.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#ifndef SQUID_SRC_EXTERNALACL_H
10#define SQUID_SRC_EXTERNALACL_H
11
12#include "acl/Acl.h"
13#include "acl/Checklist.h"
14#include "base/RefCount.h"
15
16class external_acl;
18class StoreEntry;
19
20class ACLExternal : public Acl::Node
21{
23
24public:
25 ACLExternal(char const *);
26 ~ACLExternal() override;
27
28 char const *typeString() const override;
29 void parse() override;
30 int match(ACLChecklist *checklist) override;
31 /* This really should be dynamic based on the external class defn */
32 bool requiresAle() const override {return true;}
33 bool requiresRequest() const override {return true;}
34
35 /* when requiresRequest is made dynamic, review this too */
36 // virtual bool requiresReply() const {return true;}
37 bool isProxyAuth() const override;
38 SBufList dump() const override;
39 bool valid () const override;
40 bool empty () const override;
41
42private:
43 static void StartLookup(ACLFilledChecklist &, const Acl::Node &);
44 static void LookupDone(void *data, const ExternalACLEntryPointer &);
45 void startLookup(ACLFilledChecklist *, external_acl_data *, bool inBackground) const;
48
50 char const *class_;
51};
52
54void dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl *);
56typedef void EAH(void *data, const ExternalACLEntryPointer &result);
57void externalAclLookup(ACLChecklist * ch, void *acl_data, EAH * handler, void *data);
58void externalAclInit(void);
59void externalAclShutdown(void);
60
61#endif /* SQUID_SRC_EXTERNALACL_H */
62
void externalAclInit(void)
void parse_externalAclHelper(external_acl **)
void dump_externalAclHelper(StoreEntry *sentry, const char *name, const external_acl *)
void free_externalAclHelper(external_acl **)
void externalAclLookup(ACLChecklist *ch, void *acl_data, EAH *handler, void *data)
void EAH(void *data, const ExternalACLEntryPointer &result)
Definition ExternalACL.h:56
void externalAclShutdown(void)
bool empty() const override
bool isProxyAuth() const override
static void LookupDone(void *data, const ExternalACLEntryPointer &)
Called when an async lookup returns.
void startLookup(ACLFilledChecklist *, external_acl_data *, bool inBackground) const
MEMPROXY_CLASS(ACLExternal)
static void StartLookup(ACLFilledChecklist &, const Acl::Node &)
bool requiresRequest() const override
whether our (i.e. shallow) match() requires checklist to have a request
Definition ExternalACL.h:33
Acl::Answer aclMatchExternal(external_acl_data *, ACLFilledChecklist *) const
char * makeExternalAclKey(ACLFilledChecklist *, external_acl_data *) const
external_acl_data * data
Definition ExternalACL.h:49
~ACLExternal() override
bool requiresAle() const override
whether our (i.e. shallow) match() requires checklist to have a AccessLogEntry
Definition ExternalACL.h:32
char const * typeString() const override
bool valid() const override
int match(ACLChecklist *checklist) override
Matches the actual data in checklist against this Acl::Node.
void parse() override
parses node representation in squid.conf; dies on failures
SBufList dump() const override
char const * class_
Definition ExternalACL.h:50
std::list< SBuf > SBufList
Definition forward.h:23