]> git.ipfire.org Git - thirdparty/squid.git/blame - src/acl/DestinationDomain.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / acl / DestinationDomain.h
CommitLineData
3841dd46 1/*
4ac4a490 2 * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
3841dd46 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.
3841dd46 7 */
8
945c70bb
AR
9#ifndef SQUID_ACLDESTINATIONDOMAIN_H
10#define SQUID_ACLDESTINATIONDOMAIN_H
63be0a78 11
127dce76 12#include "acl/Acl.h"
127dce76 13#include "acl/Checklist.h"
602d9612 14#include "acl/Data.h"
127dce76 15#include "acl/Strategised.h"
23032e75 16#include "dns/forward.h"
7660b45d 17
63be0a78 18/// \ingroup ACLAPI
7660b45d 19class ACLDestinationDomainStrategy : public ACLStrategy<char const *>
20{
21
22public:
33810b1d 23 virtual int match (ACLData<MatchType> * &, ACLFilledChecklist *, ACLFlags &);
7660b45d 24 static ACLDestinationDomainStrategy *Instance();
51734f15 25 virtual bool requiresRequest() const {return true;}
26ac0430 26
63be0a78 27 /**
28 * Not implemented to prevent copies of the instance.
29 \par
30 * Not private to prevent brain dead g+++ warnings about
31 * private constructors with no friends
32 */
7660b45d 33 ACLDestinationDomainStrategy(ACLDestinationDomainStrategy const &);
34
35private:
36 static ACLDestinationDomainStrategy Instance_;
26ac0430 37 ACLDestinationDomainStrategy() {}
7660b45d 38
39 ACLDestinationDomainStrategy&operator=(ACLDestinationDomainStrategy const &);
40};
3841dd46 41
63be0a78 42/// \ingroup ACLAPI
62e76326 43class DestinationDomainLookup : public ACLChecklist::AsyncState
44{
45
46public:
3841dd46 47 static DestinationDomainLookup *Instance();
48 virtual void checkForAsync(ACLChecklist *)const;
62e76326 49
50private:
3841dd46 51 static DestinationDomainLookup instance_;
4a3b98d7 52 static void LookupDone(const char *, const Dns::LookupDetails &, void *);
3841dd46 53};
54
63be0a78 55/// \ingroup ACLAPI
7660b45d 56class ACLDestinationDomain
62e76326 57{
58
62e76326 59private:
7660b45d 60 static ACL::Prototype LiteralRegistryProtoype;
61 static ACLStrategised<char const *> LiteralRegistryEntry_;
62 static ACL::Prototype RegexRegistryProtoype;
63 static ACLStrategised<char const *> RegexRegistryEntry_;
3841dd46 64};
65
945c70bb 66#endif /* SQUID_ACLDESTINATIONDOMAIN_H */
f53969cc 67