]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/ExternalACL.h
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
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.
9 #ifndef SQUID_SRC_EXTERNALACL_H
10 #define SQUID_SRC_EXTERNALACL_H
13 #include "acl/Checklist.h"
14 #include "base/RefCount.h"
17 class external_acl_data
;
20 class ACLExternal
: public Acl::Node
22 MEMPROXY_CLASS(ACLExternal
);
25 ACLExternal(char const *);
26 ~ACLExternal() override
;
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;}
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
;
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;
46 Acl::Answer
aclMatchExternal(external_acl_data
*, ACLFilledChecklist
*) const;
47 char *makeExternalAclKey(ACLFilledChecklist
*, external_acl_data
*) const;
49 external_acl_data
*data
;
53 void parse_externalAclHelper(external_acl
**);
54 void dump_externalAclHelper(StoreEntry
* sentry
, const char *name
, const external_acl
*);
55 void free_externalAclHelper(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);
61 #endif /* SQUID_SRC_EXTERNALACL_H */