ExternalACL.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 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 
16 class external_acl;
17 class external_acl_data;
18 class StoreEntry;
19 
20 class ACLExternal : public Acl::Node
21 {
23 
24 public:
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 
42 private:
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 
54 void dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl *);
56 typedef void EAH(void *data, const ExternalACLEntryPointer &result);
57 void externalAclLookup(ACLChecklist * ch, void *acl_data, EAH * handler, void *data);
58 void externalAclInit(void);
59 void externalAclShutdown(void);
60 
61 #endif /* SQUID_SRC_EXTERNALACL_H */
62 
void EAH(void *data, const ExternalACLEntryPointer &result)
Definition: ExternalACL.h:56
void externalAclShutdown(void)
static void StartLookup(ACLFilledChecklist &, const Acl::Node &)
external_acl_data * data
Definition: ExternalACL.h:49
bool empty() const override
bool valid() const override
const char * typeString() const override
std::list< SBuf > SBufList
Definition: forward.h:22
Acl::Answer aclMatchExternal(external_acl_data *, ACLFilledChecklist *) const
bool isProxyAuth() const override
const char * class_
Definition: ExternalACL.h:50
char * makeExternalAclKey(ACLFilledChecklist *, external_acl_data *) const
MEMPROXY_CLASS(ACLExternal)
int match(ACLChecklist *checklist) override
Matches the actual data in checklist against this Acl::Node.
void externalAclInit(void)
void startLookup(ACLFilledChecklist *, external_acl_data *, bool inBackground) const
static void LookupDone(void *data, const ExternalACLEntryPointer &)
Called when an async lookup returns.
bool requiresRequest() const override
whether our (i.e. shallow) match() requires checklist to have a request
Definition: ExternalACL.h:33
ACLExternal(char const *)
void free_externalAclHelper(external_acl **)
bool requiresAle() const override
whether our (i.e. shallow) match() requires checklist to have a AccessLogEntry
Definition: ExternalACL.h:32
void dump_externalAclHelper(StoreEntry *sentry, const char *name, const external_acl *)
~ACLExternal() override
void parse_externalAclHelper(external_acl **)
Definition: Node.h:25
void externalAclLookup(ACLChecklist *ch, void *acl_data, EAH *handler, void *data)
SBufList dump() const override
void parse() override
parses node representation in squid.conf; dies on failures

 

Introduction

Documentation

Support

Miscellaneous