3 /** This file exists to provide satic registration code to executables
4 that need ACLs. We cannot place this code in acl/lib*.la because it
5 does not get linked in, because nobody is using these classes by name.
9 #include "acl/AdaptationService.h"
10 #include "acl/AdaptationServiceData.h"
12 #include "acl/AllOf.h"
13 #include "acl/AnyOf.h"
16 #include "acl/Eui64.h"
19 #include "acl/Browser.h"
20 #include "acl/Checklist.h"
22 #include "acl/DestinationAsn.h"
23 #include "acl/DestinationDomain.h"
24 #include "acl/DestinationIp.h"
25 #include "acl/DomainData.h"
27 #include "acl/ExtUser.h"
29 #include "acl/FilledChecklist.h"
30 #include "acl/Gadgets.h"
31 #include "acl/HierCode.h"
32 #include "acl/HierCodeData.h"
33 #include "acl/HttpHeaderData.h"
34 #include "acl/HttpRepHeader.h"
35 #include "acl/HttpReqHeader.h"
36 #include "acl/HttpStatus.h"
37 #include "acl/IntRange.h"
39 #include "acl/LocalIp.h"
40 #include "acl/LocalPort.h"
41 #include "acl/MaxConnection.h"
42 #include "acl/Method.h"
43 #include "acl/MethodData.h"
44 #include "acl/MyPortName.h"
46 #include "acl/NoteData.h"
47 #include "acl/PeerName.h"
48 #include "acl/Protocol.h"
49 #include "acl/ProtocolData.h"
50 #include "acl/Random.h"
51 #include "acl/Referer.h"
52 #include "acl/RegexData.h"
53 #include "acl/ReplyHeaderStrategy.h"
54 #include "acl/ReplyMimeType.h"
55 #include "acl/RequestHeaderStrategy.h"
56 #include "acl/RequestMimeType.h"
57 #include "acl/SourceAsn.h"
58 #include "acl/SourceDomain.h"
59 #include "acl/SourceIp.h"
61 #include "acl/Certificate.h"
62 #include "acl/CertificateData.h"
63 #include "acl/SslError.h"
64 #include "acl/SslErrorData.h"
66 #include "acl/Strategised.h"
67 #include "acl/Strategy.h"
68 #include "acl/StringData.h"
70 #include "acl/ServerCertificate.h"
74 #include "acl/TimeData.h"
76 #include "acl/UrlLogin.h"
77 #include "acl/UrlPath.h"
78 #include "acl/UrlPort.h"
79 #include "acl/UserData.h"
81 #include "auth/AclMaxUserIp.h"
82 #include "auth/AclProxyAuth.h"
85 #include "ident/AclIdent.h"
88 ACL::Prototype
ACLBrowser::RegistryProtoype(&ACLBrowser::RegistryEntry_
, "browser");
89 ACLStrategised
<char const *> ACLBrowser::RegistryEntry_(new ACLRegexData
, ACLRequestHeaderStrategy
<HDR_USER_AGENT
>::Instance(), "browser");
90 ACLFlag DestinationDomainFlags
[] = {ACL_F_NO_LOOKUP
, ACL_F_END
};
91 ACL::Prototype
ACLDestinationDomain::LiteralRegistryProtoype(&ACLDestinationDomain::LiteralRegistryEntry_
, "dstdomain");
92 ACLStrategised
<char const *> ACLDestinationDomain::LiteralRegistryEntry_(new ACLDomainData
, ACLDestinationDomainStrategy::Instance(), "dstdomain", DestinationDomainFlags
);
93 ACL::Prototype
ACLDestinationDomain::RegexRegistryProtoype(&ACLDestinationDomain::RegexRegistryEntry_
, "dstdom_regex");
94 ACLFlag DestinationDomainRegexFlags
[] = {ACL_F_NO_LOOKUP
, ACL_F_REGEX_CASE
, ACL_F_END
};
95 ACLStrategised
<char const *> ACLDestinationDomain::RegexRegistryEntry_(new ACLRegexData
,ACLDestinationDomainStrategy::Instance() ,"dstdom_regex", DestinationDomainRegexFlags
);
96 ACL::Prototype
ACLDestinationIP::RegistryProtoype(&ACLDestinationIP::RegistryEntry_
, "dst");
97 ACLDestinationIP
ACLDestinationIP::RegistryEntry_
;
99 ACL::Prototype
ACLExtUser::UserRegistryProtoype(&ACLExtUser::UserRegistryEntry_
, "ext_user");
100 ACLExtUser
ACLExtUser::UserRegistryEntry_(new ACLUserData
, "ext_user");
101 ACL::Prototype
ACLExtUser::RegexRegistryProtoype(&ACLExtUser::RegexRegistryEntry_
, "ext_user_regex" );
102 ACLExtUser
ACLExtUser::RegexRegistryEntry_(new ACLRegexData
, "ext_user_regex");
104 ACL::Prototype
ACLHierCode::RegistryProtoype(&ACLHierCode::RegistryEntry_
, "hier_code");
105 ACLStrategised
<hier_code
> ACLHierCode::RegistryEntry_(new ACLHierCodeData
, ACLHierCodeStrategy::Instance(), "hier_code");
106 ACL::Prototype
ACLHTTPRepHeader::RegistryProtoype(&ACLHTTPRepHeader::RegistryEntry_
, "rep_header");
107 ACLStrategised
<HttpHeader
*> ACLHTTPRepHeader::RegistryEntry_(new ACLHTTPHeaderData
, ACLHTTPRepHeaderStrategy::Instance(), "rep_header");
108 ACL::Prototype
ACLHTTPReqHeader::RegistryProtoype(&ACLHTTPReqHeader::RegistryEntry_
, "req_header");
109 ACLStrategised
<HttpHeader
*> ACLHTTPReqHeader::RegistryEntry_(new ACLHTTPHeaderData
, ACLHTTPReqHeaderStrategy::Instance(), "req_header");
110 ACL::Prototype
ACLHTTPStatus::RegistryProtoype(&ACLHTTPStatus::RegistryEntry_
, "http_status");
111 ACLHTTPStatus
ACLHTTPStatus::RegistryEntry_("http_status");
112 ACL::Prototype
ACLMaxConnection::RegistryProtoype(&ACLMaxConnection::RegistryEntry_
, "maxconn");
113 ACLMaxConnection
ACLMaxConnection::RegistryEntry_("maxconn");
114 ACL::Prototype
ACLMethod::RegistryProtoype(&ACLMethod::RegistryEntry_
, "method");
115 ACLStrategised
<HttpRequestMethod
> ACLMethod::RegistryEntry_(new ACLMethodData
, ACLMethodStrategy::Instance(), "method");
116 ACL::Prototype
ACLLocalIP::RegistryProtoype(&ACLLocalIP::RegistryEntry_
, "localip");
117 ACLLocalIP
ACLLocalIP::RegistryEntry_
;
118 ACL::Prototype
ACLLocalPort::RegistryProtoype(&ACLLocalPort::RegistryEntry_
, "localport");
119 ACLStrategised
<int> ACLLocalPort::RegistryEntry_(new ACLIntRange
, ACLLocalPortStrategy::Instance(), "localport");
120 ACL::Prototype
ACLMyPortName::RegistryProtoype(&ACLMyPortName::RegistryEntry_
, "myportname");
121 ACLStrategised
<const char *> ACLMyPortName::RegistryEntry_(new ACLStringData
, ACLMyPortNameStrategy::Instance(), "myportname");
122 ACL::Prototype
ACLPeerName::RegistryProtoype(&ACLPeerName::RegistryEntry_
, "peername");
123 ACLStrategised
<const char *> ACLPeerName::RegistryEntry_(new ACLStringData
, ACLPeerNameStrategy::Instance(), "peername");
124 ACL::Prototype
ACLPeerName::RegexRegistryProtoype(&ACLPeerName::RegexRegistryEntry_
, "peername_regex");
125 ACLStrategised
<char const *> ACLPeerName::RegexRegistryEntry_(new ACLRegexData
, ACLPeerNameStrategy::Instance(), "peername_regex");
126 ACL::Prototype
ACLProtocol::RegistryProtoype(&ACLProtocol::RegistryEntry_
, "proto");
127 ACLStrategised
<AnyP::ProtocolType
> ACLProtocol::RegistryEntry_(new ACLProtocolData
, ACLProtocolStrategy::Instance(), "proto");
128 ACL::Prototype
ACLRandom::RegistryProtoype(&ACLRandom::RegistryEntry_
, "random");
129 ACLRandom
ACLRandom::RegistryEntry_("random");
130 ACL::Prototype
ACLReferer::RegistryProtoype(&ACLReferer::RegistryEntry_
, "referer_regex");
131 ACLStrategised
<char const *> ACLReferer::RegistryEntry_(new ACLRegexData
, ACLRequestHeaderStrategy
<HDR_REFERER
>::Instance(), "referer_regex");
132 ACL::Prototype
ACLReplyMIMEType::RegistryProtoype(&ACLReplyMIMEType::RegistryEntry_
, "rep_mime_type");
133 ACLStrategised
<char const *> ACLReplyMIMEType::RegistryEntry_(new ACLRegexData
, ACLReplyHeaderStrategy
<HDR_CONTENT_TYPE
>::Instance(), "rep_mime_type");
134 ACL::Prototype
ACLRequestMIMEType::RegistryProtoype(&ACLRequestMIMEType::RegistryEntry_
, "req_mime_type");
135 ACLStrategised
<char const *> ACLRequestMIMEType::RegistryEntry_(new ACLRegexData
, ACLRequestHeaderStrategy
<HDR_CONTENT_TYPE
>::Instance(), "req_mime_type");
136 ACL::Prototype
ACLSourceDomain::LiteralRegistryProtoype(&ACLSourceDomain::LiteralRegistryEntry_
, "srcdomain");
137 ACLStrategised
<char const *> ACLSourceDomain::LiteralRegistryEntry_(new ACLDomainData
, ACLSourceDomainStrategy::Instance(), "srcdomain");
138 ACL::Prototype
ACLSourceDomain::RegexRegistryProtoype(&ACLSourceDomain::RegexRegistryEntry_
, "srcdom_regex");
139 ACLStrategised
<char const *> ACLSourceDomain::RegexRegistryEntry_(new ACLRegexData
,ACLSourceDomainStrategy::Instance() ,"srcdom_regex");
140 ACL::Prototype
ACLSourceIP::RegistryProtoype(&ACLSourceIP::RegistryEntry_
, "src");
141 ACLSourceIP
ACLSourceIP::RegistryEntry_
;
142 ACL::Prototype
ACLTime::RegistryProtoype(&ACLTime::RegistryEntry_
, "time");
143 ACLStrategised
<time_t> ACLTime::RegistryEntry_(new ACLTimeData
, ACLTimeStrategy::Instance(), "time");
144 ACL::Prototype
ACLUrl::RegistryProtoype(&ACLUrl::RegistryEntry_
, "url_regex");
145 ACLStrategised
<char const *> ACLUrl::RegistryEntry_(new ACLRegexData
, ACLUrlStrategy::Instance(), "url_regex");
146 ACL::Prototype
ACLUrlLogin::RegistryProtoype(&ACLUrlLogin::RegistryEntry_
, "urllogin");
147 ACLStrategised
<char const *> ACLUrlLogin::RegistryEntry_(new ACLRegexData
, ACLUrlLoginStrategy::Instance(), "urllogin");
148 ACL::Prototype
ACLUrlPath::LegacyRegistryProtoype(&ACLUrlPath::RegistryEntry_
, "pattern");
149 ACL::Prototype
ACLUrlPath::RegistryProtoype(&ACLUrlPath::RegistryEntry_
, "urlpath_regex");
150 ACLStrategised
<char const *> ACLUrlPath::RegistryEntry_(new ACLRegexData
, ACLUrlPathStrategy::Instance(), "urlpath_regex");
151 ACL::Prototype
ACLUrlPort::RegistryProtoype(&ACLUrlPort::RegistryEntry_
, "port");
152 ACLStrategised
<int> ACLUrlPort::RegistryEntry_(new ACLIntRange
, ACLUrlPortStrategy::Instance(), "port");
155 ACL::Prototype
ACLSslError::RegistryProtoype(&ACLSslError::RegistryEntry_
, "ssl_error");
156 ACLStrategised
<const Ssl::CertErrors
*> ACLSslError::RegistryEntry_(new ACLSslErrorData
, ACLSslErrorStrategy::Instance(), "ssl_error");
157 ACL::Prototype
ACLCertificate::UserRegistryProtoype(&ACLCertificate::UserRegistryEntry_
, "user_cert");
158 ACLStrategised
<X509
*> ACLCertificate::UserRegistryEntry_(new ACLCertificateData (Ssl::GetX509UserAttribute
, "*"), ACLCertificateStrategy::Instance(), "user_cert");
159 ACL::Prototype
ACLCertificate::CARegistryProtoype(&ACLCertificate::CARegistryEntry_
, "ca_cert");
160 ACLStrategised
<X509
*> ACLCertificate::CARegistryEntry_(new ACLCertificateData (Ssl::GetX509CAAttribute
, "*"), ACLCertificateStrategy::Instance(), "ca_cert");
161 ACL::Prototype
ACLServerCertificate::X509FingerprintRegistryProtoype(&ACLServerCertificate::X509FingerprintRegistryEntry_
, "server_cert_fingerprint");
162 ACLStrategised
<X509
*> ACLServerCertificate::X509FingerprintRegistryEntry_(new ACLCertificateData(Ssl::GetX509Fingerprint
, "-sha1", true), ACLServerCertificateStrategy::Instance(), "server_cert_fingerprint");
166 ACL::Prototype
ACLARP::RegistryProtoype(&ACLARP::RegistryEntry_
, "arp");
167 ACLARP
ACLARP::RegistryEntry_("arp");
168 ACL::Prototype
ACLEui64::RegistryProtoype(&ACLEui64::RegistryEntry_
, "eui64");
169 ACLEui64
ACLEui64::RegistryEntry_("eui64");
173 ACL::Prototype
ACLIdent::UserRegistryProtoype(&ACLIdent::UserRegistryEntry_
, "ident");
174 ACLIdent
ACLIdent::UserRegistryEntry_(new ACLUserData
, "ident");
175 ACL::Prototype
ACLIdent::RegexRegistryProtoype(&ACLIdent::RegexRegistryEntry_
, "ident_regex" );
176 ACLIdent
ACLIdent::RegexRegistryEntry_(new ACLRegexData
, "ident_regex");
180 ACL::Prototype
ACLProxyAuth::UserRegistryProtoype(&ACLProxyAuth::UserRegistryEntry_
, "proxy_auth");
181 ACLProxyAuth
ACLProxyAuth::UserRegistryEntry_(new ACLUserData
, "proxy_auth");
182 ACL::Prototype
ACLProxyAuth::RegexRegistryProtoype(&ACLProxyAuth::RegexRegistryEntry_
, "proxy_auth_regex" );
183 ACLProxyAuth
ACLProxyAuth::RegexRegistryEntry_(new ACLRegexData
, "proxy_auth_regex");
185 ACL::Prototype
ACLMaxUserIP::RegistryProtoype(&ACLMaxUserIP::RegistryEntry_
, "max_user_ip");
186 ACLMaxUserIP
ACLMaxUserIP::RegistryEntry_("max_user_ip");
189 ACL::Prototype
ACLTag::RegistryProtoype(&ACLTag::RegistryEntry_
, "tag");
190 ACLStrategised
<const char *> ACLTag::RegistryEntry_(new ACLStringData
, ACLTagStrategy::Instance(), "tag");
192 ACL::Prototype
Acl::AnyOf::RegistryProtoype(&Acl::AnyOf::RegistryEntry_
, "any-of");
193 Acl::AnyOf
Acl::AnyOf::RegistryEntry_
;
195 ACL::Prototype
Acl::AllOf::RegistryProtoype(&Acl::AllOf::RegistryEntry_
, "all-of");
196 Acl::AllOf
Acl::AllOf::RegistryEntry_
;
198 ACL::Prototype
ACLNote::RegistryProtoype(&ACLNote::RegistryEntry_
, "note");
199 ACLStrategised
<HttpRequest
*> ACLNote::RegistryEntry_(new ACLNoteData
, ACLNoteStrategy::Instance(), "note");
202 ACL::Prototype
ACLAdaptationService::RegistryProtoype(&ACLAdaptationService::RegistryEntry_
, "adaptation_service");
203 ACLStrategised
<const char *> ACLAdaptationService::RegistryEntry_(new ACLAdaptationServiceData
, ACLAdaptationServiceStrategy::Instance(), "adaptation_service");