Note that donations done through Zwiebelfreunde e.V. can't be checked automatically
[privoxy.git] / filters.h
1 #ifndef FILTERS_H_INCLUDED
2 #define FILTERS_H_INCLUDED
3 #define FILTERS_H_VERSION "$Id: filters.h,v 1.45 2013/11/24 14:23:28 fabiankeil 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_actions', `filter_popups', `forward_url'
12  *                   `ij_untrusted_url', `intercept_url', `re_process_buffer',
13  *                   `show_proxy_args', and `trust_url'
14  *
15  * Copyright   :  Written by and Copyright (C) 2001-2010 the
16  *                Privoxy team. http://www.privoxy.org/
17  *
18  *                Based on the Internet Junkbuster originally written
19  *                by and Copyright (C) 1997 Anonymous Coders and
20  *                Junkbusters Corporation.  http://www.junkbusters.com
21  *
22  *                This program is free software; you can redistribute it
23  *                and/or modify it under the terms of the GNU General
24  *                Public License as published by the Free Software
25  *                Foundation; either version 2 of the License, or (at
26  *                your option) any later version.
27  *
28  *                This program is distributed in the hope that it will
29  *                be useful, but WITHOUT ANY WARRANTY; without even the
30  *                implied warranty of MERCHANTABILITY or FITNESS FOR A
31  *                PARTICULAR PURPOSE.  See the GNU General Public
32  *                License for more details.
33  *
34  *                The GNU General Public License should be included with
35  *                this file.  If not, you can view it at
36  *                http://www.gnu.org/copyleft/gpl.html
37  *                or write to the Free Software Foundation, Inc., 59
38  *                Temple Place - Suite 330, Boston, MA  02111-1307, USA.
39  *
40  *********************************************************************/
41
42
43 #include "project.h"
44
45 /*
46  * ACL checking
47  */
48 #ifdef FEATURE_ACL
49 extern int block_acl(const struct access_control_addr *dst, const struct client_state *csp);
50 extern int acl_addr(const char *aspec, struct access_control_addr *aca);
51 #endif /* def FEATURE_ACL */
52
53 /*
54  * Interceptors
55  */
56 extern struct http_response *block_url(struct client_state *csp);
57 extern struct http_response *redirect_url(struct client_state *csp);
58 #ifdef FEATURE_TRUST
59 extern struct http_response *trust_url(struct client_state *csp);
60 #endif /* def FEATURE_TRUST */
61
62 /*
63  * Request inspectors
64  */
65 #ifdef FEATURE_TRUST
66 extern int is_untrusted_url(const struct client_state *csp);
67 #endif /* def FEATURE_TRUST */
68 #ifdef FEATURE_IMAGE_BLOCKING
69 extern int is_imageurl(const struct client_state *csp);
70 #endif /* def FEATURE_IMAGE_BLOCKING */
71 extern int connect_port_is_forbidden(const struct client_state *csp);
72
73 /*
74  * Determining applicable actions
75  */
76 extern void get_url_actions(struct client_state *csp,
77                             struct http_request *http);
78 extern void apply_url_actions(struct current_action_spec *action,
79                               struct http_request *http,
80                               struct url_actions *b);
81
82 extern struct re_filterfile_spec *get_filter(const struct client_state *csp,
83                                              const char *requested_name,
84                                              enum filter_type requested_type);
85
86 /*
87  * Determining parent proxies
88  */
89 extern const struct forward_spec *forward_url(struct client_state *csp,
90                                               const struct http_request *http);
91
92 /*
93  * Content modification
94  */
95 extern char *execute_content_filters(struct client_state *csp);
96 extern char *execute_single_pcrs_command(char *subject, const char *pcrs_command, int *hits);
97 extern char *rewrite_url(char *old_url, const char *pcrs_command);
98 extern char *get_last_url(char *subject, const char *redirect_mode);
99
100 extern pcrs_job *compile_dynamic_pcrs_job_list(const struct client_state *csp, const struct re_filterfile_spec *b);
101
102 extern int content_requires_filtering(struct client_state *csp);
103 extern int content_filters_enabled(const struct current_action_spec *action);
104 extern int filters_available(const struct client_state *csp);
105
106 /*
107  * Handling Max-Forwards:
108  */
109 extern struct http_response *direct_response(struct client_state *csp);
110
111 /*
112  * Revision control strings from this header and associated .c file
113  */
114 extern const char filters_rcs[];
115 extern const char filters_h_rcs[];
116
117 #endif /* ndef FILTERS_H_INCLUDED */
118
119 /*
120   Local Variables:
121   tab-width: 3
122   end:
123 */