]> git.ipfire.org Git - thirdparty/squid.git/blame - src/acl/TransactionInitiator.cc
Source Format Enforcement (#532)
[thirdparty/squid.git] / src / acl / TransactionInitiator.cc
CommitLineData
5ceaee75 1/*
77b1029d 2 * Copyright (C) 1996-2020 The Squid Software Foundation and contributors
5ceaee75
CT
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"
5ceaee75 12#include "acl/FilledChecklist.h"
bf7af17b 13#include "acl/TransactionInitiator.h"
5ceaee75
CT
14#include "cache_cf.h"
15#include "Debug.h"
16#include "HttpRequest.h"
17#include "MasterXaction.h"
18#include "SquidConfig.h"
19
20ACL *
21Acl::TransactionInitiator::clone() const
22{
23 return new Acl::TransactionInitiator(*this);
24}
25
26Acl::TransactionInitiator::TransactionInitiator (const char *aClass) : class_ (aClass), initiators_(0)
27{}
28
29char const *
30Acl::TransactionInitiator::typeString() const
31{
32 return class_;
33}
34
35bool
36Acl::TransactionInitiator::empty () const
37{
38 return false;
39}
40
41void
42Acl::TransactionInitiator::parse()
43{
44 while (const char *s = ConfigParser::strtokFile()) {
45 initiators_ |= XactionInitiator::ParseInitiators(s);
46 cfgWords.push_back(SBuf(s));
47 }
48}
49
50int
51Acl::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
60SBufList
61Acl::TransactionInitiator::dump() const
62{
63 return cfgWords;
64}
65