~clint-fewbar/ubuntu/precise/squid3/ignore-sighup-early

« back to all changes in this revision

Viewing changes to src/auth/Config.h

  • Committer: Bazaar Package Importer
  • Author(s): Luigi Gangitano
  • Date: 2010-05-04 11:15:49 UTC
  • mfrom: (1.3.1 upstream)
  • mto: (20.3.1 squeeze) (21.2.1 sid)
  • mto: This revision was merged to the branch mainline in revision 21.
  • Revision ID: james.westby@ubuntu.com-20100504111549-1apjh2g5sndki4te
Tags: upstream-3.1.3
ImportĀ upstreamĀ versionĀ 3.1.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * $Id$
 
3
 *
 
4
 *
 
5
 * SQUID Web Proxy Cache          http://www.squid-cache.org/
 
6
 * ----------------------------------------------------------
 
7
 *
 
8
 *  Squid is the result of efforts by numerous individuals from
 
9
 *  the Internet community; see the CONTRIBUTORS file for full
 
10
 *  details.   Many organizations have provided support for Squid's
 
11
 *  development; see the SPONSORS file for full details.  Squid is
 
12
 *  Copyrighted (C) 2001 by the Regents of the University of
 
13
 *  California; see the COPYRIGHT file for full details.  Squid
 
14
 *  incorporates software developed and/or copyrighted by other
 
15
 *  sources; see the CREDITS file for full details.
 
16
 *
 
17
 *  This program is free software; you can redistribute it and/or modify
 
18
 *  it under the terms of the GNU General Public License as published by
 
19
 *  the Free Software Foundation; either version 2 of the License, or
 
20
 *  (at your option) any later version.
 
21
 *
 
22
 *  This program is distributed in the hope that it will be useful,
 
23
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
24
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
25
 *  GNU General Public License for more details.
 
26
 *
 
27
 *  You should have received a copy of the GNU General Public License
 
28
 *  along with this program; if not, write to the Free Software
 
29
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
 
30
 *
 
31
 */
 
32
#ifndef SQUID_AUTHCONFIG_H
 
33
#define SQUID_AUTHCONFIG_H
 
34
 
 
35
class AuthUserRequest;
 
36
class StoreEntry;
 
37
class HttpReply;
 
38
class HttpRequest;
 
39
 
 
40
/* for http_hdr_type parameters-by-value */
 
41
#include "HttpHeader.h"
 
42
 
 
43
 
 
44
/**
 
45
 \ingroup AuthAPI
 
46
 \par
 
47
 * I am the configuration for an auth scheme.
 
48
 * Currently each scheme has only one instance of me,
 
49
 * but this may change.
 
50
 \par
 
51
 * This class is treated like a ref counted class.
 
52
 * If the children ever stop being singletons, implement the
 
53
 * ref counting...
 
54
 */
 
55
class AuthConfig
 
56
{
 
57
 
 
58
public:
 
59
    static AuthUserRequest *CreateAuthUser (const char *proxy_auth);
 
60
 
 
61
    static AuthConfig *Find(const char *proxy_auth);
 
62
    AuthConfig() {}
 
63
 
 
64
    virtual ~AuthConfig() {}
 
65
 
 
66
    /**
 
67
     * Used by squid to determine whether the auth module has successfully initialised itself with the current configuration.
 
68
     *
 
69
     \retval true       Authentication Module loaded and running.
 
70
     \retval false      No Authentication Module loaded.
 
71
     */
 
72
    virtual bool active() const = 0;
 
73
 
 
74
    /**
 
75
     * new decode API: virtual factory pattern
 
76
     \par
 
77
     * Responsible for decoding the passed authentication header, creating or
 
78
     * linking to a AuthUser object and for storing any needed details to complete
 
79
     * authentication in AuthUserRequest::authenticate().
 
80
     *
 
81
     \param proxy_auth  Login Pattern to parse.
 
82
     \retval *          Details needed to authenticate.
 
83
     */
 
84
    virtual AuthUserRequest *decode(char const *proxy_auth) = 0;
 
85
 
 
86
    /**
 
87
     * squid is finished with this config, release any unneeded resources.
 
88
     * If a singleton, delete will not occur. if not a singleton (future),
 
89
     * delete will occur when no references are held.
 
90
     *
 
91
     \todo we need a 'done for reconfigure' and a 'done permanently' concept.
 
92
     */
 
93
    virtual void done() = 0;
 
94
 
 
95
    /**
 
96
     * The configured function is used to see if the auth module has been given valid
 
97
     * parameters and is able to handle authentication requests.
 
98
     *
 
99
     \retval true       Authentication Module configured ready for use.
 
100
     \retval false      Not configured or Configuration Error.
 
101
     *                  No other module functions except Shutdown/Dump/Parse/FreeConfig will be called by Squid.
 
102
     */
 
103
    virtual bool configured() const = 0;
 
104
 
 
105
    /**
 
106
     * Responsible for writing to the StoreEntry the configuration parameters that a user
 
107
     * would put in a config file to recreate the running configuration.
 
108
     */
 
109
    virtual void dump(StoreEntry *, const char *, AuthConfig *) = 0;
 
110
 
 
111
    /** add headers as needed when challenging for auth */
 
112
    virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *) = 0;
 
113
    /** prepare to handle requests */
 
114
    virtual void init(AuthConfig *) = 0;
 
115
    /** expose any/all statistics to a CacheManager */
 
116
    virtual void registerWithCacheManager(void);
 
117
    /** parse config options */
 
118
    virtual void parse(AuthConfig *, int, char *) = 0;
 
119
    /** the http string id */
 
120
    virtual const char * type() const = 0;
 
121
};
 
122
 
 
123
#endif /* SQUID_AUTHCONFIG_H */