-Add short section to Filter Files to tie in with +filter action.
[privoxy.git] / doc / source / user-manual.sgml
index 9ad3f1a..15ac7f6 100644 (file)
-<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
+<!entity % dummy "IGNORE"> 
+<!entity supported SYSTEM "supported.sgml">
+<!entity newfeatures SYSTEM "newfeatures.sgml">
+<!entity p-intro SYSTEM "privoxy.sgml">
+<!entity seealso SYSTEM "seealso.sgml">
+<!entity buildsource SYSTEM "buildsource.sgml">
+<!entity contacting SYSTEM "contacting.sgml">
+<!entity history SYSTEM "history.sgml">
+<!entity copyright SYSTEM "copyright.sgml">
+<!entity p-version "2.9.14">
+<!entity p-status "beta">
+<!entity % p-not-stable "INCLUDE">
+<!entity % p-stable "IGNORE">
+<!entity % p-text "IGNORE">        <!-- define we are not a text only doc -->
+<!entity % p-doc "INCLUDE">        <!-- and we are a formal doc           -->
+<!entity % p-readme "IGNORE">
+<!entity % p-config "IGNORE">
+<!entity % p-supp-userman "IGNORE"> <!-- Omit some from supported.sgml    -->
+]>
 <!--
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  File        :  $Source: /cvsroot/ijbswa/current/doc/source/user-manual.sgml,v $
 
  Purpose     :  user manual
                 This file belongs into
                 ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
                 
- $Id: user-manual.sgml,v 1.2 2001/09/13 15:27:40 swa Exp $
+ $Id: user-manual.sgml,v 1.95 2002/04/26 17:23:29 swa Exp $
 
  Written by and Copyright (C) 2001 the SourceForge
- IJBSWA team.  http://ijbswa.sourceforge.net
+ Privoxy team. http://www.privoxy.org/
 
  Based on the Internet Junkbuster originally written
  by and Copyright (C) 1997 Anonymous Coders and 
  Junkbusters Corporation.  http://www.junkbusters.com
+
+
+ ========================================================================
+ NOTE: Please read developer-manual/documentation.html before touching 
+ anything in this, or other Privoxy documentation.
+ ========================================================================
+
 -->
 
 <article id="index">
 <artheader>
-<title>Junkbuster User Manual</title>
+<title>Privoxy User Manual</title>
 
-<pubdate>$Id: user-manual.sgml,v 1.2 2001/09/13 15:27:40 swa Exp $</pubdate>
+<pubdate>$Id: user-manual.sgml,v 1.95 2002/04/26 17:23:29 swa Exp $</pubdate>
 
 <authorgroup>
  <author>
   <affiliation>
-   <orgname>By: Junkbuster Developers</orgname>
+   <orgname>By: Privoxy Developers</orgname>
    </affiliation>
  </author>
 </authorgroup>
 
 <abstract>
+<![%dummy;[
  <para>
-    The user manual gives the users information on how to install and
-configure the Internet Junkbuster. The Internet Junkbuster is an application
-that provides privacy and security to the user of the world wide web.
+ <comment>
+  This is here to keep vim syntax file from breaking :/
+  If I knew enough to fix it, I would.
+  PLEASE DO NOT REMOVE! HB: hal@foobox.net
+ </comment>
  </para>
+]]>
+
  <para>
-You can find the latest version of the user manual at  <ulink url="http://ijbswa.sourceforge.net/user-manual/">http://ijbswa.sourceforge.net/user-manual/</ulink>.
- </para>
+  The user manual gives users information on how to install, configure and use
+  <ulink
+  url="http://www.privoxy.org/"><application>Privoxy</application></ulink>.
+  </para>
+
+<!-- Include privoxy.sgml boilerplate: -->
+ &p-intro;
+<!-- end privoxy.sgml -->
 
  <para>
-  Feel free to send a note to the developers at <email>ijbswa-developers@lists.sourceforge.net</email>.
- </para>
+  You can find the latest version of the user manual at  <ulink
+  url="http://www.privoxy.org/user-manual/">http://www.privoxy.org/user-manual/</ulink>.
+  Please see the <ulink url="contact.html">Contact section</ulink> on how to
+  contact the developers.
+  </para>
+
+<!--   <para> -->
+<!--    Feel free to send a note to the developers at <email>ijbswa-developers@lists.sourceforge.net</email>. -->
+<!--   </para> -->
 </abstract>
+
 </artheader>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect1 id="introduction"><title>Introduction</title>
-<para>To be filled.
-</para>
+<sect1 id="intro" label=""><title></title>
+<!-- dummy section to force TOC on page by itself -->
+<!-- DO NOT REMOVE! please ;) -->
+<para> </para>
 </sect1>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect1 id="quickstart"><title>Quickstart to Using Junkbuster</title>
-<para>To be filled.
+<sect1 label="1" id="introduction"><title>Introduction</title>
+<para>
+ This documentation is included with the current &p-status; version of
+ <application>Privoxy</application>, v.&p-version;<![%p-not-stable;[, 
+ and is mostly complete at this point. The most up to date reference for the
+ time being is still the comments in the source files and in the individual
+ configuration files. Development of version 3.0 is currently nearing
+ completion, and includes many significant changes and enhancements over
+ earlier versions. The target release date for
+ stable v3.0 is <quote>soon</quote> ;-)]]>.
+</para>
+
+<!-- include only in non-stable versions -->
+<![%p-not-stable;[
+<para>
+ Since this is a &p-status; version, not all new features are well tested. This
+ documentation may be slightly out of sync as a result (especially with 
+ CVS sources). And there <emphasis>may be</emphasis> bugs, though hopefully
+ not many! 
+</para>
+]]>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="features"><title>Features</title>
+<para>
+ In addition to <application>Internet Junkbuster's</application> traditional
+ features of ad and banner blocking and cookie management,
+ <application>Privoxy</application> provides new features<![%p-not-stable;[,
+ some of them currently under development]]>:
 </para>
+<!-- Include newfeatures.sgml boilerplate here: -->
+ &newfeatures;
+<!-- end boilerplate -->
+</sect2>
+
 </sect1>
 
+<!--  ~  End section  ~  -->
+
+
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect1 id="installation"><title>Installation</title>
-<para>To be filled.
+
+<para>
+ <application>Privoxy</application> is available both in convenient pre-compiled
+ packages for a wide range of operating systems, and as raw source code.
+ For most users, we recommend using the packages, which can be downloaded from our
+ <ulink url="http://sourceforge.net/projects/ijbswa/">Privoxy Project
+ Page</ulink>. For installing and compiling the source code, please look 
+ into our Developer Manual.
+</para>
+
+<para>
+ If you like to live on the bleeding edge and are not afraid of using
+ possibly unstable development versions, you can check out the up-to-the-minute
+ version directly from <ulink url="http://sourceforge.net/cvs/?group_id=11118">the
+ CVS repository</ulink> or simply download <ulink
+ url="http://cvs.sourceforge.net/cvstarballs/ijbswa-cvsroot.tar.gz">the nightly CVS
+ tarball.</ulink> Again, we refer you to the Developer Manual.
+</para>
+
+<!-- Include supported.sgml boilerplate -->
+ &supported; 
+<!-- end boilerplate -->
+
+<para>
+ Note: If you have a previous <application>Junkbuster</application> or
+ <application>Privoxy</application> installation on your system, you
+ will need to remove it.  Some platforms do this for you as part 
+ of their installation procedure. (See below for your platform).
+</para>
+
+<para>
+ In any case <emphasis>be sure to backup your old configuration
+ if it is valuable to you.</emphasis> See the
+ <link linkend="upgradersnote">note to upgraders</link> section
+ below.
+</para>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="installation-pack-rpm"><title>Red Hat and SuSE RPMs</title>
+
+<para>
+ RPMs can be installed with <literal>rpm -Uvh privoxy-&p-version;-1.rpm</literal>,
+ and will use <filename>/etc/privoxy</filename> for the location 
+ of configuration files.
+</para>
+
+<para>
+ Note that on Red Hat, <application>Privoxy</application> will
+ <emphasis>not</emphasis> be automatically started on system boot. You will
+ need to enable that using <command>chkconfig</command>,
+ <command>ntsysv</command>, or similar methods. Note that SuSE will 
+automatically start Privoxy in the boot process.
+</para>
+
+<para>
+ If you have problems with failed dependencies, try rebuilding the SRC RPM: 
+ <literal>rpm --rebuild privoxy-&p-version;-1.src.rpm;</literal>. This 
+ will use your locally installed libraries and RPM version. 
+</para>
+
+<para>
+ Also note that if you have a <application>Junkbuster</application> RPM installed
+ on your system, you need to remove it first, because the packages conflict.
+ Otherwise, RPM will try to remove <application>Junkbuster</application>
+ automatically, before installing <application>Privoxy</application>.
 </para>
+</sect2>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect2 id="installation-rh"><title>Red Hat</title>
-<para>To be filled.
+<sect2 id="installation-deb"><title>Debian</title>
+<para>
+ FIXME.
 </para>
 </sect2>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect2 id="installation-suse"><title>SuSE</title>
-<para>To be filled.
+<sect2 id="installation-pack-win"><title>Windows</title>
+
+<para>
+ Just double-click the installer, which will guide you through
+ the installation process. You will find the configuration files
+ in the same directory as you installed Privoxy in. We do not
+ use the registry of Windows. 
 </para>
 </sect2>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect2 id="installation-win"><title>Windows</title>
-<para>To be filled.
+<sect2 id="installation-pack-bintgz"><title>Solaris, NetBSD, FreeBSD, HP-UX</title>
+
+<para>
+ Create a new directory, <literal>cd</literal> to it, then unzip and
+ untar the archive. For the most part, you'll have to figure out where
+ things go. FIXME.
 </para>
 </sect2>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect2 id="installation-other"><title>Other</title>
-<para>To be filled.
+<sect2 id="installation-os2"><title>OS/2</title>
+
+<para>
+ First, make sure that no previous installations of
+ <application>Junkbuster</application> and / or 
+ <application>Privoxy</application> are left on your
+ system. You can do this by 
+</para>
+
+<para>
+ Then, just double-click the WarpIN self-installing archive, which will
+ guide you through the installation process. A shadow of the
+ <application>Privoxy</application> executable will be placed in your
+ startup folder so it will start automatically whenever OS/2 starts.
+</para>
+
+<para>
+ The directory you choose to install <application>Privoxy</application>
+ into will contain all of the configuration files.
 </para>
 </sect2>
 
-</sect1>
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="installation-mac"><title>Max OSX</title>
+<para>
+ Unzip the downloaded package (you can either double-click on the file
+ in the finder, or on the desktop if you downloaded it there).  Then,
+ double-click on the package installer icon and follow the installation
+ process.
+ <application>Privoxy</application> will be installed in the subdirectory
+ <literal>/Applications/Privoxy.app</literal>.
+ <application>Privoxy</application> will set itself up to start 
+ automatically on system bring-up via
+ <literal>/System/Library/StartupItems/Privoxy</literal>.
+</para>
+</sect2>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect1 id="configuration"><title>Configuration</title>
-<para>To be filled.
+<sect2 id="installation-amiga"><title>AmigaOS</title>
+<para>
+ Copy and then unpack the <filename>lha</filename> archive to a suitable location. 
+ All necessary files will be installed into <application>Privoxy</application>
+ directory, including all configuration and log files. To uninstall, just 
+ remove this directory.
+</para>
+<para>
+ Start <application>Privoxy</application> (with RUN &lt;&gt;NIL:) in your
+ <filename>startnet</filename> script (AmiTCP), in
+ <filename>s:user-startup</filename> (RoadShow), as startup program in your
+ startup script (Genesis), or as startup action (Miami and MiamiDx). 
+ <application>Privoxy</application> will automatically quit when you quit your
+ TCP/IP stack (just ignore the harmless warning your TCP/IP stack may display that
+ <application>Privoxy</application> is still running).
 </para>
+</sect2>
 </sect1>
 
+<!--  ~  End section  ~  -->
+
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect1 id="contact"><title>Contact the developers</title>
-<para>To be filled. mention the support forums as the primary channel of
-communication (bugs, feature requests, etc.)
+<sect1 id="upgradersnote">
+<title>Note to Upgraders</title>
+<para>
+ There are very significant changes from older versions of 
+ <application>Junkbuster</application> to the current
+ <application>Privoxy</application>. Configuration is substantially 
+ changed. <application>Junkbuster 2.0.x</application> and earlier 
+ configuration files will not migrate. The functionality of the old
+ <filename>blockfile</filename>, <filename>cookiefile</filename> and
+ <filename>imagelist</filename>, are now combined into the
+ <quote>actions files</quote>.  <filename>default.action</filename>, 
+ is the main actions file. Local exceptions should best be put into 
+ <filename>user.action</filename>.
+</para>
+<para>
+ A <quote>filter file</quote> (typically <filename>default.filter</filename>)
+ is new as of <application>Privoxy 2.9.x</application>, and provides some
+ of the new sophistication (explained below). <filename>config</filename> is 
+ much the same as before.
+</para>
+<para>
+ If upgrading from a 2.0.x version, you will have to use the new config 
+ files, and possibly adapt any personal rules from your older files.
+ When porting personal rules over from the old <filename>blockfile</filename>
+ to the new actions files, please note that even the pattern syntax has
+ changed. If upgrading from 2.9.x development versions, it is still
+ recommended to use the new configuration files.
+</para>
+<para>
+ A quick list of things to be aware of before upgrading: 
+</para>
+
+<para>
+ <itemizedlist>
+
+ <listitem>
+  <para>
+   The default listening port is now 8118 due to a conflict with another 
+   service (NAS).
+  </para>
+ </listitem>  
+ <listitem>
+  <para>  
+    Some installers may remove earlier versions completely. Save any 
+    important configuration files!
+  </para>
+ </listitem>
+ <listitem>
+  <para>
+   <application>Privoxy</application> is controllable with a web browser 
+   at the special URL: <ulink
+   url="http://config.privoxy.org/">http://config.privoxy.org/</ulink>
+   (Shortcut: <ulink url="http://p.p/">http://p.p/</ulink>). Many
+   aspects of configuration can be done here, including temporarily disabling
+   <application>Privoxy</application>.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   The primary configuration file for cookie management, ad and banner 
+   blocking, and many other aspects of <application>Privoxy</application>
+   configuration is in the <quote>actions</quote> files. It is strongly
+   recommended to become familiar with the new actions concept below, 
+   before modifying these files. Locally defined rules 
+   should go into <filename>user.action</filename>.
+  </para>
+ </listitem> 
+  <listitem>
+  <para>
+<!-- I think it is best to keep this somewhat vague, in case  -->
+<!-- the situation changes under our feet. -->   
+   Some installers may not automatically start
+   <application>Privoxy</application> after installation.
+  </para>
+ </listitem> 
+
+ </itemizedlist>
 </para>
 </sect1>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect1 id="copyright"><title>Copyright and History</title>
-<para>To be filled.
+<sect1 id="quickstart"><title>Quickstart to Using <application>Privoxy</application></title>
+<para>
+ <itemizedlist>
+
+ <listitem>
+  <para>
+  Install <application>Privoxy</application>. See the section <link linkend="installation">Installing</link>.
+  </para>
+ </listitem>  
+
+ <listitem>
+  <para>
+  Start <application>Privoxy</application>. See the section <link linkend="startup">Starting <application>Privoxy</application></link>.
+  </para>
+ </listitem>  
+
+ <listitem>
+  <para>
+  Change your browser's configuration to use the proxy <literal>localhost</literal> on port
+  <literal>8118</literal>. See the section <link linkend="startup">Starting <application>Privoxy</application></link>.
+  </para>
+ </listitem>  
+
+ <listitem>
+  <para>
+  Enjoy surfing with enhanced comfort and privacy. Please see the section
+  <link linkend="contact">Contacting the Developers</link> on how to report
+  bugs or problems with websites or to get help. You may want to change the
+  file <filename>user.action</filename> to further tweak your new browsing
+  experience.
+  </para>
+ </listitem>  
+
+ </itemizedlist>
 </para>
+
 </sect1>
 
 <!--   ~~~~~       New section      ~~~~~     -->
-<sect1 id="seealso"><title>See also</title>
-<para>To be filled.
+<sect1 id="startup">
+<title>Starting <application>Privoxy</application></title>
+<para>
+ Before launching <application>Privoxy</application> for the first time, you 
+ will want to configure your browser(s) to use <application>Privoxy</application>
+ as a HTTP and HTTPS proxy. The default is localhost for the proxy address,
+ and port 8118 (earlier versions used port 8000). This is the one
+ configuration step that must be done! 
+</para>
+<para> 
+ With <application>Netscape</application> (and
+ <application>Mozilla</application>), this can be set under <literal>Edit
+ -&gt; Preferences -&gt; Advanced -&gt; Proxies -&gt; HTTP Proxy</literal>.
+ For <application>Internet Explorer</application>: <literal>Tools -&gt;
+ Internet Properties -&gt; Connections -&gt; LAN Setting</literal>. Then,
+ check <quote>Use Proxy</quote> and fill in the appropriate info (Address:
+ localhost, Port: 8118). Include if HTTPS proxy support too.
+</para>
+
+<para>
+ After doing this, flush your browser's disk and memory caches to force a
+ re-reading of all pages and to get rid of any ads that may be cached. You 
+ are now ready to start enjoying the benefits of using
+ <application>Privoxy</application>!
+</para>
+
+
+<para>
+ <application>Privoxy</application> is typically started by specifying the
+ main configuration file to be used on the command line. Example Unix startup
+ command:
+</para>
+
+<para>
+ <screen>
+ # /usr/sbin/privoxy /etc/privoxy/config
+</screen>
+</para>
+
+<para>
+ See <link linkend="cmdoptions">below</link> for other command line options.
+</para>
+
+<para>
+ An init script is provided for SuSE and Red Hat.
+</para>
+
+<para>
+ For for SuSE: <command>rcprivoxy start</command>
+</para>
+
+<para>
+ For Red Hat and Debian: <command>/etc/rc.d/init.d/privoxy start</command>
+</para>
+
+
+<para>
+ If no configuration file is specified on the command line,
+ <application>Privoxy</application> will look for a file named
+ <filename>config</filename> in the current directory. Except on Win32 where
+ it will try <filename>config.txt</filename>. If no file is specified on the
+ command line and no default configuration file can be found, 
+ <application>Privoxy</application> will fail to start.
+</para>
+
+
+<para>
+ The included default configuration files should give a reasonable starting
+ point. Most of the per site configuration is done in the
+ <quote>actions</quote> files. These are where various cookie actions are
+ defined, ad and banner blocking, and other aspects of
+ <application>Privoxy</application> configuration. There are several such
+ files included, with varying levels of aggressiveness. 
+</para>
+
+<para>
+ You will probably want to keep an eye out for sites for which you may prefer
+ persistent cookies, and add these to your actions configuration as needed. By
+ default, most of these will be accepted only during the current browser
+ session (aka <quote>session cookies</quote>), unless you add them to the
+ configuration. If you want the browser to handle this instead, you will need
+ to edit <filename>user.action</filename> (or through the web based interface)
+ and disable this feature. If you use more than one browser, it would make
+ more sense to let <application>Privoxy</application> handle this. In which
+ case, the browser(s) should be set to accept all cookies.
+</para>
+
+<para>
+ Another feature where you will probably want to define exceptions for trusted
+ sites is the popup-killing (through the <literal>+popup</literal> and
+ <literal>+filter{popups}</literal> actions), because your favorite shopping,
+ banking, or leisure site may need popups (explained below). 
+</para>
+
+<para>
+ <application>Privoxy</application> is HTTP/1.1 compliant,  but not all of
+ the optional 1.1 features are as yet supported. In the unlikely event that
+ you experience inexplicable problems with browsers that use HTTP/1.1 per default
+ (like <application>Mozilla</application> or recent versions of I.E.), you might
+ try to force HTTP/1.0 compatibility. For Mozilla, look under <literal>Edit -&gt;
+ Preferences -&gt; Debug -&gt; Networking</literal>.
+ Alternatively, set the <quote>+downgrade-http-version</quote> config option in
+ <filename>default.action</filename> which will downgrade your browser's HTTP
+ requests from HTTP/1.1 to HTTP/1.0 before processing them.
+</para>
+
+<para>
+ After running <application>Privoxy</application> for a while, you can 
+ start to fine tune the configuration to suit your personal, or site, 
+ preferences and requirements. There are many, many aspects that can 
+ be customized. <quote>Actions</quote> 
+ can be adjusted by pointing your browser to 
+ <ulink url="http://config.privoxy.org/">http://config.privoxy.org/</ulink>
+ (shortcut: <ulink url="http://p.p/">http://p.p/</ulink>), 
+ and then follow the link to <quote>View &#38; Change the Current Configuration</quote>. 
+ (This is an internal page and does not require Internet access.)
+</para>
+
+<para>
+ In fact, various aspects of <application>Privoxy</application>
+ configuration can be viewed from this page, including 
+ current configuration parameters, source code version numbers, 
+ the browser's request headers, and <quote>actions</quote> that apply 
+ to a given URL. In addition to the actions file 
+ editor mentioned above, <application>Privoxy</application> can also 
+ be turned <quote>on</quote> and <quote>off</quote> (toggled) from this page.
+</para>
+
+<para>
+ If you encounter problems, try loading the page without
+ <application>Privoxy</application>. If that helps, enter the URL where
+ you have the problems into <ulink url="http://p.p/show-url-info">the browser
+ based rule tracing utility</ulink>. See which rules apply and why, and
+ then try turning them off for that site one after the other, until the problem
+ is gone. When you have found the culprit, you might want to turn the rest on
+ again.
+</para>
+
+<para>
+ If the above paragraph sounds gibberish to you, you might want to <ulink
+ url="configuration.html#ACTIONSFILE">read more about the actions concept</ulink>
+ or even dive deep into the <ulink url="appendix.html#ACTIONSANAT">Appendix
+ on actions</ulink>.
+</para>
+
+<para>
+ If you can't get rid of the problem at all, think you've found a bug in
+ Privoxy, want to propose a new feature or smarter rules, please see the 
+ section <ulink url="contact.html"><quote>Contacting the
+ Developers</quote></ulink> below. 
+</para>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="cmdoptions">
+<title>Command Line Options</title>
+<para>
+ <application>Privoxy</application> may be invoked with the following
+ command-line options:
+</para>
+
+<para>
+ <itemizedlist>
+
+ <listitem>
+  <para>
+    <emphasis>--version</emphasis>
+  </para>
+  <para>
+     Print version info and exit. Unix only.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+    <emphasis>--help</emphasis>
+  </para>
+  <para>
+   Print short usage info and exit. Unix only.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   <emphasis>--no-daemon</emphasis>
+  </para>
+  <para>
+   Don't become a daemon, i.e. don't fork and become process group
+   leader, and don't detach from controlling tty. Unix only.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   <emphasis>--pidfile FILE</emphasis>
+  
+  </para>
+  <para>
+   On startup, write the process ID to <emphasis>FILE</emphasis>. Delete the
+   <emphasis>FILE</emphasis> on exit. Failure to create or delete the
+   <emphasis>FILE</emphasis> is non-fatal. If no <emphasis>FILE</emphasis>
+   option is given, no PID file will be used. Unix only.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   <emphasis>--user USER[.GROUP]</emphasis>
+  
+  </para>
+  <para>
+   After (optionally) writing the PID file, assume the user  ID  of
+   <emphasis>USER</emphasis>, and if included the GID of GROUP.  Exit if the
+   privileges are not sufficient to do so. Unix only.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+    <emphasis>configfile</emphasis>
+  </para>
+  <para>
+    If no <emphasis>configfile</emphasis> is included on the command line, 
+    <application>Privoxy</application> will look for a file named 
+    <quote>config</quote> in the current directory (except on Win32 
+    where it will look for <quote>config.txt</quote> instead). Specify 
+    full path to avoid confusion. If no config file is found, 
+    <application>Privoxy</application> will fail to start.
+  </para>
+ </listitem> 
+
+ </itemizedlist>
 </para>
+
+</sect2>
+
 </sect1>
 
- <!--
+<!--  ~  End section  ~  -->
 
- This program is free software; you can redistribute it 
- and/or modify it under the terms of the GNU General
- Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at
- your option) any later version.
 
- This program is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A
- PARTICULAR PURPOSE.  See the GNU General Public
- License for more details.
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect1 id="configuration"><title><application>Privoxy</application> Configuration</title>
+ <para>
+  All <application>Privoxy</application> configuration is stored  
+  in text files. These files can be edited with a text editor.
+  Many important aspects of <application>Privoxy</application> can 
+  also be controlled easily with a web browser.
+ </para>
 
- The GNU General Public License should be included with
- this file.  If not, you can view it at
- http://www.gnu.org/copyleft/gpl.html
- or write to the Free Software Foundation, Inc., 59
- Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
- $Log: user-manual.sgml,v $
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect2>
+<title>Controlling <application>Privoxy</application> with Your Web Browser</title>
+<para>
+ <application>Privoxy</application>'s user interface can be reached through the special 
+ URL <ulink url="http://config.privoxy.org/">http://config.privoxy.org/</ulink>
+ (shortcut: <ulink url="http://p.p/">http://p.p/</ulink>), 
+ which is a built-in page and works without Internet access.
+ You will see the following section:
+
+</para>
+
+<!-- Needs to be put in a table and colorized  -->
+<screen>
+ <msgtext>
+ <bridgehead renderas="sect2">Privoxy Menu</bridgehead>
+
+ <simplelist>
+ <member>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-status">View & change the current configuration</ulink>
+ </member>
+ <member>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-version">View the source code version numbers</ulink>
+ </member>
+ <member>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-request">View the request headers.</ulink>
+ </member>
+ <member>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-url-info">Look up which actions apply to a URL and why</ulink>
+ </member>
+ <member>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/toggle">Toggle Privoxy on or off</ulink>
+ </member>
+ </simplelist>
+ </msgtext>
+</screen>
+
+
+<para>
+ This should be self-explanatory. Note the first item leads to an editor for the
+ <quote>actions list</quote>, which is where the ad, banner, cookie,
+ and URL blocking magic is configured as well as other advanced features of
+ <application>Privoxy</application>. This is an easy way to adjust various
+ aspects of <application>Privoxy</application> configuration. The actions
+ file, and other configuration files, are explained in detail below. 
+</para>
+
+<para>
+ <quote>Toggle Privoxy On or Off</quote> is handy for sites that might 
+ have problems with your current actions and filters. You can in fact use
+ it as a test to see whether it is <application>Privoxy</application> 
+ causing the problem or not. <application>Privoxy</application> continues 
+ to run as a proxy in this case, but all filtering is disabled. There
+ is even a toggle <link linkend="bookmarklets">Bookmarklet</link> offered, so
+ that you can toggle <application>Privoxy</application> with one click from
+ your browser.
+</para>
+
+</sect2>
+
+<!--  ~  End section  ~  -->
+
+
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect2 id="confoverview">
+<title>Configuration Files Overview</title>
+<para>
+ For Unix, *BSD and Linux, all configuration files are located in
+ <filename>/etc/privoxy/</filename> by default. For MS Windows, OS/2, and
+ AmigaOS these are all in the same directory as the 
+ <application>Privoxy</application> executable. <![%p-not-stable;[ The name
+ and number of configuration files has changed from previous versions, and is
+ subject to change as development progresses.]]>
+</para>
+
+<para>
+ The installed defaults provide a reasonable starting point, though 
+ some settings may be aggressive by some standards. For the time being, the
+ principle configuration files are:
+</para>
+
+<para>
+ <itemizedlist>
+
+  <listitem>
+   <para>
+     The main configuration file is named <link linkend="config">config</link>
+     on Linux, Unix, BSD, OS/2, and AmigaOS and <filename>config.txt</filename>
+     on Windows. This is a required file.
+   </para>
+  </listitem> 
+
+  <listitem>
+   <para>
+    <filename>default.action</filename> (the main <link linkend="actions-file">actions file</link>) is used to define
+    the default settings for various <quote>actions</quote> relating to images, banners, 
+    pop-ups, access restrictions, banners and cookies.
+   </para>
+   <para>
+    Multiple actions files may be defined in <filename>config</filename>. These 
+    are processed in the order they are defined. Local customizations and locally 
+    preferred exceptions to the default policies as defined in
+    <filename>default.action</filename> are probably best applied in
+    <filename>user.action</filename>, which should be preserved across
+    upgrades. <filename>standard.action</filename> is also included. This is mostly 
+    for <application>Privoxy's</application> internal use.
+   </para>
+   <para>    
+    There is also a web based editor that can be accessed from
+    <ulink
+    url="http://config.privoxy.org/show-status/">http://config.privoxy.org/show-status/</ulink>
+    (Shortcut: <ulink
+    url="http://p.p/show-status/">http://p.p/show-status/</ulink>) for the
+    various actions files. 
+   </para>
+  </listitem> 
+
+  <listitem>
+   <para>
+    <filename>default.filter</filename> (the <link linkend="filter-file">filter
+    file</link>) can be used to re-write the raw page content, including
+    viewable text as well as embedded HTML and JavaScript, and whatever else
+    lurks on any given web page. The filtering jobs are only pre-defined here;
+    whether to apply them or not is up to the actions files.
+   </para>
+  </listitem> 
+
+ </itemizedlist>
+</para>
+
+<para>
+ All files use the <quote><literal>#</literal></quote> character to denote a
+ comment (the rest of the line will be ignored) angd understand line continuation
+ through placing a backslash ("<literal>\</literal>") as the very last character
+ in a line. If the <literal>#</literal> is preceded by a backslash, it looses
+ its special function. Placing a <literal>#</literal> in front of an otherwise
+ valid configuration line to prevent it from being interpreted is called "commenting
+ out" that line.
+</para>
+
+<para>
+ The actions files and <filename>default.filter</filename> 
+ can use Perl style <link linkend="regex">regular expressions</link> for
+ maximum flexibility. 
+</para>
+
+<para>
+ After making any changes, there is no need to restart
+ <application>Privoxy</application> in order for the changes to take
+ effect. <application>Privoxy</application> detects such changes 
+ automatically. Note, however, that it may take one or two additional
+ requests for the change to take effect. When changing the listening address
+ of <application>Privoxy</application>, these <quote>wake up</quote> requests
+ must obviously be sent to the <emphasis>old</emphasis> listening address.
+</para>
+
+<![%p-not-stable;[
+<para>
+ While under development, the configuration content is subject to change. 
+ The below documentation may not be accurate by the time you read this. 
+ Also, what constitutes a <quote>default</quote> setting, may change, so 
+ please check all your configuration files on important issues.
+</para>
+]]>
+</sect2>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect2 id="config">
+<title>The Main Configuration File</title>
+<para>
+ Again, the main configuration file is named <filename>config</filename> on
+ Linux/Unix/BSD and OS/2, and <filename>config.txt</filename> on Windows.
+ Configuration lines consist of an initial keyword followed by a list of
+ values, all separated by whitespace (any number of spaces or tabs). For
+ example:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>confdir /etc/privoxy</emphasis>
+   </literallayout>
+  </msgtext>
+ </literal> 
+</para>
+
+<para>
+ Assigns the value <literal>/etc/privoxy</literal> to the option
+ <literal>confdir</literal> and thus indicates that the configuration
+ directory is named <quote>/etc/privoxy/</quote>.
+</para>
+
+<para>
+ All options in the config file except for <literal>confdir</literal> and
+ <literal>logdir</literal> are optional. Watch out in the below description
+ for what happens if you leave them unset.
+</para>
+
+<para>
+ The main config file controls all aspects of <application>Privoxy</application>'s
+ operation that are not location dependent (i.e. they apply universally, no matter
+ where you may be surfing).
+</para>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect3 id="conf-log-loc">
+<title>Configuration and Log File Locations</title>
+
+<para>
+ <application>Privoxy</application> can (and normally does) use a number of
+ other files for additional configuration and logging.
+ This section of the configuration file tells <application>Privoxy</application>
+ where to find those other files. 
+</para>
+
+
+<sect4 id="confdir"><title>confdir</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>The directory where the other configuration files are located</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>Path name</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>/etc/privoxy (Unix) <emphasis>or</emphasis> <application>Privoxy</application> installation dir (Windows) </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para><emphasis>Mandatory</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    No trailing <quote><literal>/</literal></quote>, please
+   </para>
+   <para>
+    When development goes modular and multi-user, the blocker, filter, and
+    per-user config will be stored in subdirectories of <quote>confdir</quote>.
+    For now, the configuration directory structure is flat, except for 
+    <filename>confdir/templates</filename>, where the HTML templates for CGI 
+    output reside (e.g. <application>Privoxy's</application> 404 error page). 
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+
+<sect4 id="logdir"><title>logdir</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    The directory where all logging takes place (i.e. where <filename>logfile</filename> and 
+    <filename>jarfile</filename> are located) 
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>Path name</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>/var/log/privoxy (Unix) <emphasis>or</emphasis> <application>Privoxy</application> installation dir (Windows) </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para><emphasis>Mandatory</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    No trailing <quote><literal>/</literal></quote>, please
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="actionsfile"><title>
+actionsfile
+</title>
+<anchor id="default.action">
+<anchor id="standard.action">
+<anchor id="user.action">
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    The <link linkend="actions">actions</link> file(s) to use
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>File name, relative to <literal>confdir</literal></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <simplelist>
+    <member>
+     <msgtext><literallayout>  standard     # Internal purposes, recommended not editing</literallayout></msgtext>
+    </member>
+    <member>
+     <msgtext><literallayout>  default      # Main actions file</literallayout></msgtext>
+    </member>
+    <member>
+     <msgtext><literallayout>  user         # User customizations</literallayout></msgtext>
+    </member>
+   </simplelist>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    No actions are taken at all. Simple neutral proxying. 
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    Multiple <literal>actionsfile</literal> lines are OK and are in fact recommended!
+   </para>
+   <para> 
+    The default values include standard.action, which is used for internal
+    purposes and should be loaded, default.action, which is the
+    <quote>main</quote> actions file maintained by the developers, and
+    <filename>user.action</filename>, where you can make your personal additions.
+   </para>
+   <para> 
+    There is no point in using <application>Privoxy</application> without an actions file.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="filterfile"><title>filterfile</title>
+<anchor id="default.filter">
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    The <link linkend="filter">filter</link> file to use
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>File name, relative to <literal>confdir</literal></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>default.filter (Unix) <emphasis>or</emphasis> default.filter.txt (Windows)</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    No textual content filtering takes place, i.e. all
+    <literal>+filter{<replaceable class="parameter">name</replaceable>}</literal>
+    actions in the actions files are turned off
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    The <quote>default.filter</quote> file contains content modification rules 
+    that use <quote>regular expressions</quote>. These rules permit powerful
+    changes on the content of Web pages, e.g., you could disable your favorite
+    JavaScript annoyances, re-write the actual displayed text, or just have some
+    fun replacing <quote>Microsoft</quote> with <quote>MicroSuck</quote> wherever
+    it appears on a Web page.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="logfile"><title>logfile</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    The log file to use
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>File name, relative to <literal>logdir</literal></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>logfile (Unix) <emphasis>or</emphasis> privoxy.log (Windows)</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    No log file is used, all log messages go to the console (<literal>stderr</literal>).
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    The windows version will additionally log to the console.
+   </para>
+   <para>
+    The logfile is where all logging and error messages are written. The level
+    of detail and number of messages are set with the <literal>debug</literal>
+    option (see below). The logfile can be useful for tracking down a problem with
+    <application>Privoxy</application> (e.g., it's not blocking an ad you
+    think it should block) but in most cases you probably will never look at it.
+   </para>
+   <para>
+    Your logfile will grow indefinitely, and you will probably want to
+    periodically remove it.  On Unix systems, you can do this with a cron job
+    (see <quote>man cron</quote>). For Red Hat, a <command>logrotate</command> 
+    script has been included.
+   </para> 
+   <para>
+    On SuSE Linux systems, you can place a line like <quote>/var/log/privoxy.*
+    +1024k 644 nobody.nogroup</quote> in <filename>/etc/logfiles</filename>, with
+    the effect that cron.daily will automatically archive, gzip, and empty the
+    log, when it exceeds 1M size.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="jarfile"><title>jarfile</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    The file to store intercepted cookies in
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>File name, relative to <literal>logdir</literal></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>jarfile (Unix) <emphasis>or</emphasis> privoxy.jar (Windows)</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Intercepted cookies are not stored at all.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    The jarfile may grow to ridiculous sizes over time.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="trustfile"><title>trustfile</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    The trust file to use
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>File name, relative to <literal>confdir</literal></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para><emphasis>Unset (commented out)</emphasis>. When activated: trust (Unix) <emphasis>or</emphasis> trust.txt (Windows)</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    The whole trust mechanism is turned off.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    The trust mechanism is an experimental feature for building white-lists and should
+    be used with care. It is <emphasis>NOT</emphasis> recommended for the casual user.
+   </para>
+   <para>
+    If you specify a trust file, <application>Privoxy</application> will only allow
+    access to sites that are named in the trustfile. 
+    You can also mark sites as trusted referrers (with <literal>+</literal>), with
+    the effect that access to untrusted sites will be granted, if a link from a
+    trusted referrer was used.
+    The link target will then be added to the <quote>trustfile</quote>.
+    Possible applications include limiting Internet access for children.
+   </para>
+   <para>
+    If you use <literal>+</literal> operator in the trust file, it may grow considerably over time.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+</sect3>
+
+<!--  ~  End section  ~  -->
+
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect3 id="local-set-up">
+<title>Local Set-up Documentation</title>
+
+  <para>
+    If you intend to operate <application>Privoxy</application> for more users
+    that just yourself, it might be a good idea to let them know how to reach
+    you, what you block and why you do that, your policies etc.
+   </para>
+
+<sect4 id="trust-info-url"><title>trust-info-url</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    A URL to be displayed in the error page that users will see if access to an untrusted page is denied.    
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>URL</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>Two example URL are provided</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    No links are displayed on the "untrusted" error page.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    The value of this option only matters if the experimental trust mechanism has been
+    activated. (See <literal>trustfile</literal> above.)
+   </para>
+   <para>
+    If you use the trust mechanism, it is a good idea to write up some on-line
+    documentation about your trust policy and to specify the URL(s) here.
+    Use multiple times for multiple URLs.
+   </para>
+   <para>
+    The URL(s) should be added to the trustfile as well, so users don't end up
+    locked out from the information on why they were locked out in the first place!
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="admin-address"><title>admin-address</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    An email address to reach the proxy administrator.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>Email address</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para><emphasis>Unset</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    No email address is displayed on error pages and the CGI user interface.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+    <para>
+    If both <literal>admin-address</literal> and <literal>proxy-info-url</literal>
+    are unset, the whole "Local Privoxy Support" box on all generated pages will
+    not be shown.
+   </para>  
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="proxy-info-url"><title>proxy-info-url</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    A URL to documentation about the local <application>Privoxy</application> setup,
+    configuration or policies.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>URL</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para><emphasis>Unset</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    No link to local documentation is displayed on error pages and the CGI user interface.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    If both <literal>admin-address</literal> and <literal>proxy-info-url</literal>
+    are unset, the whole "Local Privoxy Support" box on all generated pages will
+    not be shown.
+   </para>  
+   <para>
+    This URL shouldn't be blocked ;-)
+   </para> 
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+</sect3>
+<!--  ~  End section  ~  -->
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect3 id="debugging">
+<title>Debugging</title>
+
+ <para>
+  These options are mainly useful when tracing a problem.
+  Note that you might also want to invoke
+  <application>Privoxy</application> with the <literal>--no-daemon</literal>
+  command line option when debugging.
+ </para>
+
+<sect4 id="debug"><title>debug</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    Key values that determine what information gets logged.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>Integer values</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>12289 (i.e.: URLs plus informational and warning messages)</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Nothing gets logged.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    The available debug levels are:
+   </para>
+   <para>
+    <programlisting>
+  debug         1 # show each GET/POST/CONNECT request
+  debug         2 # show each connection status
+  debug         4 # show I/O status
+  debug         8 # show header parsing
+  debug        16 # log all data into the logfile
+  debug        32 # debug force feature
+  debug        64 # debug regular expression filter 
+  debug       128 # debug fast redirects
+  debug       256 # debug GIF de-animation
+  debug       512 # Common Log Format
+  debug      1024 # debug kill pop-ups
+  debug      4096 # Startup banner and warnings.
+  debug      8192 # Non-fatal errors
+</programlisting>
+   </para>
+   <para>
+    To select multiple debug levels, you can either add them or use
+    multiple <literal>debug</literal> lines.
+   </para>
+   <para>
+    A debug level of 1 is informative because it will show you each request
+    as it happens. <emphasis>1, 4096 and 8192 are highly recommended</emphasis>
+    so that you will notice when things go wrong. The other levels are probably
+    only of interest if you are hunting down a specific problem. They can produce
+    a hell of an output (especially 16).
+    <!-- LOL -->
+   </para>
+   <para>
+    The reporting of <emphasis>fatal</emphasis> errors (i.e. ones which crash 
+    <application>Privoxy</application>) is always on and cannot be disabled.
+   </para>
+   <para>
+    If you want to use CLF (Common Log Format), you should set <quote>debug
+    512</quote> <emphasis>ONLY</emphasis> and not enable anything else.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="single-threaded"><title>single-threaded</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    Whether to run only one server thread
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para><emphasis>None</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para><emphasis>Unset</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Multi-threaded (or, where unavailable: forked) operation, i.e. the ability to
+    serve multiple requests simultaneously.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    This option is only there for debug purposes and you should never
+    need to use it. <emphasis>It will drastically reduce performance.</emphasis>
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+</sect3>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect3 id="access-control">
+<title>Access Control and Security</title>
+
+ <para>
+  This section of the config file controls the security-relevant aspects
+  of <application>Privoxy</application>'s configuration.
+ </para>
+
+<sect4 id="listen-address"><title>listen-address</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    The IP address and TCP port on which <application>Privoxy</application> will
+    listen for client requests.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>[<replaceable class="parameter">IP-Address</replaceable>]:<replaceable class="parameter">Port</replaceable></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>localhost:8118</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Bind to localhost (127.0.0.1), port 8118. This is suitable and recommended for
+    home users who run <application>Privoxy</application> on the same machine as
+    their browser.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    You will need to configure your browser(s) to this proxy address and port.
+   </para>
+   <para>
+    If you already have another service running on port 8118, or if you want to
+    serve requests from other machines (e.g. on your local network) as well, you
+    will need to override the default.
+   </para>
+   <para>
+    If you leave out the IP address, <application>Privoxy</application> will
+    bind to all interfaces (addresses) on your machine and may become reachable
+    from the Internet. In that case, consider using access control lists (ACL's)
+    (see <quote>ACLs</quote> below), or a firewall.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example:</term>
+  <listitem>
+   <para>
+     Suppose you are running <application>Privoxy</application> on
+     a machine which has the address 192.168.0.1 on your local private network
+     (192.168.0.0) and has another outside connection with a different address.
+     You want it to serve requests from inside only:
+   </para>
+   <para>
+    <programlisting>
+  listen-address  192.168.0.1:8118
+</programlisting>
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="toggle"><title>toggle</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    Initial state of "toggle" status
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>1 or 0</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>1</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Act as if toggled on
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    If set to 0, <application>Privoxy</application> will start in
+    <quote>toggled off</quote> mode, i.e. behave like a normal, content-neutral
+    proxy. See <literal>enable-remote-toggle</literal>
+    below. This is not really useful anymore, since toggling is much easier
+    via <ulink url="http://config.privoxy.org/toggle">the web
+    interface</ulink> then via editing the <filename>conf</filename> file.
+   </para>
+   <para>
+    The windows version will only display the toggle icon in the system tray
+    if this option is present.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+
+<sect4 id="enable-remote-toggle"><title>enable-remote-toggle</title>
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    Whether or not the <ulink url="http://config.privoxy.org/toggle">web-based toggle
+    feature</ulink> may be used
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>0 or 1</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>1</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    The web-based toggle feature is disabled.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    When toggled off, <application>Privoxy</application> acts like a normal,
+    content-neutral proxy, i.e. it acts as if none of the actions applied to
+    any URL.
+   </para>
+   <para>
+    For the time being, access to the toggle feature can <emphasis>not</emphasis> be
+    controlled separately by <quote>ACLs</quote> or HTTP authentication,
+    so that everybody who can access <application>Privoxy</application> (see
+    <quote>ACLs</quote> and <literal>listen-address</literal> above) can
+    toggle it for all users. So this option is <emphasis>not recommended</emphasis>
+    for multi-user environments with untrusted users.
+   </para>
+   <para>
+    Note that you must have compiled <application>Privoxy</application> with
+    support for this feature, otherwise this option has no effect. 
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+
+<sect4 id="enable-edit-actions"><title>enable-edit-actions</title>
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    Whether or not the <ulink url="http://config.privoxy.org/show-status">web-based actions
+    file editor</ulink> may be used
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>0 or 1</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>1</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    The web-based actions file editor is disabled.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    For the time being, access to the editor can <emphasis>not</emphasis> be
+    controlled separately by <quote>ACLs</quote> or HTTP authentication,
+    so that everybody who can access <application>Privoxy</application> (see
+    <quote>ACLs</quote> and <literal>listen-address</literal> above) can
+    modify its configuration for all users. So this option is <emphasis>not
+    recommended</emphasis> for multi-user environments with untrusted users.
+   </para>
+   <para>
+    Note that you must have compiled <application>Privoxy</application> with
+    support for this feature, otherwise this option has no effect. 
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="acls"><title>
+ACLs: permit-access and deny-access</title>
+<anchor id="permit-acces">
+<anchor id="deny-acces">
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    Who can access what.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>
+    <replaceable class="parameter">src_addr</replaceable>[/<replaceable class="parameter">src_masklen</replaceable>]
+    [<replaceable class="parameter">dst_addr</replaceable>[/<replaceable class="parameter">dst_masklen</replaceable>]]
+   </para>
+   <para>
+    Where <replaceable class="parameter">src_addr</replaceable> and 
+   <replaceable class="parameter">dst_addr</replaceable> are IP addresses in dotted decimal notation or valid
+    DNS names, and <replaceable class="parameter">src_masklen</replaceable> and
+    <replaceable class="parameter">dst_masklen</replaceable> are subnet masks in CIDR notation, i.e. integer
+    values from 2 to 30 representing the length (in bits) of the network address. The masks and the whole
+    destination part are optional.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para><emphasis>Unset</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Don't restrict access further than implied by <literal>listen-address</literal>
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    Access controls are included at the request of ISPs and systems
+    administrators, and <emphasis>are not usually needed by individual users</emphasis>.
+    For a typical home user, it will normally suffice to ensure that 
+    <application>Privoxy</application> only listens on the localhost or internal (home)
+    network address by means of the <literal>listen-address</literal> option.
+   </para>
+   <para>
+    Please see the warnings in the FAQ that this proxy is not intended to be a substitute
+    for a firewall or to encourage anyone to defer addressing basic security
+    weaknesses.
+   </para>
+   <para>
+    Multiple ACL lines are OK.
+    If any ACLs are specified, then the <application>Privoxy</application>
+    talks only to IP addresses that match at least one <literal>permit-access</literal> line
+    and don't match any subsequent <literal>deny-access</literal> line. In other words, the
+    last match wins, with the default being <literal>deny-access</literal>.
+   </para>
+   <para>
+    If <application>Privoxy</application> is using a forwarder (see <literal>forward</literal> below)
+    for a particular destination URL, the <replaceable class="parameter">dst_addr</replaceable>
+    that is examined is the address of the forwarder and <emphasis>NOT</emphasis> the address
+    of the ultimate target. This is necessary because it may be impossible for the local
+    <application>Privoxy</application> to determine the IP address of the
+    ultimate target (that's often what gateways are used for).
+   </para>
+   <para>
+    You should prefer using IP addresses over DNS names, because the address lookups take
+    time. All DNS names must resolve! You can <emphasis>not</emphasis> use domain patterns
+    like <quote>*.org</quote> or partial domain names. If a DNS name resolves to multiple
+    IP addresses, only the first one is used.
+   </para>
+   <para>
+    Denying access to particular sites by ACL may have undesired side effects
+    if the site in question is hosted on a machine which also hosts other sites.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Examples:</term>
+  <listitem>
+   <para>
+    Explicitly define the default behavior if no ACL and
+    <literal>listen-address</literal> are set: <quote>localhost</quote>
+    is OK. The absence of a <replaceable class="parameter">dst_addr</replaceable> implies that
+    <emphasis>all</emphasis> destination addresses are OK:
+   </para>
+   <para>
+    <screen>
+  permit-access  localhost
+</screen>
+   </para>
+   <para>
+    Allow any host on the same class C subnet as www.privoxy.org access to
+    nothing but www.example.com:
+   </para>
+   <para>
+    <screen>
+  permit-access  www.privoxy.org/24 www.example.com/32
+</screen>
+   </para>
+   <para>
+    Allow access from any host on the 26-bit subnet 192.168.45.64 to anywhere,
+    with the exception that 192.168.45.73 may not access www.dirty-stuff.example.com:
+   </para>
+   <para>
+    <screen>
+  permit-access  192.168.45.64/26
+  deny-access    192.168.45.73    www.dirty-stuff.example.com
+</screen>
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="buffer-limit"><title>buffer-limit</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    Maximum size of the buffer for content filtering.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>Size in Kbytes</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para>4096</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Use a 4MB (4096 KB) limit.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    For content filtering, i.e. the <literal>+filter</literal> and
+    <literal>+deanimate-gif</literal> actions, it is necessary that 
+    <application>Privoxy</application> buffers the entire document body.
+    This can be potentially dangerous, since a server could just keep sending
+    data indefinitely and wait for your RAM to exhaust -- with nasty consequences.
+    Hence this option.
+   </para>
+   <para>
+    When a document buffer size reaches the <literal>buffer-limit</literal>, it is
+    flushed to the client unfiltered and no further attempt to
+    filter the rest of the document is made. Remember that there may be multiple threads
+    running, which might require up to <literal>buffer-limit</literal> Kbytes
+    <emphasis>each</emphasis>, unless you have enabled <quote>single-threaded</quote>
+    above.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+</sect3>
+
+<!--  ~  End section  ~  -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect3 id="forwarding">
+<title>Forwarding</title>
+
+<para>
+ This feature allows routing of HTTP requests through a chain of
+ multiple proxies.
+ It can be used to better protect privacy and confidentiality when
+ accessing specific domains by routing requests to those domains
+ through an anonymous public proxy (see e.g. <ulink
+ url="http://www.multiproxy.org/anon_list.htm">http://www.multiproxy.org/anon_list.htm</ulink>)
+ Or to use a caching proxy to speed up browsing. Or chaining to a parent
+ proxy may be necessary because the machine that <application>Privoxy</application>
+ runs on has no direct Internet access.
+</para>
+
+<para>
+ Also specified here are SOCKS proxies. <application>Privoxy</application>
+ supports the SOCKS 4 and SOCKS 4A protocols.
+</para>
+
+<sect4 id="forward"><title>forward</title>
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    To which parent HTTP proxy specific requests should be routed.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>
+    <replaceable class="parameter">target_domain</replaceable>[:<replaceable class="parameter">port</replaceable>]
+    <replaceable class="parameter">http_parent</replaceable>[/<replaceable class="parameter">port</replaceable>]
+   </para>
+   <para>
+    Where <replaceable class="parameter">target_domain</replaceable> is a domain name pattern (see the
+    chapter on domain matching in the <filename>default.action</filename> file),
+    <replaceable class="parameter">http_parent</replaceable> is the address of the parent HTTP proxy
+    as an IP addresses in dotted decimal notation or as a valid DNS name (or <quote>.</quote> to denote
+    <quote>no forwarding</quote>, and the optional 
+    <replaceable class="parameter">port</replaceable> parameters are TCP ports, i.e. integer
+    values from 1 to 64535
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para><emphasis>Unset</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Don't use parent HTTP proxies.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    If <replaceable class="parameter">http_parent</replaceable> is <quote>.</quote>, then requests are not
+    forwarded to another HTTP proxy but are made directly to the web servers.
+   </para>
+   <para>
+    Multiple lines are OK, they are checked in sequence, and the last match wins.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Examples:</term>
+  <listitem>
+   <para>
+    Everything goes to an example anonymizing proxy, except SSL on port 443 (which it doesn't handle):
+   </para>
+   <para>
+    <screen>
+  forward   .*     anon-proxy.example.org:8080
+  forward   :443   .
+</screen>
+   </para>
+   <para>
+    Everything goes to our example ISP's caching proxy, except for requests
+    to that ISP's sites:
+   </para>
+   <para>
+    <screen>
+  forward   .*.                caching-proxy.example-isp.net:8000
+  forward   .example-isp.net   .
+</screen>
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="socks"><title>
+forward-socks4 and forward-socks4a</title>
+<anchor id="forward-socks4">
+<anchor id="forward-socks4a">
+
+<variablelist>
+ <varlistentry>
+  <term>Specifies:</term>
+  <listitem>
+   <para>
+    Through which SOCKS proxy (and to which parent HTTP proxy) specific requests should be routed.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Type of value:</term>
+  <listitem>
+   <para>
+    <replaceable class="parameter">target_domain</replaceable>[:<replaceable class="parameter">port</replaceable>]
+    <replaceable class="parameter">socks_proxy</replaceable>[/<replaceable class="parameter">port</replaceable>]
+    <replaceable class="parameter">http_parent</replaceable>[/<replaceable class="parameter">port</replaceable>]
+   </para>
+   <para>
+    Where <replaceable class="parameter">target_domain</replaceable> is a domain name pattern (see the
+    chapter on domain matching in the <filename>default.action</filename> file),
+    <replaceable class="parameter">http_parent</replaceable> and <replaceable class="parameter">socks_proxy</replaceable>
+    are IP addresses in dotted decimal notation or valid DNS names (<replaceable class="parameter">http_parent</replaceable>
+    may be <quote>.</quote> to denote <quote>no HTTP forwarding</quote>), and the optional 
+    <replaceable class="parameter">port</replaceable> parameters are TCP ports, i.e. integer values from 1 to 64535
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Default value:</term>
+  <listitem>
+   <para><emphasis>Unset</emphasis></para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Effect if unset:</term>
+  <listitem>
+   <para>
+    Don't use SOCKS proxies.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    Multiple lines are OK, they are checked in sequence, and the last match wins.
+   </para>
+   <para>
+    The difference between <literal>forward-socks4</literal> and <literal>forward-socks4a</literal>
+    is that in the SOCKS 4A protocol, the DNS resolution of the target hostname happens on the SOCKS
+    server, while in SOCKS 4 it happens locally.
+   </para>
+   <para>
+    If <replaceable class="parameter">http_parent</replaceable> is <quote>.</quote>, then requests are not
+    forwarded to another HTTP proxy but are made (HTTP-wise) directly to the web servers, albeit through
+    a SOCKS proxy.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Examples:</term>
+  <listitem>
+   <para>
+     From the company example.com, direct connections are made to all
+     <quote>internal</quote> domains, but everything outbound goes through
+     their ISP's proxy by way of example.com's corporate SOCKS 4A gateway to
+     the Internet.
+   </para>
+   <para>
+    <screen>
+  forward-socks4a   .*.            socks-gw.example.com:1080  www-cache.example-isp.net:8080
+  forward           .example.com   .
+</screen>
+   </para>
+   <para>
+    A rule that uses a SOCKS 4 gateway for all destinations but no HTTP parent looks like this:
+   </para>
+   <para>
+    <screen>
+  forward-socks4   .*.            socks-gw.example.com:1080  .
+</screen>
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+<sect4 id="advanced-forwarding-examples"><title>Advanced Forwarding Examples</title>
+
+<para>
+ If you have links to multiple ISPs that provide various special content 
+ only to their subscribers, you can configure multiple <application>Privoxies</application>
+ which have connections to the respective ISPs to act as forwarders to each other, so that
+ <emphasis>your</emphasis> users can see the internal content of all ISPs.
+</para>
+
+<para>
+ Assume that host-a has a PPP connection to isp-a.net. And host-b has a PPP connection to
+ isp-b.net. Both run <application>Privoxy</application>. Their forwarding
+ configuration can look like this:
+</para>
+
+<para>
+ host-a:
+</para>
+
+<para>
+ <screen>
+  forward    .*.         .
+  forward    .isp-b.net  host-b:8118
+</screen>
+</para>
+
+<para>
+ host-b:
+</para>
+
+<para>
+ <screen>
+  forward    .*.         .
+  forward    .isp-a.net  host-a:8118
+</screen>
+</para>
+
+<para>
+ Now, your users can set their browser's proxy to use either
+ host-a or host-b and be able to browse the internal content
+ of both isp-a and isp-b.
+</para>
+
+<para>
+ If you intend to chain <application>Privoxy</application> and 
+ <application>squid</application> locally, then chain as 
+ <literal>browser -> squid -> privoxy</literal> is the recommended way. 
+</para>
+
+<para>
+ Assuming that <application>Privoxy</application> and <application>squid</application>
+ run on the same box, your squid configuration could then look like this:
+</para>
+
+<para>
+ <screen>
+  # Define Privoxy as parent proxy (without ICP) 
+  cache_peer 127.0.0.1 parent 8118 7 no-query 
+
+  # Define ACL for protocol FTP 
+  acl ftp proto FTP 
+
+  # Do not forward FTP requests to Privoxy
+  always_direct allow ftp 
+
+  # Forward all the rest to Privoxy
+  never_direct allow all</screen>
+</para>
+
+<para>
+ You would then need to change your browser's proxy settings to <application>squid</application>'s address and port.
+ Squid normally uses port 3128. If unsure consult <literal>http_port</literal> in <filename>squid.conf</filename>.
+</para>
+
+</sect4>
+
+</sect3>
+
+<!--  ~  End section  ~  -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect3 id="windows-gui">
+<title>Windows GUI Options</title>
+<para>
+ <application>Privoxy</application> has a number of options specific to the
+ Windows GUI interface:
+</para>
+
+<anchor id="activity-animation">
+<para>
+ If <quote>activity-animation</quote> is set to 1, the
+ <application>Privoxy</application> icon will animate when
+ <quote>Privoxy</quote> is active. To turn off, set to 0.
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>activity-animation   1</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="log-messages">
+<para>
+ If <quote>log-messages</quote> is set to 1,
+ <application>Privoxy</application> will log messages to the console
+ window:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>log-messages       1</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="log-buffer-size">
+<para> 
+ If <quote>log-buffer-size</quote> is set to 1, the size of the log buffer,
+ i.e. the amount of memory used for the log messages displayed in the
+ console window, will be limited to <quote>log-max-lines</quote> (see below).
+</para>
+
+<para>
+ Warning: Setting this to 0 will result in the buffer to grow infinitely and
+ eat up all your memory!
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>log-buffer-size      1</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="log-max-lines">
+<para>
+ <application>log-max-lines</application> is the maximum number of lines held
+ in the log buffer. See above.
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>log-max-lines      200</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="log-highlight-messages">
+<para>
+ If <quote>log-highlight-messages</quote> is set to 1,
+ <application>Privoxy</application> will highlight portions of the log
+ messages with a bold-faced font:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>log-highlight-messages   1</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="log-font-name">
+<para>
+ The font used in the console window:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>log-font-name        Comic Sans MS</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="log-font-size">
+<para>
+ Font size used in the console window:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>log-font-size        8</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="show-on-task-bar">
+<para>  
+ <quote>show-on-task-bar</quote> controls whether or not
+ <application>Privoxy</application> will appear as a button on the Task bar
+ when minimized:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>show-on-task-bar     0</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="close-button-minimizes">
+<para>
+ If <quote>close-button-minimizes</quote> is set to 1, the Windows close
+ button will minimize <application>Privoxy</application> instead of closing
+ the program (close with the exit option on the File menu).
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  <emphasis>close-button-minimizes  1</emphasis>
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<anchor id="hide-console">
+<para>
+ The <quote>hide-console</quote> option is specific to the MS-Win console
+ version of <application>Privoxy</application>. If this option is used,
+ <application>Privoxy</application> will disconnect from and hide  the
+ command console.
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  #hide-console
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+</sect3>
+</sect2>
+
+<!--  ~  End section  ~  -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="actions-file"><title>Actions Files</title>
+
+<para>
+ The actions files are used to define what actions
+ <application>Privoxy</application> takes for which URLs, and thus determines
+ how ad images, cookies and various other aspects of HTTP content and
+ transactions are handled, and on which sites (or even parts thereof). There 
+ are three such files included with <application>Privoxy</application>, 
+ with slightly different purposes. <filename>default.action</filename> sets
+ the default policies. <filename>standard.action</filename> is used by 
+ <application>Privoxy</application> and the web based editor to set 
+ pre-defined values (and normally should not be edited). Local exceptions 
+ are best done in <filename>user.action</filename>. The content of these 
+ can all be viewed and edited from <ulink
+ url="http://config.privoxy.org/show-status">http://config.privoxy.org/show-status</ulink>.
+ </para>
+
+<para> 
+ Anything you want can be blocked, including ads, banners, or just some obnoxious
+ URL that you would rather not see is done here. Cookies can be accepted or rejected, or
+ accepted only during the current browser session (i.e. not written to disk),
+ content can be modified, JavaScripts tamed, user-tracking fooled, and much more.
+ See below for a complete list of available actions.
+</para>
+
+<para>
+ An actions file typically has sections. Near the top, <quote>aliases</quote> are 
+ optionally defined (discussed <ulink
+ url="configuration.html#ALIASES">below</ulink>), then the default set of rules
+ which will apply universally to all sites and pages. And then below that,
+ exceptions to the defined universal policies. 
+</para>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3>
+<title>Finding the Right Mix</title>
+<para>
+ Note that some <link linkend="actions">actions</link> like cookie suppression
+ or script disabling may render some sites unusable, which rely on these
+ techniques to work properly. Finding the right mix of actions is not easy and
+ certainly a matter of personal taste. In general, it can be said that the more
+ <quote>aggressive</quote> your default settings (in the top section of the
+ actions file) are, the more exceptions for <quote>trusted</quote> sites you
+ will have to make later. If, for example, you want to kill popup windows per
+ default, you'll have to make exceptions from that rule for sites that you
+ regularly use and that require popups for actually useful content, like maybe
+ your bank, favorite shop, or newspaper.
+</para>
+
+<para>
+ We have tried to provide you with reasonable rules to start from in the
+ distribution actions files. But there is no general rule of thumb on these
+ things. There just are too many variables, and sites are constantly changing.
+ Sooner or later you will want to change the rules (and read this chapter again :).
+</para>
+</sect3>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3>
+<title>How to Edit</title>
+<para>
+ The easiest way to edit the <quote>actions</quote> files is with a browser by
+ using our browser-based editor, which can be reached from <ulink
+ url="http://config.privoxy.org/show-status">http://config.privoxy.org/show-status</ulink>.
+</para>
+
+<para>
+ If you prefer plain text editing to GUIs, you can of course also directly edit the
+ the actions files.
+</para>
+</sect3>
+
+
+<sect3>
+<title>How Actions are Applied to URLs</title>
+<para>
+ Actions files are divided into sections. There are special sections,
+ like the <quote><link linkend="aliases">alias</link></quote> sections which will be discussed later. For now
+ let's concentrate on regular sections: They have a heading line (often split
+ up to multiple lines for readability) which consist of a list of actions,
+ separated by whitespace and enclosed in curly braces. Below that, there
+ is a list of URL patterns, each on a separate line.
+</para>
+
+<para>
+ To determine which actions apply to a request, the URL of the request is
+ compared to all patterns in this file. Every time it matches, the list of
+ applicable actions for the URL is incrementally updated, using the heading
+ of the section in which the pattern is located. If multiple matches for
+ the same URL set the same action differently, the last match wins. If not, 
+ the effects are aggregated (e.g. a URL might match both the 
+ <ulink url="configuration.html#HANDLE-AS-IMAGE"><quote>+handle-as-image</quote></ulink>
+ and <ulink url="configuration.html#BLOCK"><quote>+block</quote></ulink> actions).
+</para>
+
+<para>
+ You can trace this process by visiting <ulink
+ url="http://config.privoxy.org/show-url-info">http://config.privoxy.org/show-url-info</ulink>.
+</para>
+
+<para>
+ More detail on this is provided in the Appendix, <link linkend="ACTIONSANAT">
+ Anatomy of an Action</link>.
+</para>
+</sect3>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3>
+<title>Patterns</title>
+<para>
+ Generally, a pattern has the form <literal>&lt;domain&gt;/&lt;path&gt;</literal>,
+ where both the <literal>&lt;domain&gt;</literal> and <literal>&lt;path&gt;</literal>
+ are optional. (This is why the pattern <literal>/</literal> matches all URLs).
+</para>
+
+<variablelist>
+ <varlistentry>
+  <term><literal>www.example.com/</literal></term>
+  <listitem>
+   <para>
+    is a domain-only pattern and will match any request to <literal>www.example.com</literal>,
+    regardless of which document on that server is requested.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>www.example.com</literal></term>
+  <listitem>
+   <para>
+    means exactly the same. For domain-only patterns, the trailing <literal>/</literal> may
+    be omitted.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>www.example.com/index.html</literal></term>
+  <listitem>
+   <para>
+    matches only the single document <literal>/index.html</literal>
+    on <literal>www.example.com</literal>.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>/index.html</literal></term>
+  <listitem>
+   <para>
+    matches the document <literal>/index.html</literal>, regardless of the domain,
+    i.e. on <emphasis>any</emphasis> web server.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>index.html</literal></term>
+  <listitem>
+   <para>
+    matches nothing, since it would be  interpreted as a domain name and
+    there is no top-level domain called <literal>.html</literal>.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+
+<sect4><title>The Domain Pattern</title>
+
+<para>
+ The matching of the domain part offers some flexible options: if the
+ domain starts or ends with a dot, it becomes unanchored at that end. 
+ For example:
+</para>
+
+<variablelist>
+ <varlistentry>
+  <term><literal>.example.com</literal></term>
+  <listitem>
+   <para>
+    matches any domain that <emphasis>ENDS</emphasis> in
+    <literal>.example.com</literal>
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>www.</literal></term>
+  <listitem>
+   <para>
+    matches any domain that <emphasis>STARTS</emphasis> with
+    <literal>www.</literal>
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>.example.</literal></term>
+  <listitem>
+   <para>
+    matches any domain that <emphasis>CONTAINS</emphasis> <literal>.example.</literal>
+    (Correctly speaking: It matches any FQDN that contains <literal>example</literal> as a domain.)
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>
+ Additionally, there are wild-cards that you can use in the domain names
+ themselves. They work pretty similar to shell wild-cards: <quote>*</quote>
+ stands for zero or more arbitrary characters, <quote>?</quote> stands for
+ any single character, you can define character classes in square
+ brackets and all of that can be freely mixed:
+</para>
+
+<variablelist>
+ <varlistentry>
+  <term><literal>ad*.example.com</literal></term>
+  <listitem>
+   <para>
+    matches <quote>adserver.example.com</quote>, 
+    <quote>ads.example.com</quote>, etc but not <quote>sfads.example.com</quote>
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>*ad*.example.com</literal></term>
+  <listitem>
+   <para>
+    matches all of the above, and then some.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>.?pix.com</literal></term>
+  <listitem>
+   <para>
+    matches <literal>www.ipix.com</literal>,
+    <literal>pictures.epix.com</literal>, <literal>a.b.c.d.e.upix.com</literal> etc. 
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term><literal>www[1-9a-ez].example.c*</literal></term>
+  <listitem>
+   <para>
+     matches <literal>www1.example.com</literal>, 
+     <literal>www4.example.cc</literal>, <literal>wwwd.example.cy</literal>, 
+     <literal>wwwz.example.com</literal> etc., but <emphasis>not</emphasis> 
+     <literal>wwww.example.com</literal>.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+
+</sect4>
+
+<sect4><title>The Path Pattern</title>
+
+<para>
+ <application>Privoxy</application> uses Perl compatible regular expressions
+ (through the <ulink url="http://www.pcre.org/">PCRE</ulink> library) for
+ matching the path.
+</para>
+
+<para>
+ There is an <link linkend="regex">Appendix</link> with a brief quick-start into regular
+ expressions, and full (very technical) documentation on PCRE regex syntax is available on-line
+ at <ulink url="http://www.pcre.org/man.txt">http://www.pcre.org/man.txt</ulink>.
+ You might also find the Perl man page on regular expressions (<literal>man perlre</literal>)
+ useful, which is available on-line at <ulink
+ url="http://www.perldoc.com/perl5.6/pod/perlre.html">http://www.perldoc.com/perl5.6/pod/perlre.html</ulink>.
+</para>
+
+<para>
+ Note that the path pattern is automatically left-anchored at the <quote>/</quote>,
+ i.e. it matches as if it would start with a <quote>^</quote> (regular expression speak 
+ for the beginning of a line).
+</para>
+
+<para>
+ Please also note that matching in the path is case
+ <emphasis>INSENSITIVE</emphasis> by default, but you can switch to case
+ sensitive at any point in the pattern by using the 
+ <quote>(?-i)</quote> switch:
+ <literal>www.example.com/(?-i)PaTtErN.*</literal> will match only
+ documents whose path starts with <literal>PaTtErN</literal> in
+ <emphasis>exactly</emphasis> this capitalization.
+</para>
+</sect4>
+
+</sect3>
+
+<!--  ~  End section  ~  -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect3 id="actions">
+<title>Actions</title>
+<para>
+ All actions are disabled by default, until they are explicitly enabled
+ somewhere in an actions file. Actions are turned on if preceded with a
+ <quote>+</quote>, and turned off if preceded with a <quote>-</quote>. So a
+ <quote>+action</quote> means <quote>do that action</quote>, e.g.
+ <quote>+block</quote> means please <quote>block the following URL
+ patterns</quote>. 
+</para>
+
+<para> 
+ Actions are invoked by enclosing the action name in curly braces (e.g.
+ {+some_action}), followed by a list of URLs (or patterns that match URLs) to
+ which the action applies. There are three classes of actions: 
+</para>
+
+<para>
+ <itemizedlist>
+
+ <listitem>
+  <para>  
+   Boolean, i.e the action can only be <quote>on</quote> or
+   <quote>off</quote>. Examples: 
+ </para>
+  <para>
+   <literal>
+    <msgtext> 
+     <literallayout>
+  <emphasis>{+name}</emphasis>        # enable this action
+  <emphasis>{-name}</emphasis>        # disable this action
+     </literallayout>
+    </msgtext> 
+   </literal>
+  </para>
+ </listitem>
+
+
+ <listitem>
+  <para>  
+   Parameterized, e.g. <quote>+/-hide-user-agent{ Mozilla 1.0 }</quote>, 
+   where some value is required in order to enable this type of action.
+   Examples:
+  </para>
+  <para>
+   <literal>
+    <msgtext> 
+     <literallayout>
+  <emphasis>{+name{param}}</emphasis>  # enable action and set parameter to <quote>param</quote>
+  <emphasis>{-name}</emphasis>         # disable action (<quote>parameter</quote>) can be omitted
+     </literallayout>
+    </msgtext> 
+   </literal>
+  </para>
+ </listitem>
+ <listitem>
+  <para>  
+  <!-- oes, or someone, check this. Re-worded 04/20/02 HB. -->
+   Multi-value, e.g. <quote>{+/-add-header{Name: value}}</quote> or
+   <quote>{+/-send-wafer{name=value}}</quote>), where some value needs to be defined
+   in addition to simply enabling the action. Examples:
+  </para>
+  <para>
+   <literal>
+    <msgtext> 
+     <literallayout>
+  <emphasis>{+name{param=value}}</emphasis>   # enable action and set <quote>param</quote> to <quote>value</quote>
+  <emphasis>{-name{param=value}}</emphasis>   # remove the parameter <quote>param</quote> completely
+  <emphasis>{-name}</emphasis>                # disable this action totally and remove <application>param</application> too
+     </literallayout>
+    </msgtext> 
+   </literal>
+  </para>
+ </listitem>
+
+ </itemizedlist>
+</para>
+
+<para>
+ If nothing is specified in any actions file, no <quote>actions</quote> are
+ taken. So in this case <application>Privoxy</application> would just be a
+ normal, non-blocking, non-anonymizing proxy. You must specifically enable the
+ privacy and blocking features you need (although the provided default actions
+ files will give a good starting point).
+</para>
+
+<para>
+ Later defined actions always over-ride earlier ones.  So exceptions 
+ to any rules you make, should come in the latter part of the file (or 
+ in a file that is processed later when using multiple actions files). For
+ multi-valued actions, the actions are applied in the order they are specified.
+ Actions files are processed in the order they are defined in
+ <filename>config</filename> (the default installation has three actions
+ files). It also quite possible for any given URL pattern to match more than
+ one action!
+</para>
+
+<!-- start actions listing -->
+<para>
+ The list of valid <application>Privoxy</application> <quote>actions</quote> are:
+</para>
+
+
+<!-- ********************************************************** -->
+<!-- Please note the below defined actions use id's that are    -->
+<!-- probably linked from other places, so please don't change. -->
+<!--                                                            -->
+<!-- ********************************************************** -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect4 id="add-header">
+<title><emphasis>+add-header</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Multi-value.</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Send a user defined HTTP header to the web server.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    Any value is possible. Validity of the defined HTTP headers is not checked.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+add-header{X-User-Tracking: sucks}}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+<varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    This action may be specified multiple times, in order to define multiple 
+    headers. This is rarely needed for the typical user. If you don't know what 
+    <quote>HTTP headers</quote> are, you definitely don't need to worry about this 
+    one.
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="block">
+<title><emphasis>+block</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Used to block a URL from reaching your browser. The URL may be 
+    anything, but is typically used to block ads or other obnoxious 
+    content.    
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>N/A</para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+block}</emphasis>
+     <emphasis>.banners.example.com</emphasis>
+     <emphasis>.ads.r.us</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+<varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    If a URL matches one of the blocked patterns, <application>Privoxy</application>
+    will intercept the URL and display its special <quote>BLOCKED</quote> page
+    instead. If there is sufficient space, a large red banner will appear with
+    a friendly message about why the page was blocked, and a way to go there
+    anyway. If there is insufficient space a smaller <quote>BLOCKED</quote>
+    page will appear without the red banner. 
+    <ulink url="http://ads.bannerserver.example.com/nasty-ads/sponsor.html">Click here</ulink>
+    to view the default blocked HTML page (<application>Privoxy</application> must be running 
+    for this to work as intended!).
+   </para>
+
+   <para> 
+    A very important exception is if the URL <emphasis>matches both</emphasis>
+    <quote>+block</quote> and <ulink
+    url="configuration.html#HANDLE-AS-IMAGE"><quote>+handle-as-image</quote></ulink>,
+    then it will be handled by 
+    <ulink url="configuration.html#SET-IMAGE-BLOCKER"><quote>+set-image-blocker</quote></ulink>
+    (see below). It is important to understand this process, in order 
+    to understand how <application>Privoxy</application> is able to deal with 
+    ads and other objectionable content.
+   </para>
+   <para>
+    The <ulink url="configuration.html#FILTER"><quote>+filter</quote></ulink>
+    action can also perform some of the 
+    same functionality as <quote>+block</quote>, but by virtue of very 
+    different programming techniques, and is most often used for different 
+    reasons.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="deanimate-gifs">
+<title><emphasis>+deanimate-gifs</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Parameterized.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    To stop those annoying, distracting animated GIF images.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    <quote>last</quote> or <quote>first</quote>
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+      <emphasis>{+deanimate-gifs{last}}</emphasis>
+      <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    De-animate all animated GIF images, i.e. reduce them to their last frame.
+    This will also shrink the images considerably (in bytes, not pixels!). If
+    the option <quote>first</quote> is given, the first frame of the animation
+    is used as the replacement. If <quote>last</quote> is given, the last
+    frame of the animation is used instead, which probably makes more sense for
+    most banner animations, but also has the risk of not showing the entire
+    last frame (if it is only a delta to an earlier frame).
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="downgrade-http-version">
+<title><emphasis>+downgrade-http-version</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    <quote>+downgrade-http-version</quote> will downgrade HTTP/1.1 client requests to
+    HTTP/1.0 and downgrade the responses as well.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+downgrade-http-version}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    Use this action for servers that use HTTP/1.1 protocol features that
+    <application>Privoxy</application> doesn't handle well yet. HTTP/1.1 is
+    only partially implemented. Default is not to downgrade requests. This is
+    an infrequently needed action, and is used to help with rare problem sites only.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="fast-redirects">
+<title><emphasis>+fast-redirects</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    The <quote>+fast-redirects</quote> action enables interception of 
+    <quote>redirect</quote> requests from one server to another, which 
+    are used to track users.<application>Privoxy</application> can cut off
+    all but the last valid URL in a redirect request and send a local redirect
+    back to your browser without contacting the intermediate site(s).
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+fast-redirects}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>  
+    Many sites, like yahoo.com, don't just link to other sites. Instead, they
+    will link to some script on their own server, giving the destination as a
+    parameter, which will then redirect you to the final target. URLs
+    resulting from this scheme typically look like:
+    <emphasis>http://some.place/some_script?http://some.where-else</emphasis>.
+  </para>
+   <para>
+    Sometimes, there are even multiple consecutive redirects encoded in the
+    URL. These redirections via scripts make your web browsing more traceable,
+    since the server from which you follow such a link can see where you go
+    to. Apart from that, valuable bandwidth and time is wasted, while your
+    browser ask the server for one redirect after the other. Plus, it feeds
+    the advertisers.
+   </para>
+   <para>
+    This is a normally <quote>on</quote> feature, and often requires exceptions
+    for sites that are sensitive to defeating this mechanism.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="filter">
+<title><emphasis>+filter</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- boolean, parameterized, Multi-value -->
+  <listitem>
+   <para>Parameterized.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Apply page filtering as defined by named sections of the
+    <filename>default.filter</filename> file to the specified site(s). 
+    <quote>Filtering</quote> can be any modification of the raw 
+    page content, including re-writing or deletion of content.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    <quote>+filter</quote> must include the name of one of the section identifiers
+    from <filename>default.filter</filename> (or whatever
+    <emphasis>filterfile</emphasis> is specified in <filename>config</filename>).
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage (from the current <filename>default.filter</filename>):</term>
+  <listitem>
+   <simplelist>
+   <member>
+    <emphasis>+filter{html-annoyances}</emphasis>:  Get rid of particularly annoying HTML abuse.
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{js-annoyances}</emphasis>:    Get rid of particularly annoying JavaScript abuse
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{content-cookies}</emphasis>:   Kill cookies that come in the HTML or JS content 
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{popups}</emphasis>:         Kill all popups in JS and HTML
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{frameset-borders}</emphasis>: Give frames a border and make them resizable 
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{webbugs}</emphasis>:          Squish WebBugs (1x1 invisible GIFs used for user tracking)
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{refresh-tags}</emphasis>:     Kill automatic refresh tags (for dial-on-demand setups) 
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{fun}</emphasis>:              Text replacements  for subversive browsing fun!
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{nimda}</emphasis>:            Remove Nimda (virus) code.
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{banners-by-size}</emphasis>:  Kill banners by size (<emphasis>very</emphasis> efficient!)
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{shockwave-flash}</emphasis>:   Kill embedded Shockwave Flash objects
+   </member>
+  </simplelist>
+  <simplelist>
+   <member>
+    <emphasis>+filter{crude-parental}</emphasis>:   Kill all web pages that contain the words "sex" or "warez"
+   </member>
+  </simplelist>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    This is potentially a very powerful feature! And requires a knowledge 
+    of regular expressions if you want to <quote>roll your own</quote>.
+    Filtering operates on a line by line basis throughout the entire page.
+   </para>
+   <para>
+    Filtering requires buffering the page content, which may appear to
+    slow down page rendering since nothing is displayed until all content has
+    passed the filters. (It does not really take longer, but seems that way
+    since the page is not incrementally displayed.) This effect will be more
+    noticeable on slower connections.
+   </para>
+   <para>
+    Filtering can achieve some of the effects as the 
+    <ulink url="configuration.html#BLOCK"><quote>+block</quote></ulink>
+    action, i.e. it can be used to block ads and banners. In the overall 
+    scheme of things, filtering is one of the first things <quote>Privoxy</quote> 
+    does with a web page. So other most other actions are applied to the 
+    already <quote>filtered</quote> page.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="hide-forwarded-for-headers">
+<title><emphasis>+hide-forwarded-for-headers</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Block any existing X-Forwarded-for HTTP header, and do not add a new one.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+hide-forwarded-for-headers}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    It is fairly safe to leave this on. It does not seem to break many sites.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="hide-from-header">
+<title><emphasis>+hide-from-header</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Parameterized.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    To block the browser from sending your email address in a <quote>From:</quote>
+    header.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    Keyword: <quote>block</quote>, or any user defined value.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+hide-from-header{block}}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    The keyword <quote>block</quote> will completely remove the header 
+    (not to be confused with the <ulink
+    url="configuration.html#BLOCK"><quote>+block</quote></ulink> action).
+    Alternately, you can specify any value you prefer to send to the web
+    server.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="hide-referer">
+<title><emphasis>+hide-referer</emphasis></title>
+<anchor id="hide-referrer">
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Parameterized.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+     Don't send the <quote>Referer:</quote> (sic) HTTP header to the web site.
+     Or, alternately send a forged header instead.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+     Prevent the header from being sent with the keyword, <quote>block</quote>.
+     Or, <quote>forge</quote> a URL to one from the same server as the request.
+     Or, set to user defined value of your choice.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+hide-referer{forge}}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    <quote>forge</quote> is the preferred option here, since some servers will
+    not send images back otherwise.
+   </para>
+  <para>  
+   <quote>+hide-referrer</quote> is an alternate spelling of
+   <quote>+hide-referer</quote>. It has the exact same parameters, and can be freely
+   mixed with, <quote>+hide-referer</quote>. (<quote>referrer</quote> is the
+   correct English spelling, however the HTTP specification has a bug - it
+   requires it to be spelled as <quote>referer</quote>.) 
+  </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="hide-user-agent">
+<title><emphasis>+hide-user-agent</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Parameterized.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    To change the <quote>User-Agent:</quote> header so web servers can't tell
+    your browser type. Who's business is it anyway?
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    Any user defined string.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}}</emphasis>
+     <emphasis>.msn.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+     Warning! This breaks many web sites that depend on this in order 
+     to determine how the target browser will respond to various 
+     requests. Use with caution.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="handle-as-image">
+<title><emphasis>+handle-as-image</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    To define what <application>Privoxy</application> should treat 
+    automatically as an image, and is an important ingredient of how 
+    ads are handled.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+handle-as-image}</emphasis>
+     <emphasis>/.*\.(gif|jpg|jpeg|png|bmp|ico)</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    This only has meaning if the URL (or pattern) also is
+    <quote>+block</quote>ed, in which case a user definable image can
+    be sent rather than a HTML page. This is integral to the whole concept of
+    ad blocking: the URL must match <emphasis>both</emphasis> a <ulink
+    url="configuration.html#BLOCK"><quote>+block</quote></ulink> rule,
+    <emphasis>and</emphasis> <quote>+handle-as-image</quote>.
+    (See <ulink
+    url="configuration.html#SET-IMAGE-BLOCKER"><quote>+set-image-blocker</quote></ulink>
+    below for control over what will actually be displayed by the browser.)
+   </para>
+   <para>
+    There is little reason to change the default definition for this action.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="set-image-blocker">
+<title><emphasis>+set-image-blocker</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Parameterized.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Decide what to do with URLs that end up tagged with <emphasis>both</emphasis> 
+    <ulink url="configuration.html#BLOCK"><quote>+block</quote></ulink>
+    and <ulink
+    url="configuration.html#HANDLE-AS-IMAGE"><quote>+handle-as-image</quote></ulink>,
+    e.g an advertisement.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    There are four available options: <quote>-set-image-blocker</quote> will send a HTML
+    <quote>blocked</quote> page, usually resulting in a <quote>broken
+    image</quote> icon.
+    <quote>+set-image-blocker{<emphasis>blank</emphasis>}</quote> will send a
+    1x1 transparent GIF image.
+    <quote>+set-image-blocker{<emphasis>pattern</emphasis>}</quote> will send a
+    checkerboard type pattern (the default). And finally,
+    <quote>+set-image-blocker{<emphasis>http://xyz.com</emphasis>}</quote> will
+    send a HTTP temporary redirect to the specified image. This has the
+    advantage of the icon being being cached by the browser, which will speed
+    up the display.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+set-image-blocker{blank}}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    If you want <emphasis>invisible</emphasis> ads, they need to meet 
+    criteria as matching both <emphasis>images</emphasis> and <emphasis>blocked</emphasis>
+    actions. And then, <quote>image-blocker</quote> should be set to
+    <quote>blank</quote> for invisibility. Note you cannot treat HTML pages as
+    images in most cases. For instance, frames require an HTML page to
+    display. So a frame that is an ad, typically cannot be treated as an image.
+    Forcing an <quote>image</quote> in this situation just will not work
+    reliably. 
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="limit-connect">
+<title><emphasis>+limit-connect</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Parameterized.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    By default, <application>Privoxy</application> only allows HTTP CONNECT
+    requests to port 443 (the standard, secure HTTPS port). Use 
+    <quote>+limit-connect</quote> to disable this altogether, or to allow 
+    more ports.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    Any valid port number, or port number range.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usages:</term>
+  <listitem>
+   <!-- I had trouble getting the spacing to look right in my browser -->
+   <!-- I probably have the wrong font setup, bollocks. -->
+   <!-- Apparently the emphasis tag uses a proportional font no matter what -->
+    <literallayout>
+     <emphasis>+limit-connect{443}</emphasis>                       # This is the default and need not be specified.
+     <emphasis>+limit-connect{80,443}</emphasis>                  # Ports 80 and 443 are OK.
+     <emphasis>+limit-connect{-3, 7, 20-100, 500-}</emphasis>   # Port less than 3, 7, 20 to 100 and above 500 are OK.
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    The CONNECT methods exists in HTTP to allow access to secure websites
+    (https:// URLs) through proxies. It works very simply: the proxy connects
+    to the server on the specified port, and then short-circuits its
+    connections to the client <emphasis>and</emphasis> to the remote proxy.
+    This can be a big security hole, since CONNECT-enabled proxies can be
+    abused as TCP relays very easily.
+  </para>
+  <para> 
+   If you want to allow CONNECT for more ports than this, or want to forbid
+   CONNECT altogether, you can specify a comma separated list of ports and
+   port ranges (the latter using dashes, with the minimum defaulting to 0 and
+   max to 65K).
+  </para>
+  <para>
+   If you don't know what any of this means, there probably is no reason to 
+   change this one.
+  </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="prevent-compression">
+<title><emphasis>+prevent-compression</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Prevent the specified websites from compressing HTTP data.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+prevent-compression}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    Some websites do this, which can be a problem for
+    <application>Privoxy</application>, since 
+    <ulink url="configuration.html#FILTER"><quote>+filter</quote></ulink>,
+    <ulink url="configuration.html#KILL-POPUPS"><quote>+kill-popups</quote></ulink>
+    and <ulink
+    url="configuration.html#GIF-DEANIMATE"><quote>+gif-deanimate</quote></ulink>
+    will not work on compressed data. This will slow down connections to those
+    websites, though. Default typically is to turn
+    <quote>prevent-compression</quote> on.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="session-cookies-only">
+<title><emphasis>+session-cookies-only</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Allow cookies for the current browser session <emphasis>only</emphasis>.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage (disabling):</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{-session-cookies-only}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    If websites set cookies, <quote>+session-cookies-only</quote> will make sure
+    they are erased when you exit and restart your web browser. This makes
+    profiling cookies useless, but won't break sites which require cookies so
+    that you can log in for transactions. This is generally turned on for all 
+    sites, and is the recommended setting.
+   </para>
+   <para>
+    <quote>+prevent-*-cookies</quote> actions should be turned off as well (see
+    below), for <quote>+session-cookies-only</quote> to work. Or, else no cookies 
+    will get through at all. For, <quote>persistent</quote> cookies that survive 
+    across browser sessions, see below as well.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="prevent-reading-cookies">
+<title><emphasis>+prevent-reading-cookies</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Explicitly prevent the web server from reading any cookies on your 
+    system.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+prevent-reading-cookies}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    Often used in conjunction with <quote>+prevent-setting-cookies</quote> to 
+    disable cookies completely. Note that 
+    <ulink url="configuration.html#SESSION-COOKIES-ONLY"><quote>+session-cookies-only</quote></ulink>
+    requires these to both be disabled (or else it never gets any cookies to cache).
+   </para>
+   <para>
+    For <quote>persistent</quote> cookies to work (i.e. they survive across browser 
+    sessions and reboots), all three cookie settings should be <quote>off</quote> 
+    for the specified sites.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="prevent-setting-cookies">
+<title><emphasis>+prevent-setting-cookies</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Explicitly block the web server from storing cookies on your 
+    system.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+prevent-setting-cookies}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    Often used in conjunction with <quote>+prevent-reading-cookies</quote> to 
+    disable cookies completely (see above).
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       Nvarlistentryew section      ~~~~~     -->
+<sect4 id="kill-popup">
+<title><emphasis>+kill-popups<anchor id="kill-popups"></emphasis></title>
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Stop those annoying JavaScript pop-up windows! 
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+kill-popups}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    <quote>+kill-popups</quote> uses a built in filter to disable pop-ups
+    that use the <literal>window.open()</literal> function, etc. This is 
+    one of the first actions processed by <application>Privoxy</application>
+    as it contacts the remote web server. This action is not always 100% reliable, 
+    and is supplemented by <quote>+filter{<emphasis>popups</emphasis>}</quote>.
+    </para>
+  <!-- 
+   <para>
+    An alternate spelling is <quote>+kill-popup</quote>, which is 
+    interchangeable.
+   </para>
+ --> 
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="send-vanilla-wafer">
+<title><emphasis>+send-vanilla-wafer</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Boolean.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    Sends a cookie for every site stating that you do not accept any copyright
+    on cookies sent to you, and asking them not to track you.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    N/A
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+send-vanilla-wafer}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    This action only applies if you are using a <filename>jarfile</filename>
+    for saving cookies. Of course, this is a (relatively) unique header and 
+    could conceivably be used to track you.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="send-wafer">
+<title><emphasis>+send-wafer</emphasis></title>
+
+<variablelist>
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Multi-value.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Typical uses:</term>
+  <listitem>
+   <para>
+    This allows you to send an arbitrary, user definable cookie.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Possible values:</term>
+  <listitem>
+   <para>
+    User specified cookie name and corresponding value.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <literallayout>
+     <emphasis>{+send-wafer{name=value}}</emphasis>
+     <emphasis>.example.com</emphasis>
+    </literallayout>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    This can be specified multiple times in order to add as many cookies as you
+    like.
+   </para>
+  </listitem>
+ </varlistentry>
+
+</variablelist>
+</sect4>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect4 id="act-examples" renderas="sect3">
+<title>Actions Examples</title>
+<para>
+ Note that the meaning of any of the above examples is reversed by preceding
+ the action with a <quote>-</quote>, in place of the <quote>+</quote>. Also, 
+ that some actions are turned on in the default section of the actions file, 
+ and require little to no additional configuration. These are just <quote>on</quote>.
+ But, other actions that are turned on the default section <emphasis>do
+ typically require</emphasis> exceptions to be listed in the latter sections of 
+ one of our actions file. For instance, by default no URLs are
+ <quote>blocked</quote> (i.e. in the default definitions of
+ <filename>default.action</filename>). We need exceptions to this in order to
+ enable ad blocking in the lower sections. But we need to be very selective
+ about what we do block.
+</para>
+
+<para>
+ Below is a liberally commented <filename>default.action</filename> file  to 
+ demonstrate how all the pieces come together. And to show how exceptions to
+ the default policies can be handled. This is followed by a
+ <filename>user.action</filename> with similar examples.
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+
+# Settings -- Don't change! For internal Privoxy use ONLY.
+{{settings}}
+for-privoxy-version=3.0
+
+
+##########################################################################
+# <ulink url="configuration.html#ALIASES">Aliases</ulink> must be defined *before* they are used. These are
+# easier to remember, and combine several actions into one. Once defined
+# they can be used just like any built-in action.
+##########################################################################
+
+# Some useful aliases.
+ -prevent-cookies = -prevent-setting-cookies -prevent-reading-cookies
+ +imageblock      = +block +handle-as-image
+
+# Fragile sites should have the minimum changes:
+ fragile     = -block -deanimate-gifs -fast-redirects -filter -hide-referer \
+               -prevent-cookies -kill-popups
+
+# Shops should be allowed to set persistent cookies
+ shop        = -filter -prevent-cookies -session-cookies-only
+
+
+##########################################################################
+# Begin default action settings. Anything in this section will match 
+# all URLs -- UNLESS we have exceptions that match defined below this 
+# section. We will show all potential actions here whether they are on 
+# or off. We could omit any disabled action if we wanted, since all 
+# actions are 'off' by default anyway. Shown for completeness only.
+# Actions are enabled if preceded by a '+', otherwise they are disabled.
+##########################################################################
+ { \
+ <ulink url="configuration.html#ADD-HEADER">-add-header</ulink> \
+ <ulink url="configuration.html#BLOCK">-block</ulink> \
+ <ulink url="configuration.html#DEANIMATE-GIFS">-deanimate-gifs</ulink> \
+ <ulink url="configuration.html#DOWNGRADE-HTTP-VERSION">-downgrade-http-version</ulink> \
+ <ulink url="configuration.html#FAST-REDIRECTS">+fast-redirects</ulink> \
+ <ulink url="configuration.html#FILTER">+filter{html-annoyances}</ulink> \
+ <ulink url="configuration.html#FILTER">+filter{js-annoyances}</ulink> \
+ <ulink url="configuration.html#FILTER">-filter{content-cookies}</ulink> \
+ <ulink url="configuration.html#FILTER">-filter{popups}</ulink> \
+ <ulink url="configuration.html#FILTER">+filter{webbugs}</ulink> \
+ <ulink url="configuration.html#FILTER">-filter{refresh-tags}</ulink> \
+ <ulink url="configuration.html#FILTER">-filter{fun}</ulink> \
+ <ulink url="configuration.html#FILTER">+filter{nimda}</ulink> \
+ <ulink url="configuration.html#FILTER">+filter{banners-by-size}</ulink> \
+ <ulink url="configuration.html#FILTER">-filter{shockwave-flash}</ulink> \
+ <ulink url="configuration.html#FILTER">-filter{crude-prental}</ulink> \
+ <ulink url="configuration.html#HIDE-FORWARDED-FOR-HEADERS">+hide-forwarded-for-headers</ulink> \
+ <ulink url="configuration.html#HIDE-FROM-HEADER">+hide-from-header{block}</ulink> \
+ <ulink url="configuration.html#HIDE-REFERER">-hide-referrer</ulink> \
+ <ulink url="configuration.html#HIDE-USER-AGENT">-hide-user-agent</ulink> \
+ <ulink url="configuration.html#HANDLE-AS-IMAGE">-handle-as-image</ulink> \
+ <ulink url="configuration.html#SET-IMAGE-BLOCKER">+set-image-blocker{pattern}</ulink> \
+ <ulink url="configuration.html#LIMIT-CONNECT">-limit-connect</ulink> \
+ <ulink url="configuration.html#PREVENT-COMPRESSION">+prevent-compression</ulink> \
+ <ulink url="configuration.html#SESSION-COOKIES-ONLY">-session-cookies-only</ulink> \
+ <ulink url="configuration.html#PREVENT-READING-COOKIES">-prevent-reading-cookies</ulink> \
+ <ulink url="configuration.html#PREVENT-SETTING-COOKIES">-prevent-setting-cookies</ulink> \
+ <ulink url="configuration.html#KILL-POPUPS">-kill-popups</ulink> \
+ <ulink url="configuration.html#SEND-VANILLA-WAFER">-send-vanilla-wafer</ulink> \
+ <ulink url="configuration.html#SEND-WAFER">-send-wafer</ulink> \
+ }
+ / # forward slash will match *all* potential URL patterns. 
+
+##########################################################################
+# Default behavior is now set. Time for some exceptions to our 
+# default actions.
+##########################################################################
+
+# These sites are very complex and require very minimal interference.
+# We'll disable most actions with our 'fragile' alias.
+ {fragile}
+ .office.microsoft.com           # surprise, surprise!
+ .windowsupdate.microsoft.com
+
+
+# Shopping sites - not as fragile but require some special 
+# handling. We still want to block ads, and we will allow 
+# persistant cookies via the 'shop' alias.
+ {shop}
+ .quietpc.com 
+ .worldpay.com   # for quietpc.com
+ .jungle.com
+ .scan.co.uk
+
+
+# These sites require pop-ups too :(  We'll combine our 'shop' 
+# alias with two other actions into one rule to allow all popups.
+ {shop -no-popups -filter{popups}}
+ .dabs.com
+ .overclockers.co.uk
+
+
+# The 'Fast-redirects' action breaks some sites. Disable this action
+# for these known sensitive sites.
+ {-fast-redirects}
+ www.ukc.ac.uk/cgi-bin/wac\.cgi\?
+ login.yahoo.com
+ edit.europe.yahoo.com
+ .google.com
+ .altavista.com/.*(like|url|link):http
+ .altavista.com/trans.*urltext=http
+ .nytimes.com
+
+
+# Define which file types will be treated as images. Important
+# for ad blocking.
+ {+handle-as-image}
+ /.*\.(gif|jpe?g|png|bmp|ico)
+
+
+# Now lets list some domains that are known ad generators. And
+# our alias here will block these as well as force them to be 
+# treated as images. This combination of actions is important 
+# for ad blocking. What the browser will show instead is 
+# determined by the setting of <ulink url="configuration.html#SET-IMAGE-BLOCKER"><quote>+set-image-blocker</quote></ulink>
+ {+imageblock}
+ ar.atwola.com 
+ .ad.doubleclick.net
+ .a.yimg.com/(?:(?!/i/).)*$
+ .a[0-9].yimg.com/(?:(?!/i/).)*$
+ bs*.gsanet.com
+ bs*.einets.com
+ .qkimg.net
+ ad.*.doubleclick.net
+
+
+# These will just simply be blocked. They will generate the BLOCKED
+# banner page, if matched. Heavy use of wildcards and regular 
+# expressions in this example.
+ {+block}
+ ad*.
+ .*ads.
+ banner?.
+ count*.
+ /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
+ /(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/
+ .hitbox.com 
+
+
+# The above block section will catch some sites we DO NOT want 
+# blocked via the wildcards and regular expressions. Now let's set 
+# exceptions to the exceptions so the good guys get better treatment.
+ {-block}
+ advogato.org
+ adsl.
+ ad[ud]*.
+ advice.
+# Let's just trust all .edu top level domains.
+ .edu
+ www.ugu.com/sui/ugu/adv
+# We'll need to access to path names containing 'download' 
+ .*downloads.
+ /downloads/
+# 'adv' is for globalintersec and means advanced, not advertisement
+ www.globalintersec.com/adv
+
+
+# Don't filter *anything* from our friends at sourceforge.
+# Notice we don't have to name the individual filter 
+# identifiers -- we just turn them all off in one fell swoop.
+ {-filter}
+ .sourceforge.net
+
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ So far we are painting with a broad brush by setting general policies. 
+ The above would be a reasonable starting point for many situations. Now, 
+ we want to be more specific and have customized rules that are more suitable
+ to our personal habits and preferences. These should be placed in 
+ <filename>user.action</filename>, which is parsed after all other 
+ actions files. So any settings here, will have the last word.
+</para>
+
+<para>
+ Now an example of a few things that one might do with a <filename>user.action</filename>
+ file. This is where user preferences are defined.
+</para>
+
+<!-- brief sample user.action here -->
+
+
+<!-- This is the old stuff. Left in temporarily for reference -->
+<!-- To be deleted when above is finished -->
+<para>
+ Some examples:
+</para>
+
+<para>
+ Turn off cookies by default, then allow a few through for specified sites 
+ (showing an excerpt from the <quote>default</quote> section of an actions
+ file ONLY):
+</para>
+  
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+ # Excerpt only:
+ # Allow cookies to and from the server, but
+ # for this browser session ONLY
+ { 
+   # other actions normally listed here...
+   -prevent-setting-cookies \
+   -prevent-reading-cookies \
+   +session-cookies-only   \  
+ }
+ / # match all URLs
+
+ # Exceptions to the above, sites that benefit from persistent cookies
+ # that are saved from one browser session to the next.
+ { -session-cookies-only }
+  .javasoft.com
+  .sun.com
+  .yahoo.com
+  .msdn.microsoft.com
+  .redhat.com
+
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ Now turn off <quote>fast redirects</quote>, and then we allow two exceptions:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+ # Turn them off (excerpt only)!
+ {
+  # other actions normally listed here...
+  +fast-redirects
+ }
+ / # match all URLs
+ # Reverse it for these two sites, which don't work right without it.
+ {-fast-redirects}
+  www.ukc.ac.uk/cgi-bin/wac\.cgi\?
+  login.yahoo.com
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ Turn on page filtering according to rules in the defined sections 
+ of <filename>default.filter</filename>, and make one exception for 
+ Sourceforge:
+ </para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+ # Run everything through the filter file, using only certain
+ # specified sections:
+ {
+  # other actions normally listed here...
+  +filter{html-annoyances} +filter{js-annoyances} +filter{kill-popups}\
+  +filter{webbugs} +filter{nimda} +filter{banners-by-size}
+ }
+ / #match all URLs
+              
+ # Then disable filtering of code from all sourceforge domains!
+ {-filter}
+  .sourceforge.net
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ Now some URLs that we want <quote>blocked</quote> (normally generates 
+ the <quote>blocked</quote> banner). Typically, the <quote>block</quote>
+ action is off by default in the upper section of an actions file, then enabled
+ against certain URLs and patterns in the lower part of the file. Many of these use <link
+ linkend="regex">regular expressions</link> that will expand to match multiple
+ URLs: </para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+  # Blocklist:
+  {+block}
+  ad*.
+  .*ads.
+  banner?.
+  count*.
+  /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
+  /(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/
+  .hitbox.com 
+  /.*/(ng)?adclient\.cgi
+  /.*/(plain|live|rotate)[-_.]?ads?/
+  /.*/abanners/
+  /autoads/
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ Note that many of these actions have the potential to cause a page to
+ misbehave, possibly even not to display at all. There are many ways 
+ a site designer may choose to design his site, and what HTTP header 
+ content, and other criteria, he may depend on. There is no way to have hard
+ and fast rules for all sites. See the <link
+ linkend="ACTIONSANAT">Appendix</link> for a brief example on troubleshooting
+ actions.
+</para>
+</sect4>
+
+</sect3>
+
+<!--  ~  End section  ~  -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3 id="aliases">
+<title>Aliases</title>
+<para>
+ Custom <quote>actions</quote>, known to <application>Privoxy</application>
+ as <quote>aliases</quote>, can be defined by combining other <quote>actions</quote>.
+ These can in turn be invoked just like the built-in <quote>actions</quote>.
+ Currently, an alias can contain any character except space, tab, <quote>=</quote>,
+ <quote>{</quote> or <quote>}</quote>. But please use only <quote>a</quote>-
+ <quote>z</quote>, <quote>0</quote>-<quote>9</quote>, <quote>+</quote>, and
+ <quote>-</quote>. Alias names are not case sensitive, and 
+ <emphasis>must be defined before other actions</emphasis> in the
+ actions file! And there can only be one set of <quote>aliases</quote>
+ defined per file. Each actions file may have its own aliases, but they are 
+ only visible within that file.
+</para>
+
+<para>
+ Now let's define a few aliases:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+ # Useful custom aliases we can use later. These must come first!
+ {{alias}}
+ +prevent-cookies = +prevent-setting-cookies +prevent-reading-cookies
+ -prevent-cookies = -prevent-setting-cookies -prevent-reading-cookies
+ fragile     = -block -prevent-cookies -filter -fast-redirects -hide-referer -kill-popups
+ shop        = -prevent-cookies -filter -fast-redirects
+ +imageblock = +block +handle-as-image
+
+ # Aliases defined from other aliases, for people who don't like to type 
+ # too much:  ;-)
+ c0 = +prevent-cookies
+ c1 = -prevent-cookies
+ #... etc.  Customize to your heart's content.
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ Some examples using our <quote>shop</quote> and <quote>fragile</quote>
+ aliases from above. These would appear in the lower sections of an 
+ actions file as exceptions to the default actions (as defined in the 
+ upper section):
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+ # These sites are very complex and require
+ # minimal interference.
+ {fragile}
+  .office.microsoft.com
+  .windowsupdate.microsoft.com
+  .nytimes.com
+
+ # Shopping sites - but we still want to block ads.
+ {shop}
+  .quietpc.com
+  .worldpay.com   # for quietpc.com
+  .scan.co.uk
+
+ # These shops require pop-ups also 
+ {shop -kill-popups}
+  .dabs.com
+  .overclockers.co.uk
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ The <quote>shop</quote> and <quote>fragile</quote> aliases are often used for 
+ <quote>problem</quote> sites that require most actions to be disabled 
+ in order to function properly.
+
+</para>
+
+</sect3>
+</sect2>
+
+<!--  ~  End section  ~  -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="filter-file">
+<title>The Filter File</title>
+<para>
+ Any web page can be dynamically modified with the filter file. This
+ modification can be removal, or re-writing, of any web page content,
+ including tags and non-visible content. The default filter file is
+ <filename>default.filter</filename>, located in the config directory. 
+</para>
+
+<para>
+ This is potentially a very powerful feature, and requires knowledge of both 
+ <quote>regular expression</quote> and HTML in order create custom 
+ filters. But, there are a number of useful filters included with 
+ <application>Privoxy</application> for many common situations.
+</para>
+
+<para>
+ The included example file is divided into sections. Each section begins 
+ with the <literal>FILTER</literal> keyword, followed by the identifier 
+ for that section, e.g. <quote>FILTER: webbugs</quote>. Each section performs
+ a similar type of filtering, such as <quote>html-annoyances</quote>.
+</para>
+
+<para>
+ This file uses regular expressions to alter or remove any string in the
+ target page. The expressions can only operate on one line at a time. Some
+ examples from the included default <filename>default.filter</filename>:
+</para>
+
+<para>
+ Stop web pages from displaying annoying messages in the status bar by
+ deleting such references:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+ FILTER: html-annoyances
+
+ # New browser windows should be resizeable and have a location and status
+ # bar. Make it so.
+ #
+ s/resizable="?(no|0)"?/resizable=1/ig s/noresize/yesresize/ig
+ s/location="?(no|0)"?/location=1/ig s/status="?(no|0)"?/status=1/ig
+ s/scrolling="?(no|0|Auto)"?/scrolling=1/ig
+ s/menubar="?(no|0)"?/menubar=1/ig 
+
+ # The &lt;BLINK&gt; tag was a crime!
+ #
+ s*&lt;blink&gt;|&lt;/blink&gt;**ig
+
+ # Is this evil? 
+ #
+ #s/framespacing="?(no|0)"?//ig
+ #s/margin(height|width)=[0-9]*//gi
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ Just for kicks, replace any occurrence of <quote>Microsoft</quote> with
+ <quote>MicroSuck</quote>, and have a little fun with topical buzzwords: 
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+ FILTER: fun
+
+ s/microsoft(?!.com)/MicroSuck/ig
+
+ # Buzzword Bingo:
+ #
+ s/industry-leading|cutting-edge|award-winning/&lt;font color=red&gt;&lt;b&gt;BINGO!&lt;/b&gt;&lt;/font&gt;/ig
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+<para>
+ Kill those pesky little web-bugs:
+</para>
+
+<para>
+ <literal>
+  <msgtext> 
+   <literallayout>
+ # webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking)
+ FILTER: webbugs
+
+ s/&lt;img\s+[^&gt;]*?(width|height)\s*=\s*['"]?1\D[^&gt;]*?(width|height)\s*=\s*['"]?1(\D[^&gt;]*?)?>/&lt;!-- Squished WebBug --&gt;/sig
+   </literallayout>
+  </msgtext> 
+ </literal>
+</para>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3>
+<title>The +filter Action</title>
+<para>
+ Filters are enabled with the <ulink
+ url="configuration.html#FILTER"><quote>+filter</quote></ulink> action from within 
+ one of the actions files. <quote>+filter</quote> requires one parameter, which 
+ should match one of the section identifiers in the filter file itself. Example:
+</para>
+
+<para>
+ <screen>
+  +filter{html-annoyances}
+ </screen>
+</para>
+
+<para>
+ This would activate that particular filter. Similarly, <quote>+filter</quote>
+ can be turned off for selected sites as:
+ <quote>-filter{html-annoyances}</quote>. Remember, all actions are off by
+ default, unless they are explicity enabled in one of the actions files.
+</para>
+
+</sect3>
+
+</sect2>
+
+<!--  ~  End section  ~  -->
+
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect2>
+<title>Templates</title>
+<para>
+ When <application>Privoxy</application> displays one of its internal 
+ pages, such as a 404 Not Found error page, it uses the appropriate template.
+ On Linux, BSD, and Unix, these are located in
+ <filename>/etc/privoxy/templates</filename> by default. These may be
+ customized, if desired. <filename>cgi-style.css</filename> is 
+ used to control the HTML attributes (fonts, etc).
+</para>
+<para>
+ The default <quote>Blocked</quote> banner page with the bright red top 
+ banner, is called just <quote><filename>blocked</filename></quote>. This 
+ may be customized or replaced with something else if desired.
+
+</para>
+</sect2>
+
+</sect1>
+
+<!--  ~  End section  ~  -->
+
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect1 id="contact"><title>Contacting the Developers, Bug Reporting and Feature
+Requests</title>
+
+<!-- Include contacting.sgml boilerplate: -->
+ &contacting;
+<!-- end boilerplate -->
+
+</sect1>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect1 id="copyright"><title>Copyright and History</title>
+
+<sect2><title>Copyright</title>
+<!-- Include copyright.sgml: -->
+ &copyright;
+<!-- end copyright -->
+</sect2>
+
+<!--  ~  End section  ~  -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+
+<sect2 id="history"><title>History</title>
+<!-- Include history.sgml: -->
+ &history;
+<!-- end history -->
+</sect2>
+</sect1>
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect1 id="seealso"><title>See Also</title>
+<!-- Include seealso.sgml: -->
+ &seealso;
+<!-- end seealso -->
+</sect1>
+
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect1 id="appendix"><title>Appendix</title>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="regex">
+<title>Regular Expressions</title>
+<para>
+ <application>Privoxy</application> can use <quote>regular expressions</quote> 
+ in various config files. Assuming support for <quote>pcre</quote> (Perl
+ Compatible Regular Expressions) is compiled in, which is the default. Such
+ configuration directives do not require regular expressions, but they can be
+ used to increase flexibility by matching a pattern with wild-cards against
+ URLs.
+</para>
+
+<para>
+ If you are reading this, you probably don't understand what <quote>regular
+ expressions</quote> are, or what they can do. So this will be a very brief
+ introduction only. A full explanation would require a book ;-)
+</para>
+
+<para>
+ <quote>Regular expressions</quote> is a way of matching one character
+ expression against another to see if it matches or not. One of the
+ <quote>expressions</quote> is a literal string of readable characters
+ (letter, numbers, etc), and the other is a complex string of literal
+ characters combined with wild-cards, and other special characters, called
+ meta-characters. The <quote>meta-characters</quote> have special meanings and
+ are used to build the complex pattern to be matched against. Perl Compatible
+ Regular Expressions is an enhanced form of the regular expression language
+ with backward compatibility.
+</para>
+
+<para>
+ To make a simple analogy, we do something similar when we use wild-card
+ characters when listing files with the <command>dir</command> command in DOS. 
+ <literal>*.*</literal> matches all filenames. The <quote>special</quote>
+ character here is the asterisk which matches any and all characters. We can be
+ more specific and use <literal>?</literal> to match just individual
+ characters. So <quote>dir file?.text</quote> would match
+ <quote>file1.txt</quote>, <quote>file2.txt</quote>, etc. We are pattern
+ matching, using a similar technique to <quote>regular expressions</quote>!
+</para>
+
+<para>
+ Regular expressions do essentially the same thing, but are much, much more
+ powerful. There are many more <quote>special characters</quote> and ways of 
+ building complex patterns however. Let's look at a few of the common ones,
+ and then some examples:
+</para>
+
+<para><simplelist>
+ <member>
+  <emphasis>.</emphasis> - Matches any single character, e.g. <quote>a</quote>,
+  <quote>A</quote>, <quote>4</quote>, <quote>:</quote>, or <quote>@</quote>.
+ </member>
+</simplelist></para>
+
+<para><simplelist>
+ <member>
+  <emphasis>?</emphasis> - The preceding character or expression is matched ZERO or ONE
+  times. Either/or.
+ </member>
+</simplelist></para>
+
+<para><simplelist>
+ <member>
+  <emphasis>+</emphasis> - The preceding character or expression is matched ONE or MORE
+  times.
+ </member>
+</simplelist></para>
+
+<para><simplelist>
+ <member>
+  <emphasis>*</emphasis> - The preceding character or expression is matched ZERO or MORE
+  times.
+ </member>
+</simplelist></para>
+
+<para><simplelist>
+ <member>
+  <emphasis>\</emphasis> - The <quote>escape</quote> character denotes that
+  the following character should be taken literally. This is used where one of the 
+  special characters (e.g. <quote>.</quote>) needs to be taken literally and
+  not as a special meta-character. Example: <quote>example\.com</quote>, makes 
+  sure the period is recognized only as a period (and not expanded to its 
+  meta-character meaning of any single character).
+ </member>
+</simplelist></para>
+
+<para><simplelist>
+ <member>
+  <emphasis>[]</emphasis> - Characters enclosed in brackets will be matched if
+  any of the enclosed characters are encountered. For instance, <quote>[0-9]</quote>
+  matches any numeric digit (zero through nine). As an example, we can combine 
+  this with <quote>+</quote> to match any digit one of more times: <quote>[0-9]+</quote>.
+ </member>
+</simplelist></para>
+
+<para><simplelist>
+ <member>
+  <emphasis>()</emphasis> - parentheses are used to group a sub-expression,
+  or multiple sub-expressions.
+ </member>
+</simplelist></para>
+
+<para><simplelist>
+ <member>
+  <emphasis>|</emphasis> - The <quote>bar</quote> character works like an
+  <quote>or</quote> conditional statement. A match is successful if the
+  sub-expression on either side of <quote>|</quote> matches. As an example:
+  <quote>/(this|that) example/</quote> uses grouping and the bar character 
+  and would match either <quote>this example</quote> or <quote>that
+  example</quote>, and nothing else.
+ </member>
+</simplelist></para>
+
+<para><simplelist>
+ <member>
+  <emphasis>s/string1/string2/g</emphasis> - This is used to rewrite strings of text. 
+  <quote>string1</quote> is replaced by <quote>string2</quote> in this
+  example. There must of course be a match on <quote>string1</quote> first.
+ </member>
+</simplelist></para>
+
+<para>
+ These are just some of the ones you are likely to use when matching URLs with 
+ <application>Privoxy</application>, and is a long way from a definitive
+ list. This is enough to get us started with a few simple examples which may
+ be more illuminating:
+</para>
+
+<para>
+ <emphasis><literal>/.*/banners/.*</literal></emphasis> - A  simple example
+ that uses the common combination of <quote>.</quote> and <quote>*</quote> to 
+ denote any character, zero or more times. In other words, any string at all.
+ So we start with a literal forward slash, then our regular expression pattern 
+ (<quote>.*</quote>) another literal forward slash, the string
+ <quote>banners</quote>, another forward slash, and lastly another
+ <quote>.*</quote>. We are building 
+ a directory path here. This will match any file with the path that has a
+ directory named <quote>banners</quote> in it. The <quote>.*</quote> matches
+ any characters, and this could conceivably be more forward slashes, so it
+ might expand into a much longer looking path. For example, this could match:
+ <quote>/eye/hate/spammers/banners/annoy_me_please.gif</quote>, or just
+ <quote>/banners/annoying.html</quote>, or almost an infinite number of other
+ possible combinations, just so it has <quote>banners</quote> in the path
+ somewhere.
+</para>
+
+<para>
+ A now something a little more complex:
+</para>
+
+<para>
+ <emphasis><literal>/.*/adv((er)?ts?|ertis(ing|ements?))?/</literal></emphasis> - 
+ We have several literal forward slashes again (<quote>/</quote>), so we are
+ building another expression that is a file path statement. We have another 
+ <quote>.*</quote>, so we are matching against any conceivable sub-path, just so
+ it matches our expression. The only true literal that <emphasis>must
+ match</emphasis> our pattern is <application>adv</application>, together with
+ the forward slashes. What comes after the <quote>adv</quote> string is the
+ interesting part. 
+</para>
+
+<para>
+ Remember the <quote>?</quote> means the preceding expression (either a
+ literal character or anything grouped with <quote>(...)</quote> in this case)
+ can exist or not, since this means either zero or one match. So
+ <quote>((er)?ts?|ertis(ing|ements?))</quote> is optional, as are the
+ individual sub-expressions: <quote>(er)</quote>,
+ <quote>(ing|ements?)</quote>, and the <quote>s</quote>. The <quote>|</quote>
+ means <quote>or</quote>. We have two of those. For instance, 
+ <quote>(ing|ements?)</quote>, can expand to match either <quote>ing</quote> 
+ <emphasis>OR</emphasis> <quote>ements?</quote>. What is being done here, is an
+ attempt at matching as many variations of <quote>advertisement</quote>, and 
+ similar, as possible. So this would expand to match just <quote>adv</quote>,
+ or <quote>advert</quote>, or <quote>adverts</quote>, or
+ <quote>advertising</quote>, or <quote>advertisement</quote>, or
+ <quote>advertisements</quote>. You get the idea. But it would not match 
+ <quote>advertizements</quote> (with a <quote>z</quote>). We could fix that by
+ changing our regular expression to: 
+ <quote>/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/</quote>, which would then match
+ either spelling.
+</para>
+
+<para>
+ <emphasis><literal>/.*/advert[0-9]+\.(gif|jpe?g)</literal></emphasis> - Again 
+ another path statement with forward slashes. Anything in the square brackets 
+ <quote>[]</quote> can be matched. This is using <quote>0-9</quote> as a
+ shorthand expression to mean any digit one through nine. It is the same as
+ saying <quote>0123456789</quote>. So any digit matches. The <quote>+</quote>
+ means one or more of the preceding expression must be included. The preceding 
+ expression here is what is in the square brackets -- in this case, any digit 
+ one through nine. Then, at the end, we have a grouping: <quote>(gif|jpe?g)</quote>. 
+ This includes a <quote>|</quote>, so this needs to match the expression on
+ either side of that bar character also. A simple <quote>gif</quote> on one side, and the other
+ side will in turn match either <quote>jpeg</quote> or <quote>jpg</quote>,
+ since the <quote>?</quote> means the letter <quote>e</quote> is optional and
+ can be matched once or not at all. So we are building an expression here to
+ match image GIF or JPEG type image file. It must include the literal
+ string <quote>advert</quote>, then one or more digits, and a <quote>.</quote>
+ (which is now a literal, and not a special character, since it is escaped
+ with <quote>\</quote>), and lastly either <quote>gif</quote>, or
+ <quote>jpeg</quote>, or <quote>jpg</quote>. Some possible matches would
+ include: <quote>//advert1.jpg</quote>,
+ <quote>/nasty/ads/advert1234.gif</quote>,
+ <quote>/banners/from/hell/advert99.jpg</quote>. It would not match
+ <quote>advert1.gif</quote> (no leading slash), or
+ <quote>/adverts232.jpg</quote> (the expression does not include an
+ <quote>s</quote>), or <quote>/advert1.jsp</quote> (<quote>jsp</quote> is not
+ in the expression anywhere).
+</para>
+
+<para>
+ <emphasis><literal>s/microsoft(?!.com)/MicroSuck/i</literal></emphasis> - This is 
+ a substitution. <quote>MicroSuck</quote> will replace any occurrence of 
+ <quote>microsoft</quote>.  The <quote>i</quote> at the end of the expression
+ means ignore case. The <quote>(?!.com)</quote> means 
+ the match should fail if <quote>microsoft</quote> is followed by
+ <quote>.com</quote>. In other words, this acts like a <quote>NOT</quote>
+ modifier. In case this is a hyperlink, we don't want to break it ;-).
+</para>
+
+<para>
+ We are barely scratching the surface of regular expressions here so that you
+ can understand the default <application>Privoxy</application>
+ configuration files, and maybe use this knowledge to customize your own
+ installation. There is much, much more that can be done with regular
+ expressions. Now that you know enough to get started, you can learn more on
+ your own :/
+</para>
+
+<para>
+ More reading on Perl Compatible Regular expressions: 
+ <ulink url="http://www.perldoc.com/perl5.6/pod/perlre.html">http://www.perldoc.com/perl5.6/pod/perlre.html</ulink>
+</para>
+
+</sect2>
+
+<!--  ~  End section  ~  -->
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2>
+<title><application>Privoxy</application>'s Internal Pages</title>
+
+<para>
+ Since <application>Privoxy</application> proxies each requested 
+ web page, it is easy for <application>Privoxy</application> to 
+ trap certain special URLs. In this way, we can talk directly to
+ <application>Privoxy</application>, and see how it is 
+ configured, see how our rules are being applied, change these 
+ rules and other configuration options, and even turn
+ <application>Privoxy's</application> filtering off, all with 
+ a web browser.
+
+</para>
+
+<para>
+ The URLs listed below are the special ones that allow direct access 
+ to <application>Privoxy</application>. Of course,
+ <application>Privoxy</application> must be running to access these. If 
+ not, you will get a friendly error message. Internet access is not 
+ necessary either.
+</para>
+
+<para>
+ <itemizedlist>
+
+ <listitem>
+  <para>  
+   Privoxy main page: 
+  </para>
+  <blockquote>
+   <para> 
+     <ulink url="http://config.privoxy.org/">http://config.privoxy.org/</ulink>
+   </para>
+  </blockquote>
+  <para>
+   Alternately, this may be reached at <ulink
+   url="http://p.p/">http://p.p/</ulink>, but this
+   variation may not work as reliably as the above in some configurations.
+  </para>
+ </listitem>
+
+ <listitem>
+  <para>  
+    Show information about the current configuration, including viewing and 
+    editing of actions files:
+  </para>
+   <blockquote>
+   <para> 
+    <ulink url="http://config.privoxy.org/show-status">http://config.privoxy.org/show-status</ulink>
+   </para>
+  </blockquote>
+ </listitem>
+ <listitem>
+  <para>  
+    Show the source code version numbers:
+  </para>
+  <blockquote>
+   <para> 
+    <ulink url="http://config.privoxy.org/show-version">http://config.privoxy.org/show-version</ulink>
+   </para>
+  </blockquote>
+ </listitem>
+ <listitem>
+  <para>  
+   Show the browser's request headers:
+  </para>
+  <blockquote>
+   <para> 
+    <ulink url="http://config.privoxy.org/show-request">http://config.privoxy.org/show-request</ulink>
+   </para>
+  </blockquote>
+ </listitem>
+ <listitem>
+  <para>  
+   Show which actions apply to a URL and why:
+  </para>
+   <blockquote>
+   <para> 
+    <ulink url="http://config.privoxy.org/show-url-info">http://config.privoxy.org/show-url-info</ulink>
+   </para>
+  </blockquote>
+ </listitem>
+ <listitem>
+  <para>  
+   Toggle Privoxy on or off. In this case, <quote>Privoxy</quote> continues 
+   to run, but only as a pass-through proxy, with no actions taking place:
+  </para>
+   <blockquote>
+   <para> 
+    <ulink url="http://config.privoxy.org/toggle">http://config.privoxy.org/toggle</ulink>
+   </para>
+  </blockquote>
+  <para>
+   Short cuts. Turn off, then on: 
+  </para>
+   <blockquote>
+   <para> 
+     <ulink url="http://config.privoxy.org/toggle?set=disable">http://config.privoxy.org/toggle?set=disable</ulink>
+   </para>
+  </blockquote>
+   <blockquote>
+   <para> 
+     <ulink url="http://config.privoxy.org/toggle?set=enable">http://config.privoxy.org/toggle?set=enable</ulink>
+   </para>
+  </blockquote>
+ </listitem>
+ </itemizedlist>
+</para>
+
+<para>
+ These may be bookmarked for quick reference. See next.
+
+</para>
+
+<sect3 id="bookmarklets">
+<title>Bookmarklets</title>
+<para>
+ Below are some <quote>bookmarklets</quote> to allow you to easily access a
+ <quote>mini</quote> version of some of <application>Privoxy's</application>
+ special pages. They are designed for MS Internet Explorer, but should work
+ equally well in Netscape, Mozilla, and other browsers which support
+ JavaScript. They are designed to run directly from your bookmarks - not by
+ clicking the links below (although that should work for testing).
+</para>
+<para>
+ To save them, right-click the link and choose <quote>Add to Favorites</quote>
+ (IE) or <quote>Add Bookmark</quote> (Netscape). You will get a warning that
+ the bookmark <quote>may not be safe</quote> - just click OK. Then you can run the
+ Bookmarklet directly from your favorites/bookmarks. For even faster access,
+ you can put them on the <quote>Links</quote> bar (IE) or the <quote>Personal
+ Toolbar</quote> (Netscape), and run them with a single click. 
+</para>
+
+<para>
+ <itemizedlist>
+
+  <listitem>
+   <para>
+    <ulink
+    url="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&#38;set=enabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Privoxy - Enable</ulink>
+   </para>
+  </listitem> 
+
+  <listitem>
+   <para>
+    <ulink
+    url="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&#38;set=disabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Privoxy - Disable</ulink>
+   </para>
+  </listitem> 
+
+  <listitem>
+   <para>
+    <ulink
+    url="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&#38;set=toggle','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Privoxy - Toggle Privoxy</ulink> (Toggles between enabled and disabled)
+   </para>
+  </listitem> 
+
+  <listitem>
+   <para>
+    <ulink
+    url="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y','ijbstatus','width=250,height=2,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Privoxy- View Status</ulink>
+   </para>
+  </listitem> 
+
+  <listitem>
+   <para>
+    <ulink url="javascript:w=Math.floor(screen.width/2);h=Math.floor(screen.height*0.9);void(window.open('http://www.privoxy.org/actions','Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());">Privoxy - Submit Filter Feedback</ulink>
+   </para>
+  </listitem> 
+
+ </itemizedlist>
+</para>
+
+
+
+<para>
+ Credit: The site which gave me the general idea for these bookmarklets is
+ <ulink url="http://www.bookmarklets.com">www.bookmarklets.com</ulink>. They
+ have more information about bookmarklets. 
+</para>
+
+
+</sect3>
+
+</sect2>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="chain">
+<title>Chain of Events</title>
+<para>
+ Let's take a quick look at the basic sequence of events when a web page is 
+ requested by your browser and <application>Privoxy</application> is on duty:
+</para>
+
+<para>
+ <itemizedlist>
+ <listitem>
+  <para>
+   First, your web browser requests a web page. The browser knows to send 
+   the request to <application>Privoxy</application>, which will in turn, 
+   relay the request to the remote web server after passing the following 
+   tests: 
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   <application>Privoxy</application> traps any request for its own internal CGI 
+   pages (e.g http://p.p/) and sends the CGI page back to the browser.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   Next, <application>Privoxy</application> checks to see if the URL 
+   matches any <ulink
+   url="configuration.html#BLOCK"><quote>+block</quote></ulink> patterns. If
+   so, the URL is then blocked, and the remote web server will not be contacted.
+   <ulink url="configuration.html#HANDLE-AS-IMAGE"><quote>+handle-as-image</quote></ulink> 
+   is then checked and if it does not match, an 
+   HTML <quote>BLOCKED</quote> page is sent back. Otherwise, if it does match,
+   an image is returned. The type of image depends on the setting of <ulink
+   url="configuration.html#SET-IMAGE-BLOCKER"><quote>+set-image-blocker</quote></ulink>
+   (blank, checkerboard pattern, or an HTTP redirect to an image elsewhere).
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   Untrusted URLs are blocked. If URLs are being added to the
+   <filename>trust</filename> file, then that is done.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   If the URL pattern matches the <ulink
+   url="configuration.html#FAST-REDIRECTS"><quote>+fast-redirects</quote></ulink> action,
+   it is then processed. Unwanted parts of the requested URL are stripped.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   Now the rest of the client browser's request headers are processed. If any
+   of these match any of the relevant actions (e.g. <ulink
+   url="configuration.html#HIDE-USER-AGENT"><quote>+hide-user-agent</quote></ulink>,
+   etc.), headers are suppressed or forged as determined by these actions and
+   their parameters.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   Now the web server starts sending its response back (i.e. typically a web page and related 
+   data).
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   First, the server headers are read and processed to determine, among other
+   things, the MIME type (document type) and encoding. The headers are then
+   filtered as deterimed by the 
+   <ulink url="configuration.html#PREVENT-SETTING-COOKIES"><quote>+prevent-setting-cookies</quote></ulink>,
+   <ulink url="configuration.html#SESSION-COOKIES-ONLY"><quote>+session-cookies-only</quote></ulink>,
+   and <ulink url="configuration.html#DOWNGRADE-HTTP-VERSION"><quote>+downgrade-http-version</quote></ulink>
+   actions.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   If the <ulink url="configuration.html#KILL-POPUPS"><quote>+kill-popups</quote></ulink>
+   action applies, and it is an HTML or JavaScript document, the popup-code in the
+   response is filtered on-the-fly as it is received.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   If a <ulink url="configuration.html#FILTER"><quote>+filter</quote></ulink>
+   or <ulink
+   url="configuration.html#DEANIMATE-GIFS"><quote>+deanimate-gifs</quote></ulink>
+   action applies (and the document type fits the action), the rest of the page is
+   read into memory (up to a configurable limit). Then the filter rules (from
+   <filename>default.filter</filename>) are processed against the buffered
+   content. Filters are applied in the order they are specified in the
+   <filename>default.filter</filename> file. Animated GIFs, if present, are
+   reduced to either the first or last frame, depending on the action
+   setting.The entire page, which is now filtered, is then sent by
+   <application>Privoxy</application> back to your browser. 
+  </para>
+  <para>
+   If neither <ulink url="configuration.html#FILTER"><quote>+filter</quote></ulink>
+   or <ulink
+   url="configuration.html#DEANIMATE-GIFS"><quote>+deanimate-gifs</quote></ulink>
+   matches, then <application>Privoxy</application> passes the raw data through 
+   to the client browser as it becomes available.
+  </para>
+ </listitem> 
+ <listitem>
+  <para>
+   As the browser receives the now (probably filtered) page content, it 
+   reads and then requests any URLs that may be embedded within the page
+   source, e.g. ad images, stylesheets, JavaScript, other HTML documents (e.g.
+   frames), sounds, etc. For each of these objects, the browser issues a new
+   request. And each such request is in turn processed as above. Note that a
+   complex web page may have many such embedded URLs.
+  </para>
+ </listitem> 
+ </itemizedlist>
+</para>
+
+</sect2>
+
+
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect2 id="actionsanat">
+<title>Anatomy of an Action</title>
+
+<para>
+ The way <application>Privoxy</application> applies 
+ <ulink url="configuration.html#ACTIONS"><quote>actions</quote></ulink>
+ and <ulink url="configuration.html#FILTER"><quote>filters</quote></ulink>
+ to any given URL can be complex, and not always so
+ easy to understand what is happening. And sometimes we need to be able to
+ <emphasis>see</emphasis> just what <application>Privoxy</application> is
+ doing. Especially, if something <application>Privoxy</application> is doing
+ is causing us a problem inadvertently. It can be a little daunting to look at
+ the actions and filters files themselves, since they tend to be filled with
+ <quote>regular expressions</quote> whose consequences are not always 
+ so obvious. 
+</para>
+
+<para>
+ One quick test to see if <application>Privoxy</application> is causing a problem 
+ or not, is to disable it temporarily. This should be the first troubleshooting 
+ step. See <link linkend="bookmarklets">the Bookmarklets</link> section on a quick 
+ and easy way to do this (be sure to flush caches afterward!).
+</para>
+
+<para>
+ <application>Privoxy</application> also provides the 
+ <ulink url="http://config.privoxy.org/show-url-info">http://config.privoxy.org/show-url-info</ulink>
+ page that can show us very specifically how <application>actions</application>
+ are being applied to any given URL. This is a big help for troubleshooting.
+</para>
+
+<para>
+ First, enter one URL (or partial URL) at the prompt, and then
+ <application>Privoxy</application> will tell us 
+ how the current configuration will handle it. This will not
+ help with filtering effects (i.e. the <ulink
+ url="configuration.html#FILTER"><quote>+filter</quote></ulink> action) from
+ the <filename>default.filter</filename> file since this is handled very
+ differently and not so easy to trap! It also will not tell you about any other
+ URLs that may be embedded within the URL you are testing. For instance, images
+ such as ads are expressed as URLs within the raw page source of HTML pages. So
+ you will only get info for the actual URL that is pasted into the prompt area
+ -- not any sub-URLs. If you want to know about embedded URLs like ads, you
+ will have to dig those out of the HTML source. Use your browser's <quote>View
+ Page Source</quote> option for this. Or right click on the ad, and grab the
+ URL.
+</para>
+
+<para>
+ Let's try an example, <ulink url="http://google.com">google.com</ulink>, 
+ and look at it one section at a time:
+</para>
+
+<para>
+ <screen>
+ Matches for http://google.com:
+
+--- File standard ---
+(no matches in this file)
+
+--- File default ---
+
+{ -add-header -block +deanimate-gifs{last} -downgrade-http-version +fast-redirects 
+ -filter{popups} -filter{fun} -filter{shockwave-flash} -filter{crude-parental} 
+ +filter{html-annoyances} +filter{js-annoyances} +filter{content-cookies} 
+ +filter{webbugs} +filter{refresh-tags} +filter{nimda} +filter{banners-by-size} 
+ +hide-forwarded-for-headers +hide-from-header{block} +hide-referer{forge} 
+ -hide-user-agent -handle-as-image +set-image-blocker{pattern} -limit-connect 
+ +prevent-compression +session-cookies-only -prevent-reading-cookies 
+ -prevent-setting-cookies -kill-popups -send-vanilla-wafer -send-wafer }
+/
+
+ { -session-cookies-only }
+ .google.com
+
+ { -fast-redirects }
+ .google.com
+
+--- File user ---
+(no matches in this file)  
+</screen>
+</para>
+
+<para>
+ This tells us how we have defined our 
+ <ulink url="configuration.html#ACTIONS"><quote>actions</quote></ulink>, and
+ which ones match for our example, <quote>google.com</quote>. The first listing
+ is any matches for the <filename>standard.action</filename> file. No hits at
+ all here on <quote>standard</quote>. Then next is <quote>default</quote>, or
+ our <filename>default.action</filename> file. The large, multi-line listing,
+ is how the actions are set to match for all URLs, i.e. our default settings.
+ If you look at your <quote>actions</quote> file, this would be the section
+ just below the <quote>aliases</quote> section near the top. This will apply to
+ all URLs as signified by the single forward slash at the end of the listing
+ -- <quote>/</quote>.
+</para>
+
+<para>
+ But we can define additional actions that would be exceptions to these general
+ rules, and then list specific URLs (or patterns) that these exceptions would
+ apply to. Last match wins. Just below this then are two explicit matches for
+ <quote>.google.com</quote>. The first is negating our previous cookie setting, 
+ which was for <ulink
+ url="configuration.html#SESSION-COOKIES-ONLY"><quote>+session-cookies-only</quote></ulink>
+ (i.e. not persistent). So we will allow persistent cookies for google. The
+ second turns <emphasis>off</emphasis> any 
+ <ulink
+ url="configuration.html#FAST-REDIRECTS"><quote>+fast-redirects</quote></ulink>
+ action, allowing this to take place unmolested. Note that there is a leading
+ dot here -- <quote>.google.com</quote>. This will match any hosts and
+ sub-domains, in the google.com domain also, such as
+ <quote>www.google.com</quote>. So, apparently, we have these two actions
+ defined somewhere in the lower part of our <filename>default.action</filename>
+ file, and <quote>google.com</quote> is referenced somewhere in these latter
+ sections.
+</para>
+
+<para>
+ Then, for our <filename>user.action</filename> file, we again have no hits.
+</para>
+
+<para>
+ And finally we pull it all together in the bottom section and summarize how
+ <application>Privoxy</application> is applying all its <quote>actions</quote> 
+ to <quote>google.com</quote>:
+
+</para>
+
+<para>
+ <screen>
+
+ Final results:
+ -add-header -block +deanimate-gifs{last} -downgrade-http-version -fast-redirects 
+ -filter{popups} -filter{fun} -filter{shockwave-flash} -filter{crude-parental} 
+ +filter{html-annoyances} +filter{js-annoyances} +filter{content-cookies} 
+ +filter{webbugs} +filter{refresh-tags} +filter{nimda} +filter{banners-by-size} 
+ +hide-forwarded-for-headers +hide-from-header{block} +hide-referer{forge} 
+ -hide-user-agent -handle-as-image +set-image-blocker{pattern} -limit-connect 
+ +prevent-compression -session-cookies-only -prevent-reading-cookies 
+ -prevent-setting-cookies -kill-popups -send-vanilla-wafer -send-wafer
+</screen>
+</para>
+
+<para>
+ Notice the only difference here to the previous listing, is to 
+ <quote>fast-redirects</quote> and <quote>session-cookies-only</quote>.
+</para>
+
+<para>
+ Now another example, <quote>ad.doubleclick.net</quote>:
+</para>
+
+<para>
+ <screen>
+
+ { +block +handle-as-image }
+  .ad.doubleclick.net
+
+ { +block +handle-as-image }
+  ad*.
+
+ { +block +handle-as-image }
+  .doubleclick.net
+</screen>
+</para>
+
+<para>
+ We'll just show the interesting part here, the explicit matches. It is 
+ matched three different times. Each as an <quote>+block +handle-as-image</quote>,
+ which is the expanded form of one of our aliases that had been defined as: 
+ <quote>+imageblock</quote>. (<ulink
+ url="configuration.html#ALIASES"><quote>Aliases</quote></ulink> are defined in
+ the first section of the actions file and typically used to combine more 
+ than one action.)
+</para>
+
+<para>
+ Any one of these would have done the trick and blocked this as an unwanted 
+ image. This is unnecessarily redundant since the last case effectively 
+ would also cover the first. No point in taking chances with these guys 
+ though ;-) Note that if you want an ad or obnoxious 
+ URL to be invisible, it should be defined as <quote>ad.doubleclick.net</quote>
+ is done here -- as both a <ulink
+ url="configuration.html#BLOCK"><quote>+block</quote></ulink>
+ <emphasis>and</emphasis> an 
+ <ulink
+ url="configuration.html#HANDLE-AS-IMAGE"><quote>+handle-as-image</quote></ulink>.
+ The custom alias <quote>+imageblock</quote> just simplifies the process and make 
+ it more readable.
+</para>
+
+<para>
+ One last example. Let's try <quote>http://www.rhapsodyk.net/adsl/HOWTO/</quote>.
+ This one is giving us problems. We are getting a blank page. Hmmm...
+</para>
+
+<para>
+ <screen>
+
+ Matches for http://www.rhapsodyk.net/adsl/HOWTO/:
+
+ { -add-header -block +deanimate-gifs -downgrade-http-version +fast-redirects 
+   +filter{html-annoyances} +filter{js-annoyances} +filter{kill-popups} 
+   +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal} 
+   +filter{fun} +hide-forwarded-for-headers +hide-from-header{block} 
+   +hide-referer{forge} -hide-user-agent -handle-as-image +set-image-blocker{blank} 
+   +prevent-compression +session-cookies-only -prevent-setting-cookies 
+   -prevent-reading-cookies +kill-popups -send-vanilla-wafer -send-wafer }
+   /
+
+ { +block +handle-as-image }
+  /ads
+</screen>
+</para>
+
+<para>
+ Ooops, the <quote>/adsl/</quote> is matching <quote>/ads</quote>! But 
+ we did not want this at all! Now we see why we get the blank page. We could
+ now add a new action below this that explicitly does <emphasis>not</emphasis>
+ block (<quote>{-block}</quote>) paths with <quote>adsl</quote>. There are
+ various ways to handle such exceptions. Example:
+</para>
+
+<para>
+ <screen>
+
+ { -block }
+  /adsl
+</screen>
+</para>
+
+<para>
+ Now the page displays ;-) Be sure to flush your browser's caches when 
+ making such changes. Or, try using <literal>Shift+Reload</literal>.
+</para>
+
+<para>
+ But now what about a situation where we get no explicit matches like 
+ we did with:
+</para>
+
+<para>
+ <screen>
+
+ { +block +handle-as-image }
+ /ads
+</screen>
+</para>
+
+<para>
+ That actually was very telling and pointed us quickly to where the problem
+ was. If you don't get this kind of match, then it means one of the default 
+ rules in the first section is causing the problem. This would require some 
+ guesswork, and maybe a little trial and error to isolate the offending rule.
+ One likely cause would be one of the <quote>{+filter}</quote> actions. Try 
+ adding the URL for the site to one of aliases that turn off <quote>+filter</quote>:
+</para>
+
+<para>
+ <screen>
+
+ {shop}
+ .quietpc.com
+ .worldpay.com   # for quietpc.com
+ .jungle.com
+ .scan.co.uk
+ .forbes.com
+</screen>
+</para>
+
+<para>
+ <quote>{shop}</quote> is an <quote>alias</quote> that expands to 
+ <quote>{ -filter -session-cookies-only }</quote>.
+ Or you could do your own exception to negate filtering:
+
+</para>
+
+<para>
+ <screen>
+
+ {-filter}
+ .forbes.com
+</screen>
+</para>
+
+<para>
+ This would probably be most appropriately put in <filename>user.action</filename>, 
+ for local site exceptions.
+</para>
+
+<para>
+ <quote>{fragile}</quote> is an alias that disables most actions. This can be 
+ used as a last resort for problem sites. Remember to flush caches! If this 
+ still does not work, you will have to go through the remaining actions one by
+ one to find which one(s) is causing the problem.
+</para>
+
+</sect2>
+
+</sect1>
+
+ <!--
+
+ This program is free software; you can redistribute it 
+ and/or modify it under the terms of the GNU General
+ Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE.  See the GNU General Public
+ License for more details.
+
+ The GNU General Public License should be included with
+ this file.  If not, you can view it at
+ http://www.gnu.org/copyleft/gpl.html
+ or write to the Free Software Foundation, Inc., 59
+ Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+ $Log: user-manual.sgml,v $
+ Revision 1.95  2002/04/26 17:23:29  swa
+ bookmarks cleaned, changed structure of user manual, screen and programlisting cleanups, and numerous other changes that I forgot
+
+ Revision 1.94  2002/04/26 05:24:36  hal9
+ -Add most of Andreas suggestions to Chain of Events section.
+ -A few other minor corrections and touch up.
+
+ Revision 1.92  2002/04/25 18:55:13  hal9
+ More catchups on new actions files, and new actions names.
+ Other assorted cleanups, and minor modifications.
+
+ Revision 1.91  2002/04/24 02:39:31  hal9
+ Add 'Chain of Events' section.
+
+ Revision 1.90  2002/04/23 21:41:25  hal9
+ Linuxconf is deprecated on RH, substitute chkconfig.
+
+ Revision 1.89  2002/04/23 21:05:28  oes
+ Added hint for startup on Red Hat
+
+ Revision 1.88  2002/04/23 05:37:54  hal9
+ Add AmigaOS install stuff.
+
+ Revision 1.87  2002/04/23 02:53:15  david__schmidt
+ Updated OSX installation section
+ Added a few English tweaks here an there
+
+ Revision 1.86  2002/04/21 01:46:32  hal9
+ Re-write actions section.
+
+ Revision 1.85  2002/04/18 21:23:23  hal9
+ Fix ugly typo (mine).
+
+ Revision 1.84  2002/04/18 21:17:13  hal9
+ Spell Redhat correctly (ie Red Hat). A few minor grammar corrections.
+
+ Revision 1.83  2002/04/18 18:21:12  oes
+ Added RPM install detail
+
+ Revision 1.82  2002/04/18 12:04:50  oes
+ Cosmetics
+
+ Revision 1.81  2002/04/18 11:50:24  oes
+ Extended Install section - needs fixing by packagers
+
+ Revision 1.80  2002/04/18 10:45:19  oes
+ Moved text to buildsource.sgml, renamed some filters, details
+
+ Revision 1.79  2002/04/18 03:18:06  hal9
+ Spellcheck, and minor touchups.
+
+ Revision 1.78  2002/04/17 18:04:16  oes
+ Proofreading part 2
+
+ Revision 1.77  2002/04/17 13:51:23  oes
+ Proofreading, part one
+
+ Revision 1.76  2002/04/16 04:25:51  hal9
+ -Added 'Note to Upgraders' and re-ordered the 'Quickstart' section.
+ -Note about proxy may need requests to re-read config files.
+
+ Revision 1.75  2002/04/12 02:08:48  david__schmidt
+ Remove OS/2 building info... it is already in the developer-manual
+
+ Revision 1.74  2002/04/11 00:54:38  hal9
+ Add small section on submitting actions.
+
+ Revision 1.73  2002/04/10 18:45:15  swa
+ generated
+
+ Revision 1.72  2002/04/10 04:06:19  hal9
+ Added actions feedback  to Bookmarklets section
+
+ Revision 1.71  2002/04/08 22:59:26  hal9
+ Version update. Spell chkconfig correctly :)
+
+ Revision 1.70  2002/04/08 20:53:56  swa
+ ?
+
+ Revision 1.69  2002/04/06 05:07:29  hal9
+ -Add privoxy-man-page.sgml, for man page.
+ -Add authors.sgml for AUTHORS (and p-authors.sgml)
+ -Reworked various aspects of various docs.
+ -Added additional comments to sub-docs.
+
+ Revision 1.68  2002/04/04 18:46:47  swa
+ consistent look. reuse of copyright, history et. al.
+
+ Revision 1.67  2002/04/04 17:27:57  swa
+ more single file to be included at multiple points. make maintaining easier
+
+ Revision 1.66  2002/04/04 06:48:37  hal9
+ Structural changes to allow for conditional inclusion/exclusion of content
+ based on entity toggles, e.g. 'entity % p-not-stable  "INCLUDE"'. And
+ definition of internal entities, e.g. 'entity p-version "2.9.13"' that will
+ eventually be set by Makefile.
+ More boilerplate text for use across multiple docs.
+
+ Revision 1.65  2002/04/03 19:52:07  swa
+ enhance squid section due to user suggestion
+
+ Revision 1.64  2002/04/03 03:53:43  hal9
+ A few minor bug fixes, and touch ups. Ready for review.
+
+ Revision 1.63  2002/04/01 16:24:49  hal9
+ Define entities to include boilerplate text. See doc/source/*.
+
+ Revision 1.62  2002/03/30 04:15:53  hal9
+ - Fix privoxy.org/config links.
+ - Paste in Bookmarklets from Toggle page.
+ - Move Quickstart nearer top, and minor rework.
+
+ Revision 1.61  2002/03/29 01:31:08  hal9
+ Minor update.
+
+ Revision 1.60  2002/03/27 01:57:34  hal9
+ Added more to Anatomy section.
+
+ Revision 1.59  2002/03/27 00:54:33  hal9
+ Touch up intro for new name.
+
+ Revision 1.58  2002/03/26 22:29:55  swa
+ we have a new homepage!
+
+ Revision 1.57  2002/03/24 20:33:30  hal9
+ A few minor catch ups with name change.
+
+ Revision 1.56  2002/03/24 16:17:06  swa
+ configure needs to be generated.
+
+ Revision 1.55  2002/03/24 16:08:08  swa
+ we are too lazy to make a block-built
+ privoxy logo. hence removed the option.
+
+ Revision 1.54  2002/03/24 15:46:20  swa
+ name change related issue.
+
+ Revision 1.53  2002/03/24 11:51:00  swa
+ name change. changed filenames.
+
+ Revision 1.52  2002/03/24 11:01:06  swa
+ name change
+
+ Revision 1.51  2002/03/23 15:13:11  swa
+ renamed every reference to the old name with foobar.
+ fixed "application foobar application" tag, fixed
+ "the foobar" with "foobar". left junkbustser in cvs
+ comments and remarks to history untouched.
+
+ Revision 1.50  2002/03/23 05:06:21  hal9
+ Touch up.
+
+ Revision 1.49  2002/03/21 17:01:05  hal9
+ New section in Appendix.
+
+ Revision 1.48  2002/03/12 06:33:01  hal9
+ Catching up to Andreas and re_filterfile changes.
+
+ Revision 1.47  2002/03/11 13:13:27  swa
+ correct feedback channels
+
+ Revision 1.46  2002/03/10 00:51:08  hal9
+ Added section on JB internal pages in Appendix.
+
+ Revision 1.45  2002/03/09 17:43:53  swa
+ more distros
+
+ Revision 1.44  2002/03/09 17:08:48  hal9
+ New section on Jon's actions file editor, and move some stuff around.
+
+ Revision 1.43  2002/03/08 00:47:32  hal9
+ Added imageblock{pattern}.
+
+ Revision 1.42  2002/03/07 18:16:55  swa
+ looks better
+
+ Revision 1.41  2002/03/07 16:46:43  hal9
+ Fix a few markup problems for jade.
+
+ Revision 1.40  2002/03/07 16:28:39  swa
+ provide correct feedback channels
+
+ Revision 1.39  2002/03/06 16:19:28  hal9
+ Note on perceived filtering slowdown per FR.
+
+ Revision 1.38  2002/03/05 23:55:14  hal9
+ Stupid I did it again. Double hyphen in comment breaks jade.
+
+ Revision 1.37  2002/03/05 23:53:49  hal9
+ jade barfs on '- -' embedded in comments. - -user option broke it.
+
+ Revision 1.36  2002/03/05 22:53:28  hal9
+ Add new - - user option.
+
+ Revision 1.35  2002/03/05 00:17:27  hal9
+ Added section on command line options.
+
+ Revision 1.34  2002/03/04 19:32:07  oes
+ Changed default port to 8118
+
+ Revision 1.33  2002/03/03 19:46:13  hal9
+ Emphasis on where/how to report bugs, etc
+
+ Revision 1.32  2002/03/03 09:26:06  joergs
+ AmigaOS changes, config is now loaded from PROGDIR: instead of
+ AmiTCP:db/junkbuster/ if no configuration file is specified on the
+ command line.
+
+ Revision 1.31  2002/03/02 22:45:52  david__schmidt
+ Just tweaking
+
+ Revision 1.30  2002/03/02 22:00:14  hal9
+ Updated 'New Features' list. Ran through spell-checker.
+
+ Revision 1.29  2002/03/02 20:34:07  david__schmidt
+ Update OS/2 build section
+
+ Revision 1.28  2002/02/24 14:34:24  jongfoster
+ Formatting changes.  Now changing the doctype to DocBook XML 4.1
+ will work - no other changes are needed.
+
+ Revision 1.27  2002/01/11 14:14:32  hal9
+ Added a very short section on Templates
+
+ Revision 1.26  2002/01/09 20:02:50  hal9
+ Fix bug re: auto-detect config file changes.
+
+ Revision 1.25  2002/01/09 18:20:30  hal9
+ Touch ups for *.action files.
+
+ Revision 1.24  2001/12/02 01:13:42  hal9
+ Fix typo.
+
+ Revision 1.23  2001/12/02 00:20:41  hal9
+ Updates for recent changes.
+
+ Revision 1.22  2001/11/05 23:57:51  hal9
+ Minor update for startup now daemon mode.
+
+ Revision 1.21  2001/10/31 21:11:03  hal9
+ Correct 2 minor errors
+
+ Revision 1.18  2001/10/24 18:45:26  hal9
+ *** empty log message ***
+
+ Revision 1.17  2001/10/24 17:10:55  hal9
+ Catching up with Jon's recent work, and a few other things.
+
+ Revision 1.16  2001/10/21 17:19:21  swa
+ wrong url in documentation
+
+ Revision 1.15  2001/10/14 23:46:24  hal9
+ Various minor changes. Fleshed out SEE ALSO section.
+
+ Revision 1.13  2001/10/10 17:28:33  hal9
+ Very minor changes.
+
+ Revision 1.12  2001/09/28 02:57:04  hal9
+ Ditto :/
+
+ Revision 1.11  2001/09/28 02:25:20  hal9
+ Ditto.
+
+ Revision 1.9  2001/09/27 23:50:29  hal9
+ A few changes. A short section on regular expression in appendix.
+
+ Revision 1.8  2001/09/25 00:34:59  hal9
+ Some additions, and re-arranging.
+
+ Revision 1.7  2001/09/24 14:31:36  hal9
+ Diddling.
+
+ Revision 1.6  2001/09/24 14:10:32  hal9
+ Including David's OS/2 installation instructions.
+
  Revision 1.2  2001/09/13 15:27:40  swa
  cosmetics