]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/adaptation/AccessRule.cc
4 #include "ConfigParser.h"
6 #include "adaptation/AccessRule.h"
7 #include "adaptation/Service.h"
8 #include "adaptation/ServiceGroups.h"
11 int Adaptation::AccessRule::LastId
= 0;
13 Adaptation::AccessRule::AccessRule(): id(++LastId
), acl(NULL
)
17 Adaptation::AccessRule::~AccessRule()
19 // XXX: leaking acls here?
23 Adaptation::AccessRule::parse(ConfigParser
&parser
)
25 ConfigParser::ParseString(&groupId
);
26 aclParseAccessLine(parser
, &acl
);
30 Adaptation::AccessRule::finalize()
32 if (!group()) { // no explicit group
33 debugs(93,7, HERE
<< "no service group: " << groupId
);
34 // try to add a one-service group
35 if (FindService(groupId
) != NULL
) {
36 ServiceGroup
*g
= new SingleService(groupId
);
37 g
->finalize(); // explicit groups were finalized before rules
38 AllGroups().push_back(g
);
43 debugs(93,0, "ERROR: Unknown adaptation service or group name: '" <<
44 groupId
<< "'"); // TODO: fail on failures
48 Adaptation::ServiceGroup
*
49 Adaptation::AccessRule::group()
51 return FindGroup(groupId
);
55 Adaptation::AccessRules
&
56 Adaptation::AllRules()
58 static AccessRules TheRules
;
62 // TODO: make AccessRules::find work
63 Adaptation::AccessRule
*
64 Adaptation::FindRule(const AccessRule::Id
&id
)
66 typedef AccessRules::iterator ARI
;
67 for (ARI i
= AllRules().begin(); i
!= AllRules().end(); ++i
) {