]> git.ipfire.org Git - thirdparty/squid.git/blob - src/ExternalACLEntry.h
Completed protos.h split and code refactoring
[thirdparty/squid.git] / src / ExternalACLEntry.h
1
2 /*
3 * DEBUG: section 82 External ACL
4 * AUTHOR: Henrik Nordstrom, MARA Systems AB
5 *
6 * SQUID Web Proxy Cache http://www.squid-cache.org/
7 * ----------------------------------------------------------
8 *
9 * The contents of this file is Copyright (C) 2002 by MARA Systems AB,
10 * Sweden, unless otherwise is indicated in the specific function. The
11 * author gives his full permission to include this file into the Squid
12 * software product under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * Squid is the result of efforts by numerous individuals from
17 * the Internet community; see the CONTRIBUTORS file for full
18 * details. Many organizations have provided support for Squid's
19 * development; see the SPONSORS file for full details. Squid is
20 * Copyrighted (C) 2001 by the Regents of the University of
21 * California; see the COPYRIGHT file for full details. Squid
22 * incorporates software developed and/or copyrighted by other
23 * sources; see the CREDITS file for full details.
24 *
25 * This program is free software; you can redistribute it and/or modify
26 * it under the terms of the GNU General Public License as published by
27 * the Free Software Foundation; either version 2 of the License, or
28 * (at your option) any later version.
29 *
30 * This program is distributed in the hope that it will be useful,
31 * but WITHOUT ANY WARRANTY; without even the implied warranty of
32 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33 * GNU General Public License for more details.
34 *
35 * You should have received a copy of the GNU General Public License
36 * along with this program; if not, write to the Free Software
37 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
38 *
39 * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org>
40 */
41
42 #ifndef SQUID_EXTERNALACLENTRY_H
43 #define SQUID_EXTERNALACLENTRY_H
44
45 #include "acl/Acl.h"
46 #include "cbdata.h"
47
48 /******************************************************************
49 * ExternalACLEntryData
50 * Core data that ExternalACLEntry manages.
51 * Not meant to be used as remote storage at any point:
52 * stack or static or composition use only.
53 */
54
55 class ExternalACLEntryData
56 {
57
58 public:
59 ExternalACLEntryData() : result(ACCESS_DUNNO) {}
60
61 allow_t result;
62 #if USE_AUTH
63 // TODO use an AuthUser to hold this info
64 String user;
65 String password;
66 #endif
67 String message;
68 String tag;
69 String log;
70 };
71
72 /*******************************************************************
73 * external_acl cache entry
74 * Used opaqueue in the interface
75 */
76
77 class ExternalACLEntry: public hash_link
78 {
79
80 public:
81 void *operator new (size_t bytesToAllocate);
82 void operator delete (void *address);
83
84 ExternalACLEntry();
85 ~ExternalACLEntry();
86
87 void update(ExternalACLEntryData const &);
88 dlink_node lru;
89 allow_t result;
90 time_t date;
91 #if USE_AUTH
92 String user;
93 String password;
94 #endif
95 String message;
96 String tag;
97 String log;
98 external_acl *def;
99
100 private:
101 CBDATA_CLASS(ExternalACLEntry);
102 };
103
104 typedef class ExternalACLEntry external_acl_entry;
105
106 #endif