]> git.ipfire.org Git - thirdparty/squid.git/blame - src/acl/UrlLogin.cc
SourceFormat Enforcement
[thirdparty/squid.git] / src / acl / UrlLogin.cc
CommitLineData
9d35fe37 1/*
bde978a6 2 * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
9d35fe37 3 *
bbc27441
AJ
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.
9d35fe37
AJ
7 */
8
bbc27441
AJ
9/* DEBUG: section 28 Access Control */
10
b6f08f5c 11#include "squid.h"
9d35fe37
AJ
12#include "acl/Checklist.h"
13#include "acl/RegexData.h"
602d9612 14#include "acl/UrlLogin.h"
9d35fe37
AJ
15#include "HttpRequest.h"
16#include "rfc1738.h"
17
18int
92d6986d 19ACLUrlLoginStrategy::match(ACLData<char const *> * &data, ACLFilledChecklist *checklist, ACLFlags &)
9d35fe37 20{
92d6986d
AJ
21 if (checklist->request->url.userInfo().isEmpty()) {
22 debugs(28, 5, "URL has no user-info details. cannot match");
23 return 0; // nothing can match
24 }
25
26 static char str[MAX_URL]; // should be big enough for a single URI segment
27
28 const SBuf::size_type len = checklist->request->url.userInfo().copy(str, sizeof(str)-1);
29 str[len] = '\0';
30 rfc1738_unescape(str);
31 return data->match(str);
9d35fe37
AJ
32}
33
34ACLUrlLoginStrategy *
35ACLUrlLoginStrategy::Instance()
36{
37 return &Instance_;
38}
39
40ACLUrlLoginStrategy ACLUrlLoginStrategy::Instance_;
f53969cc 41