]> git.ipfire.org Git - thirdparty/squid.git/blob - src/acl/TransactionInitiator.cc
Source Format Enforcement (#763)
[thirdparty/squid.git] / src / acl / TransactionInitiator.cc
1 /*
2 * Copyright (C) 1996-2021 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 /* DEBUG: section 28 Access Control */
10
11 #include "squid.h"
12 #include "acl/FilledChecklist.h"
13 #include "acl/TransactionInitiator.h"
14 #include "cache_cf.h"
15 #include "Debug.h"
16 #include "HttpRequest.h"
17 #include "MasterXaction.h"
18 #include "SquidConfig.h"
19
20 ACL *
21 Acl::TransactionInitiator::clone() const
22 {
23 return new Acl::TransactionInitiator(*this);
24 }
25
26 Acl::TransactionInitiator::TransactionInitiator (const char *aClass) : class_ (aClass), initiators_(0)
27 {}
28
29 char const *
30 Acl::TransactionInitiator::typeString() const
31 {
32 return class_;
33 }
34
35 bool
36 Acl::TransactionInitiator::empty () const
37 {
38 return false;
39 }
40
41 void
42 Acl::TransactionInitiator::parse()
43 {
44 while (const char *s = ConfigParser::strtokFile()) {
45 initiators_ |= XactionInitiator::ParseInitiators(s);
46 cfgWords.push_back(SBuf(s));
47 }
48 }
49
50 int
51 Acl::TransactionInitiator::match(ACLChecklist *checklist)
52 {
53 ACLFilledChecklist *filled = Filled((ACLChecklist*)checklist);
54 assert(filled->request);
55 assert(filled->request->masterXaction);
56 const XactionInitiator requestInitiator = filled->request->masterXaction->initiator;
57 return requestInitiator.in(initiators_) ? 1 : 0;
58 }
59
60 SBufList
61 Acl::TransactionInitiator::dump() const
62 {
63 return cfgWords;
64 }
65