Add match-all.action to the files section.
[privoxy.git] / doc / source / privoxy-man-page.sgml
1 <!--
2  File        :  $Source: /cvsroot/ijbswa/current/doc/source/privoxy-man-page.sgml,v $
3
4  Purpose     :  Manual Page
5                 This file belongs into
6                 ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
7                 
8  $Id: privoxy-man-page.sgml,v 2.24 2009/02/12 16:08:26 fabiankeil Exp $
9
10  Copyright (C) 2001-2009 Privoxy Developers http://www.privoxy.org/
11  See LICENSE.
12
13  ========================================================================
14  NOTE: Please read developer-manual/documentation.html before touching 
15  anything in this, or other Privoxy documentation. 
16  ========================================================================
17
18  Doc NOTES: This is some tricky markup! There are some quirks
19  to how this markup is handled. It is not always so co-operative.
20  Please don't change the markup unless you can verify the changes 
21  will improve finished output! 
22  
23  literallayout tags are particularly sensitive to where they are placed.
24  The 'replaceable' and 'command' tags are used here somewhat unconventionally,
25  since it seems to generate the proper formatting (at least for me :).
26
27  Create man page: 'make man'
28
29  Requires docbook2man (short perl script), see CVS
30  http://sources.redhat.com/docbook-tools/. Also requires openjade and SGMLSpm
31  perl module. 
32  
33  For man page references, see:
34  http://www.linuxdoc.org/HOWTO/mini/DocBook-Install/using.html
35  http://docbook.org/tdg/en/html/ch02.html#making-refentry
36
37 -->
38 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN"[
39 <!entity % dummy "IGNORE"> 
40 <!entity p-intro SYSTEM "privoxy.sgml">
41 <!entity seealso SYSTEM "seealso.sgml">
42 <!entity copyright SYSTEM "copyright.sgml">
43 <!entity license SYSTEM "license.sgml">
44 <!entity authors SYSTEM "p-authors.sgml">
45 <!entity p-version "3.0.11">
46 <!entity p-status "stable">
47 <!entity % p-not-stable "IGNORE">
48 <!entity % p-stable "INCLUDE">
49 <!entity % p-text "IGNORE">           <!-- define we are not a text only doc -->
50 <!entity % p-authors-formal "IGNORE"> <!-- exclude additional formating      -->
51 <!entity my-copy "(C)">               <!-- db2man barfs on copyright symbol  -->
52 ]>
53
54 <refentry id="privoxy">
55 <refentryinfo>
56  <date>2009-02-15</date>
57 </refentryinfo>
58 <refmeta>
59  <refentrytitle>privoxy</refentrytitle> 
60  <manvolnum>1</manvolnum>
61  <refmiscinfo>
62   Privoxy &p-version;<![%p-not-stable;[ &p-status;]]>
63  </refmiscinfo>
64 </refmeta>
65
66 <refnamediv>
67  <refname><application>privoxy</application></refname>
68  <refpurpose>Privacy Enhancing Proxy</refpurpose>
69 </refnamediv>
70
71 <refsynopsisdiv>
72  <cmdsynopsis> 
73   <command>privoxy</command>
74   <arg><option>--help</option></arg>
75   <arg><option>--version</option></arg>
76   <arg><option>--no-daemon</option></arg>
77   <arg><option>--pidfile </option><replaceable class="parameter">pidfile</replaceable></arg>  
78   <arg><option>--user </option><replaceable class="parameter">user[.group]</replaceable></arg> 
79   <arg><option>--chroot</option></arg>
80   <arg><option>--pre-chroot-nslookup </option><replaceable class="parameter">hostname</replaceable></arg> 
81   <arg><replaceable class="parameter">configfile</replaceable></arg>        
82  </cmdsynopsis>
83
84 </refsynopsisdiv>
85
86
87 <!--   ~~~~~       New section      ~~~~~     -->
88 <refsect1><title>Options</title>
89  <para>
90   <command>Privoxy</command> may be invoked with the following command line
91   options:
92  </para>
93
94  <variablelist>                                          
95   <varlistentry>
96     <term>--help</term>
97       <listitem>
98        <para>
99          Print brief usage info and exit.
100         </para>
101       </listitem>
102   </varlistentry>
103
104   <varlistentry>
105     <term>--version</term>
106       <listitem>
107        <para>
108          Print version info and exit.
109         </para>
110       </listitem>
111   </varlistentry>
112
113   <varlistentry>
114     <term>--no-daemon</term>
115      <listitem>
116       <para>
117         Don't  become  a daemon, i.e. don't fork and become process group
118         leader, don't detach from controlling tty, and do all logging there.
119       </para>
120     </listitem>
121   </varlistentry>
122
123   <varlistentry>
124     <term>--pidfile <replaceable class="parameter">pidfile</replaceable></term>
125      <listitem>
126       <para>
127         On startup, write the process ID to <replaceable class="parameter">pidfile</replaceable>.
128         Delete the <replaceable class="parameter">pidfile</replaceable> on exit.
129         Failure to create or delete the <replaceable class="parameter">pidfile</replaceable>
130         is non-fatal. If no <command>--pidfile</command> option is given, no PID file will be used.
131       </para>
132     </listitem>
133   </varlistentry>
134
135   <varlistentry>
136     <term>--user <replaceable class="parameter">user[.group]</replaceable></term>
137      <listitem>
138       <para>
139        <!-- Note: replaceable is maybe the wrong tag, but generates  -->
140        <!-- correct looking man output.                              -->
141        After (optionally) writing the PID file, assume the user ID of
142        <replaceable class="parameter">user</replaceable> and the GID of
143        <replaceable class="parameter">group</replaceable>, or, if the optional
144        <replaceable class="parameter">group</replaceable> was not given, the default group of
145        <replaceable class="parameter">user</replaceable>. Exit if the privileges are not
146        sufficient to do so.
147      </para>
148     </listitem>
149   </varlistentry>
150   <varlistentry>
151     <term>--chroot</term>
152      <listitem>
153       <para>
154        Before changing to the user ID given in the --user option, chroot to
155        that user's home directory, i.e. make the kernel pretend to the
156        <command>Privoxy</command> process that the directory tree starts
157        there. If set up carefully, this can limit the impact of possible
158        vulnerabilities in <command>Privoxy</command> to the files contained in
159        that hierarchy. 
160       </para>
161     </listitem>
162   </varlistentry>
163   <varlistentry>
164     <term>--pre-chroot-nslookup <replaceable class="parameter">hostname</replaceable></term>
165      <listitem>
166       <para>
167         Initialize the resolver library using <replaceable class="parameter">hostname</replaceable>
168         before chroot'ing. On some systems this reduces the number of files
169         that must be copied into the chroot tree.
170      </para>
171     </listitem>
172   </varlistentry>
173  </variablelist>
174
175  <para>
176   If the <filename>configfile</filename> is not specified on  the  command  line,
177   <command>Privoxy</command>  will  look for a file named
178   <filename>config</filename> in the current directory . If no
179   <filename>configfile</filename> is found, <command>Privoxy</command> will 
180   fail to start.
181  </para>
182
183 </refsect1>
184
185
186 <!--   ~~~~~       New section      ~~~~~     -->
187 <refsect1><title>Description</title>
188 <!-- Include privoxy.sgml boilerplate: -->
189  &p-intro;
190 <!-- end boilerplate -->
191 </refsect1>
192
193
194 <!--   ~~~~~       New section      ~~~~~     -->
195 <refsect1><title>Installation and Usage</title>
196 <para>
197  Browsers can either be individually configured to use
198  <command>Privoxy</command> as a HTTP proxy (recommended),
199  or <command>Privoxy</command> can be combined with a packet
200  filter to build an intercepting proxy
201  (see <filename>config</filename>).  The default setting is  for
202  localhost,  on port  8118 (configurable in the main config file).  To set the
203  HTTP proxy in Netscape and Mozilla, go through:  <command>Edit</command>;
204  <command>Preferences</command>;  <command>Advanced</command>;
205  <command>Proxies</command>;  <command>Manual Proxy Configuration</command>;
206  <command>View</command>. 
207 </para>
208 <para>
209  For Firefox, go through: <command>Tools</command>; 
210  <command>Options</command>; <command>General</command>;
211  <command>Connection Settings</command>;
212  <command>Manual Proxy Configuration</command>. 
213 </para>
214 <para>
215  For Internet Explorer, go through: <command>Tools</command>; 
216  <command>Internet Properties</command>; <command>Connections</command>;
217  <command>LAN Settings</command>. 
218 </para>
219 <para>
220  The Secure (SSL) Proxy should also be set to the same values, otherwise
221  https: URLs will not be proxied. Note: <command>Privoxy</command> can only
222  proxy HTTP and HTTPS traffic. Do not try it with FTP or other protocols.
223  HTTPS presents some limitations, and not all features will work with HTTPS 
224  connections.
225 </para>
226
227 <para>
228  For other browsers, check the documentation.
229 </para>
230 </refsect1>
231
232
233 <!--   ~~~~~       New section      ~~~~~     -->
234 <refsect1><title>Configuration</title>
235 <para>
236  <command>Privoxy</command> can be configured with the various configuration
237  files. The default configuration files are: <filename>config</filename>,
238  <filename>default.filter</filename>, and
239  <filename>default.action</filename>. <filename>user.action</filename> should 
240  be used for locally defined exceptions to the default rules of
241  <filename>default.action</filename>, and <filename>user.filter</filename> for 
242  locally defined filters. These are well commented.  On Unix
243  and Unix-like systems, these are located in
244  <filename>/etc/privoxy/</filename> by default. 
245 </para>
246 <para> 
247  <command>Privoxy</command> uses the concept of <command>actions</command> 
248  in order to manipulate the data stream between the browser and remote sites.
249  There are various actions available with specific functions for such things 
250  as blocking web sites, managing cookies, etc. These actions can be invoked
251  individually or combined, and used against individual URLs, or groups of URLs 
252  that can be defined using wildcards and regular expressions. The result is
253  that the user has greatly enhanced control and freedom.
254 </para>
255 <para>
256  The actions list (ad blocks, etc) can also be configured with your
257  web browser at <ulink url="http://config.privoxy.org/">http://config.privoxy.org/</ulink> 
258  (assuming the configuration allows it).
259  <command>Privoxy's</command> configuration parameters  can also  be viewed at
260  the same page. In addition, <command>Privoxy</command> can be toggled on/off.
261  This is an internal page, and does not require Internet access.
262 </para>
263 <para>
264  See the <ulink
265  url="http://www.privoxy.org/user-manual/"><citetitle>User Manual</citetitle></ulink> for a detailed
266  explanation of installation, general usage, all configuration options, new
267  features and notes on upgrading.
268 </para>
269 </refsect1>
270
271
272 <!--   ~~~~~       New section      ~~~~~     -->
273 <refsect1><title>Sample Configuration</title>
274 <para>
275  A brief example of what a simple <filename>default.action</filename>
276  configuration might look like:
277 </para>
278
279 <literallayout>
280  # Define a few useful custom aliases for later use
281  {{alias}}
282
283  # Useful aliases that combine more than one action
284  +crunch-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
285  -crunch-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
286  +block-as-image = +block +handle-as-image
287
288  # Fragile sites should have the minimum changes
289  fragile     = -block -deanimate-gifs -fast-redirects -filter \
290                -hide-referer -prevent-cookies
291
292  ## Turn some actions on ################################
293  ## NOTE: Actions are off by default, unless explictily turned on 
294  ## otherwise with the '+' operator.
295
296 { \
297 +change-x-forwarded-for{block} \
298 +deanimate-gifs{last} \
299 +filter{refresh-tags} \
300 +filter{img-reorder} \
301 +filter{banners-by-size} \
302 +filter{webbugs} \
303 +filter{jumping-windows} \
304 +filter{ie-exploits} \
305 +hide-from-header{block} \
306 +hide-referrer{conditional-block} \
307 +session-cookies-only \
308 +set-image-blocker{pattern} \
309 }
310 / # '/' Match *all* URL patterns
311
312  
313  # Block all URLs that match these patterns
314  { +block }
315   ad.
316   ad[sv].
317   .*ads.
318   banner?.
319   /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
320   .hitbox.com 
321   media./.*(ads|banner)
322
323  # Block, and treat these URL patterns as if they were 'images'.
324  # We would expect these to be ads.
325  { +block-as-image }
326   .ad.doubleclick.net
327   .a[0-9].yimg.com/(?:(?!/i/).)*$
328   ad.*.doubleclick.net
329
330  # Make exceptions for these harmless ones that would be 
331  # caught by our +block patterns just above.
332  { -block }
333   adsl.
334   adobe.
335   advice.
336   .*downloads.
337   # uploads or downloads
338   /.*loads
339 </literallayout>
340
341 <para>
342  Then for a <filename>user.action</filename>, we would put local,
343  narrowly defined exceptions:
344 </para>
345
346 <literallayout>
347  # Re-define aliases as needed here
348  {{alias}}
349
350  # Useful aliases
351  -crunch-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
352  
353  # Set personal exceptions to the policies in default.action #######
354
355  # Sites where we want persistent cookies, so allow *all* cookies
356  { -crunch-cookies -session-cookies-only }
357   .redhat.com
358   .sun.com
359   .msdn.microsoft.com
360  
361  # These sites break easily. Use our "fragile" alias here.
362  { fragile }
363   .forbes.com
364   mybank.example.com
365
366  # Replace example.com's style sheet with one of my choosing
367  { +redirect{http://localhost/css-replacements/example.com.css} }
368   .example.com/stylesheet.css
369
370 </literallayout>
371
372 <para>
373  See the comments in the configuration files themselves, or the 
374  <citetitle>User Manual</citetitle>
375  for full explanations of the above syntax, and other <command>Privoxy</command>
376  configuration options.
377 </para>
378
379 </refsect1>
380
381
382 <!--   ~~~~~       New section      ~~~~~     -->
383 <refsect1><title>Files</title>
384 <!-- this is a cheesy way to do this, but WTF. -->
385 <literallayout> 
386  <filename>/usr/sbin/privoxy</filename>
387  <filename>/etc/privoxy/config</filename>
388  <filename>/etc/privoxy/match-all.action</filename>
389  <filename>/etc/privoxy/default.action</filename>
390  <filename>/etc/privoxy/user.action</filename>
391  <filename>/etc/privoxy/default.filter</filename>
392  <filename>/etc/privoxy/user.filter</filename>
393  <filename>/etc/privoxy/trust</filename>
394  <filename>/etc/privoxy/templates/*</filename>
395  <filename>/var/log/privoxy/logfile</filename>
396 </literallayout>
397
398 <para>
399  Various other files should be included, but may vary depending on platform
400  and build configuration. Additional documentation should be included in the local
401  documentation directory.
402 </para>
403
404 </refsect1>
405
406
407 <!--   ~~~~~       New section      ~~~~~     -->
408 <refsect1><title>Signals</title>
409 <para>
410  <!-- command tag is used here to get proper looking format  -->
411  <command>Privoxy</command> terminates on the <command>SIGINT</command>,
412  <command>SIGTERM</command> and <command>SIGABRT</command> signals. Log
413  rotation scripts may cause a re-opening of the logfile by sending a 
414  <command>SIGHUP</command> to <command>Privoxy</command>. Note that unlike
415  other daemons,  <command>Privoxy</command> does not need to be made aware of
416  config file changes by <command>SIGHUP</command> -- it will detect them
417  automatically. 
418 </para>
419
420 </refsect1>
421
422 <!--   ~~~~~       New section      ~~~~~     -->
423 <refsect1><title>Notes</title>
424 <![%p-not-stable;[
425 <para>
426  This is a &p-status; version of <command>Privoxy</command>. Not 
427  all features are well tested.
428 </para>]]>
429 <para>
430  Please see the <citetitle>User Manual</citetitle> on how to contact the
431  developers, for feature requests, reporting problems, and other questions.
432 </para>
433
434 </refsect1>
435
436 <!--   ~~~~~       New section      ~~~~~     -->
437 <refsect1><title>See Also</title>
438 <!-- Include seealso.sgml boilerplate: -->
439  &seealso;
440 <!-- end boilerplate -->
441 </refsect1>
442
443 <!--   ~~~~~       New section      ~~~~~     -->
444 <refsect1><title>Development Team</title>
445 <!-- Include p-authors.sgml boilerplate: -->
446  &authors;
447 <!-- end boilerplate -->
448 </refsect1>
449
450 <!--   ~~~~~       New section      ~~~~~     -->
451 <refsect1><title>Copyright and License</title>
452
453 <refsect2><title>Copyright</title>
454 <!-- Include copyright.sgml boilerplate: -->
455  &copyright;
456 <!-- end boilerplate -->
457 </refsect2>
458
459 <refsect2><title>License</title>
460 <!-- Include license.sgml boilerplate: -->
461  &license;
462 <!-- end boilerplate -->
463 </refsect2>
464 </refsect1>
465
466 </refentry>