]>
Commit | Line | Data |
---|---|---|
225b7b10 | 1 | /* |
b8ae064d | 2 | * Copyright (C) 1996-2023 The Squid Software Foundation and contributors |
225b7b10 | 3 | * |
bbc27441 AJ |
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. | |
225b7b10 | 7 | */ |
bbc27441 | 8 | |
ff9d9458 FC |
9 | #ifndef SQUID_SRC_EXTERNALACL_H |
10 | #define SQUID_SRC_EXTERNALACL_H | |
e1f7507e | 11 | |
5fb6afec | 12 | #include "acl/Acl.h" |
3ad63615 | 13 | #include "acl/Checklist.h" |
abdd93d0 AJ |
14 | #include "base/RefCount.h" |
15 | ||
613924ee | 16 | class external_acl; |
f963b531 | 17 | class external_acl_data; |
314782d4 | 18 | class StoreEntry; |
613924ee | 19 | |
922513e5 | 20 | class ACLExternal : public Acl::Node |
b0dd28ba | 21 | { |
b001e822 | 22 | MEMPROXY_CLASS(ACLExternal); |
b0dd28ba | 23 | |
741c2986 | 24 | public: |
b0dd28ba | 25 | ACLExternal(char const *); |
337b9aa4 | 26 | ~ACLExternal() override; |
b0dd28ba | 27 | |
337b9aa4 AR |
28 | char const *typeString() const override; |
29 | void parse() override; | |
30 | int match(ACLChecklist *checklist) override; | |
b0dd28ba | 31 | /* This really should be dynamic based on the external class defn */ |
337b9aa4 AR |
32 | bool requiresAle() const override {return true;} |
33 | bool requiresRequest() const override {return true;} | |
b0dd28ba | 34 | |
35 | /* when requiresRequest is made dynamic, review this too */ | |
36 | // virtual bool requiresReply() const {return true;} | |
337b9aa4 AR |
37 | bool isProxyAuth() const override; |
38 | SBufList dump() const override; | |
39 | bool valid () const override; | |
40 | bool empty () const override; | |
b0dd28ba | 41 | |
5fb6afec | 42 | private: |
922513e5 | 43 | static void StartLookup(ACLFilledChecklist &, const Acl::Node &); |
5fb6afec EB |
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; | |
48 | ||
b0dd28ba | 49 | external_acl_data *data; |
50 | char const *class_; | |
51 | }; | |
52 | ||
314782d4 FC |
53 | void parse_externalAclHelper(external_acl **); |
54 | void dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl *); | |
55 | void free_externalAclHelper(external_acl **); | |
abdd93d0 | 56 | typedef void EAH(void *data, const ExternalACLEntryPointer &result); |
314782d4 FC |
57 | void externalAclLookup(ACLChecklist * ch, void *acl_data, EAH * handler, void *data); |
58 | void externalAclInit(void); | |
59 | void externalAclShutdown(void); | |
fc54b8d2 | 60 | |
ff9d9458 | 61 | #endif /* SQUID_SRC_EXTERNALACL_H */ |
f53969cc | 62 |