Rewrote the innards of ssplit() to be easier to understand,
[privoxy.git] / filters.h
1 #ifndef _FILTERS_H
2 #define _FILTERS_H
3 #define FILTERS_H_VERSION "$Id: filters.h,v 1.4 2001/05/26 15:26:15 jongfoster Exp $"
4 /*********************************************************************
5  *
6  * File        :  $Source: /cvsroot/ijbswa/current/filters.h,v $
7  *
8  * Purpose     :  Declares functions to parse/crunch headers and pages.
9  *                Functions declared include:
10  *                   `acl_addr', `add_stats', `block_acl', `block_imageurl',
11  *                   `block_url', `url_permissions', `domaincmp', `dsplit',
12  *                   `filter_popups', `forward_url'
13  *                   `ij_untrusted_url', `intercept_url', `re_process_buffer',
14  *                   `show_proxy_args', and `trust_url'
15  *
16  * Copyright   :  Written by and Copyright (C) 2001 the SourceForge
17  *                IJBSWA team.  http://ijbswa.sourceforge.net
18  *
19  *                Based on the Internet Junkbuster originally written
20  *                by and Copyright (C) 1997 Anonymous Coders and 
21  *                Junkbusters Corporation.  http://www.junkbusters.com
22  *
23  *                This program is free software; you can redistribute it 
24  *                and/or modify it under the terms of the GNU General
25  *                Public License as published by the Free Software
26  *                Foundation; either version 2 of the License, or (at
27  *                your option) any later version.
28  *
29  *                This program is distributed in the hope that it will
30  *                be useful, but WITHOUT ANY WARRANTY; without even the
31  *                implied warranty of MERCHANTABILITY or FITNESS FOR A
32  *                PARTICULAR PURPOSE.  See the GNU General Public
33  *                License for more details.
34  *
35  *                The GNU General Public License should be included with
36  *                this file.  If not, you can view it at
37  *                http://www.gnu.org/copyleft/gpl.html
38  *                or write to the Free Software Foundation, Inc., 59
39  *                Temple Place - Suite 330, Boston, MA  02111-1307, USA.
40  *
41  * Revisions   :
42  *    $Log: filters.h,v $
43  *    Revision 1.4  2001/05/26 15:26:15  jongfoster
44  *    ACL feature now provides more security by immediately dropping
45  *    connections from untrusted hosts.
46  *
47  *    Revision 1.3  2001/05/22 18:46:04  oes
48  *
49  *    - Enabled filtering banners by size rather than URL
50  *      by adding patterns that replace all standard banner
51  *      sizes with the "Junkbuster" gif to the re_filterfile
52  *
53  *    - Enabled filtering WebBugs by providing a pattern
54  *      which kills all 1x1 images
55  *
56  *    - Added support for PCRE_UNGREEDY behaviour to pcrs,
57  *      which is selected by the (nonstandard and therefore
58  *      capital) letter 'U' in the option string.
59  *      It causes the quantifiers to be ungreedy by default.
60  *      Appending a ? turns back to greedy (!).
61  *
62  *    - Added a new interceptor ijb-send-banner, which
63  *      sends back the "Junkbuster" gif. Without imagelist or
64  *      MSIE detection support, or if tinygif = 1, or the
65  *      URL isn't recognized as an imageurl, a lame HTML
66  *      explanation is sent instead.
67  *
68  *    - Added new feature, which permits blocking remote
69  *      script redirects and firing back a local redirect
70  *      to the browser.
71  *      The feature is conditionally compiled, i.e. it
72  *      can be disabled with --disable-fast-redirects,
73  *      plus it must be activated by a "fast-redirects"
74  *      line in the config file, has its own log level
75  *      and of course wants to be displayed by show-proxy-args
76  *      Note: Boy, all the #ifdefs in 1001 locations and
77  *      all the fumbling with configure.in and acconfig.h
78  *      were *way* more work than the feature itself :-(
79  *
80  *    - Because a generic redirect template was needed for
81  *      this, tinygif = 3 now uses the same.
82  *
83  *    - Moved GIFs, and other static HTTP response templates
84  *      to project.h
85  *
86  *    - Some minor fixes
87  *
88  *    - Removed some >400 CRs again (Jon, you really worked
89  *      a lot! ;-)
90  *
91  *    Revision 1.2  2001/05/20 01:21:20  jongfoster
92  *    Version 2.9.4 checkin.
93  *    - Merged popupfile and cookiefile, and added control over PCRS
94  *      filtering, in new "permissionsfile".
95  *    - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
96  *      file error you now get a message box (in the Win32 GUI) rather
97  *      than the program exiting with no explanation.
98  *    - Made killpopup use the PCRS MIME-type checking and HTTP-header
99  *      skipping.
100  *    - Removed tabs from "config"
101  *    - Moved duplicated url parsing code in "loaders.c" to a new funcition.
102  *    - Bumped up version number.
103  *
104  *    Revision 1.1.1.1  2001/05/15 13:58:52  oes
105  *    Initial import of version 2.9.3 source tree
106  *
107  *
108  *********************************************************************/
109 \f
110
111 #include "project.h"
112
113 #ifdef __cplusplus
114 extern "C" {
115 #endif
116
117 #ifdef ACL_FILES
118 extern int block_acl(struct access_control_addr *dst, struct client_state *csp);
119 extern int acl_addr(char *aspec, struct access_control_addr *aca);
120 #endif /* def ACL_FILES */
121
122 extern char *block_url(struct http_request *http, struct client_state *csp);
123 #ifdef TRUST_FILES
124 extern char *trust_url(struct http_request *http, struct client_state *csp);
125 #endif /* def TRUST_FILES */
126 extern char *intercept_url(struct http_request *http, struct client_state *csp);
127 extern char *redirect_url(struct http_request *http, struct client_state *csp);
128
129 #if defined(DETECT_MSIE_IMAGES) || defined(USE_IMAGE_LIST)
130 extern int block_imageurl(struct http_request *http, struct client_state *csp);
131 #endif /* defined(DETECT_MSIE_IMAGES) || defined(USE_IMAGE_LIST) */
132
133 #ifdef USE_IMAGE_LIST
134 extern int block_imageurl_using_imagelist(struct http_request *http, struct client_state *csp);
135 #endif /* def USE_IMAGE_LIST */
136
137 extern int url_permissions(struct http_request *http, struct client_state *csp);
138 extern const struct gateway *forward_url(struct http_request *http, struct client_state *csp);
139
140 extern struct url_spec dsplit(char *domain);
141 extern int domaincmp(struct url_spec *pattern, struct url_spec *fqdn);
142
143 extern char *show_proxy_args(struct http_request *http, struct client_state *csp);
144 extern char *ijb_send_banner(struct http_request *http, struct client_state *csp);
145
146 #ifdef TRUST_FILES
147 extern char *ij_untrusted_url(struct http_request *http, struct client_state *csp);
148 #endif /* def TRUST_FILES */
149
150 #ifdef STATISTICS
151 extern char *add_stats(char *s);
152 #endif /* def STATISTICS */
153
154 #ifdef PCRS
155 extern char *re_process_buffer(struct client_state *csp);
156 #endif /* def PCRS */
157
158 /* Revision control strings from this header and associated .c file */
159 extern const char filters_rcs[];
160 extern const char filters_h_rcs[];
161
162 #ifdef __cplusplus
163 } /* extern "C" */
164 #endif
165
166 #endif /* ndef _FILTERS_H */
167
168 /*
169   Local Variables:
170   tab-width: 3
171   end:
172 */