]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/acl/RequestHeaderStrategy.h
2 * Copyright (C) 1996-2015 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_ACLREQUESTHEADERSTRATEGY_H
10 #define SQUID_ACLREQUESTHEADERSTRATEGY_H
13 #include "acl/FilledChecklist.h"
14 #include "acl/Strategy.h"
15 #include "HttpRequest.h"
17 template <http_hdr_type header
>
19 class ACLRequestHeaderStrategy
: public ACLStrategy
<char const *>
23 virtual int match (ACLData
<char const *> * &, ACLFilledChecklist
*, ACLFlags
&);
24 virtual bool requiresRequest() const {return true;}
26 static ACLRequestHeaderStrategy
*Instance();
27 /* Not implemented to prevent copies of the instance. */
28 /* Not private to prevent brain dead g+++ warnings about
29 * private constructors with no friends */
30 ACLRequestHeaderStrategy(ACLRequestHeaderStrategy
const &);
33 static ACLRequestHeaderStrategy
*Instance_
;
34 ACLRequestHeaderStrategy() {}
36 ACLRequestHeaderStrategy
&operator=(ACLRequestHeaderStrategy
const &);
39 template <http_hdr_type header
>
41 ACLRequestHeaderStrategy
<header
>::match (ACLData
<char const *> * &data
, ACLFilledChecklist
*checklist
, ACLFlags
&)
43 char const *theHeader
= checklist
->request
->header
.getStr(header
);
45 if (NULL
== theHeader
)
48 return data
->match(theHeader
);
51 template <http_hdr_type header
>
52 ACLRequestHeaderStrategy
<header
> *
53 ACLRequestHeaderStrategy
<header
>::Instance()
56 Instance_
= new ACLRequestHeaderStrategy
<header
>;
61 template <http_hdr_type header
>
62 ACLRequestHeaderStrategy
<header
> * ACLRequestHeaderStrategy
<header
>::Instance_
= NULL
;
64 #endif /* SQUID_REQUESTHEADERSTRATEGY_H */