Update "What's new" section.
[privoxy.git] / doc / source / user-manual.sgml
index b9b5a6c..da22d3b 100644 (file)
@@ -11,7 +11,7 @@
 <!entity license SYSTEM "license.sgml">
 <!entity p-authors SYSTEM "p-authors.sgml">
 <!entity config SYSTEM "p-config.sgml">
-<!entity p-version "3.0.9">
+<!entity p-version "3.0.11">
 <!entity p-status "UNRELEASED">
 <!entity % p-authors-formal "INCLUDE"> <!-- include additional text, etc  -->
 <!entity % p-not-stable "INCLUDE">
@@ -33,7 +33,7 @@
                 This file belongs into
                 ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
 
- $Id: user-manual.sgml,v 2.68 2008/03/28 15:13:43 fabiankeil Exp $
+ $Id: user-manual.sgml,v 2.89 2008/09/21 15:38:56 fabiankeil Exp $
 
  Copyright (C) 2001-2008 Privoxy Developers http://www.privoxy.org/
  See LICENSE.
@@ -59,7 +59,7 @@
  </subscript>
 </pubdate>
 
-<pubdate>$Id: user-manual.sgml,v 2.68 2008/03/28 15:13:43 fabiankeil Exp $</pubdate>
+<pubdate>$Id: user-manual.sgml,v 2.89 2008/09/21 15:38:56 fabiankeil Exp $</pubdate>
 
 <!--
 
@@ -358,7 +358,7 @@ How to install the binary packages depends on your operating system:
 </para>
 <para>
  Before installing <application>Privoxy</application> under Gentoo just do 
- first <literal>emerge rsync</literal> to get the latest changes from the 
+ first <literal>emerge --sync</literal> to get the latest changes from the 
  Portage tree. With <literal>emerge privoxy</literal> you install the latest 
  version.
 </para>
@@ -436,153 +436,41 @@ How to install the binary packages depends on your operating system:
 <sect1 id="whatsnew">
 <title>What's New in this Release</title>
 <para>
- There are many improvements and new features since <application>Privoxy 3.0.6</application>, the last stable release:
+ There are only a few improvements and new features since
+ <application>Privoxy 3.0.10</application>, the last stable release:
 </para>
 
 <para>
  <itemizedlist>
   <listitem>
    <para>
-    Two new actions <link
-          linkend="server-header-tagger">server-header-tagger</link>
-          and <link
-          linkend="client-header-tagger">client-header-tagger</link>
-          that can be used to create arbitrary <quote>tags</quote>
-          based on client and server headers.
-          These <quote>tags</quote> can then subsequently be used
-          to control the other actions used for the current request,
-          greatly increasing &my-app;'s flexibility and selectivity. See <link
-          linkend="tag-pattern">tag patterns</link> for more information on tags.
-   </para>
-  </listitem>
-
-  <listitem>
-   <para>
-    Header filtering is done with dedicated header filters now. As a result
-    the actions <quote>filter-client-headers</quote> and <quote>filter-server-headers</quote>
-    that were introduced with <application>Privoxy 3.0.5</application> to apply
-    content filters to the headers have been removed.
-    See the new actions <link
-          linkend="server-header-filter">server-header-filter</link>
-          and <link
-          linkend="client-header-filter">client-header-filter</link> for details.
-   </para>
-  </listitem>
-  <listitem>
-   <para>
-     There are four new options for the main <filename>config</filename> file:
-   </para>
-
-     <itemizedlist>
-       <listitem>
-        <para>
-          <link
-          linkend="allow-cgi-request-crunching">allow-cgi-request-crunching</link>
-          which allows requests for Privoxy's internal CGI pages to be
-          blocked, redirected or (un)trusted like ordinary requests.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-          <link
-          linkend="split-large-forms">split-large-forms</link>
-          that will work around a browser bug that caused IE6 and IE7 to
-          ignore the Submit button on the Privoxy's edit-actions-for-url CGI
-          page.
-          </para>
-       </listitem>
-       <listitem>
-        <para>
-          <link
-          linkend="accept-intercepted-requests">accept-intercepted-requests</link>
-          which allows to combine Privoxy with any packet filter to create an
-          intercepting proxy for HTTP/1.1 requests (and for HTTP/1.0 requests
-          with Host header set). This means clients can be forced to use
-          &my-app; even if their proxy settings are configured differently.
-         </para>
-       </listitem>
-       <listitem>
-        <para>
-          <link
-          linkend="templdir">templdir</link>
-          to designate an alternate location for &my-app;'s 
-          locally customized CGI templates so that
-          these are not overwritten during upgrades.         
-        </para>
-       </listitem>
-       </itemizedlist>
-    </listitem>
-
-  <listitem>
-   <para>
-   A new command line option <literal>--pre-chroot-nslookup hostname</literal> to
-   initialize the resolver library before chroot'ing. On some systems this
-   reduces the number of files that must be copied into the chroot tree.
-   (Patch provided by Stephen Gildea)
-   </para>
-  </listitem>
-
-  <listitem>
-   <para>
-     The <link
-          linkend="forward-override">forward-override</link> action 
-     allows changing of the forwarding settings through the actions files.
-     Combined with tags, this allows to choose the forwarder based on
-     client headers like the <literal>User-Agent</literal>, or the request origin.
-  </para>
-  </listitem>
-
-  <listitem>
-   <para>
-     The  <link
-          linkend="redirect">redirect</link> action can now use regular
-          expression substitutions against the original URL.
+    The mingw32 version uses mutex locks now which prevents
+    log message corruption under load. As a side effect,
+    the "no thread-safe PRNG" warning could be removed as well.
    </para>
   </listitem>
-
   <listitem>
    <para>
-     <application>zlib</application> support is now available as a compile
-     time option to filter compressed content. Patch provided by Wil Mahan.
+    Support for remote toggling is controlled by the configure
+    option --disable-toggle only. In previous versions it also
+    depended on the action editor and thus configuring with the
+    --disable-editor option would disable remote toggling support
+    as well.
    </para>
   </listitem>
-    <listitem>
-    <para>
-     Improve various filters, and add new ones.
-   </para>
-  </listitem>
-
-
-  <listitem>
-   <para>
-    Include support for RFC 3253 so that <filename>Subversion</filename> works
-    with &my-app;. Patch provided by Petr Kadlec.
-   </para>
-  </listitem>
-
   <listitem>
    <para>
-     Logging can be completely turned off by not specifying a logfile directive.
+    The hide-forwarded-for-headers action has been replaced with
+    the change-x-forwarded-for{} action which can also be used to
+    add X-Forwarded-For headers. The latter functionality already
+    existed in Privoxy versions prior to 3.0.7 but has been removed
+    as it was often used unintentionally (by not using the
+    hide-forwarded-for-headers action).
    </para>
   </listitem>
-
-
-  <listitem>
-   <para>
-     A number of improvements to Privoxy's internal CGI pages, including the
-     use of favicons for error and control pages.
-   </para>
-  </listitem>
-
-  <listitem>
-   <para>
-     Many bugfixes, memory leaks addressed, code improvements, and logging 
-     improvements.
-   </para>
-  </listitem>
-
  </itemizedlist>
 </para>
+
 <para>
  For a more detailed list of changes please have a look at the ChangeLog.
 </para>
@@ -1370,21 +1258,6 @@ Example Unix startup command:
   An administrator username and password must be supplied in order for
   the Privoxy Utility to perform any of the tasks.
 </para>
-<para>
- During installation, <application>Privoxy</application> is configured to
- start automatically when the system restarts.  To start &my-app; manually,
- double-click on the <literal>StartPrivoxy.command</literal> icon in the
- <literal>/Library/Privoxy</literal> folder.  Or, type this command
- in the Terminal:
-</para>
-<para>
-  <screen>
-  /Library/Privoxy/StartPrivoxy.command
-  </screen>
-</para>
-<para>
- You will be prompted for the administrator password.
-</para>
 </sect2>
 
 
@@ -1686,8 +1559,8 @@ for details.
   &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>
  <member>
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://www.privoxy.org/
-  &p-version;/user-manual/">Documentation</ulink>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink
+  url="http://www.privoxy.org/&p-version;/user-manual/">Documentation</ulink>
  </member>
  </simplelist>
  </msgtext>
@@ -1954,7 +1827,7 @@ for details.
     </para>
     <para>
      The default profiles, and their associated actions, as pre-defined in
-     <filename>standard.action</filename> are<!-- different than this table which is out of date -->:
+     <filename>standard.action</filename> are:
     </para>
     <para>
     <table frame=all><title>Default Configurations</title>
@@ -2069,7 +1942,7 @@ for details.
     <row>
       <entry>Image tag reordering</entry>
       <entry>no</entry>
-      <entry>no</entry>
+      <entry>yes</entry>
       <entry>yes</entry>
     </row>
 
@@ -2248,9 +2121,9 @@ for details.
 <para>
  The pattern matching syntax is different for the domain and path parts of
  the URL. The domain part uses a simple globbing type matching technique, 
- while the path part uses more flexible 
+ while the path part uses more flexible 
  <ulink url="http://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
-  Expressions (PCRE)</quote></ulink> based syntax.
+  Expressions</quote></ulink> (POSIX 1003.2).
 </para>
 
 <variablelist>
@@ -2275,7 +2148,7 @@ for details.
   </listitem>
  </varlistentry>
  <varlistentry>
-  <term><literal>www.example.com/index.html$</literal></term>
+  <term><literal>www.example.com/index.html</literal></term>
   <listitem>
    <para>
     matches all the documents on <literal>www.example.com</literal>
@@ -2429,20 +2302,16 @@ for details.
 <sect3><title>The Path Pattern</title>
 
 <para>
- <application>Privoxy</application> uses Perl compatible (PCRE)
+ <application>Privoxy</application> uses <quote>modern</quote> POSIX 1003.2
   <ulink url="http://en.wikipedia.org/wiki/Regular_expressions"><quote>Regular
-  Expression</quote></ulink> based syntax 
- (through the <ulink url="http://www.pcre.org/">PCRE</ulink> library) for
- matching the path portion (after the slash), and is thus more flexible.
+  Expressions</quote></ulink> for matching the path portion (after the slash),
+  and is thus more flexible.
 </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://perldoc.perl.org/perlre.html">http://perldoc.perl.org/perlre.html</ulink>.
+ expressions, you also might want to have a look at your operating system's documentation
+ on regular expressions (try <literal>man re_format</literal>).
 </para>
 
 <para>
@@ -2840,17 +2709,6 @@ for details.
     to the blocked content (the latter only if the force feature is available and
     enabled).
    </para>
-<!--
-This doesn't actually work in all browser configuration and the user probably doesn't care anyway.
-   <para>
-    The <quote>BLOCKED</quote> page adapts to the available
-    screen space -- it displays full-blown if space allows, or miniaturized and text-only
-    if loaded into a small frame or window. If you are using <application>Privoxy</application>
-    right now, you can take a look at the 
-    <ulink url="http://ads.bannerserver.example.com/nasty-ads/sponsor.html"><quote>BLOCKED</quote>
-    page</ulink>.
-   </para>
--->
    <para> 
     A very important exception occurs if <emphasis>both</emphasis> 
     <literal>block</literal> and <literal><link linkend="handle-as-image">handle-as-image</link></literal>,
@@ -2900,6 +2758,76 @@ This doesn't actually work in all browser configuration and the user probably do
 </sect3>
 
 
+<!--   ~~~~~       New section      ~~~~~     -->
+<sect3 renderas="sect4" id="change-x-forwarded-for">
+<title>change-x-forwarded-for</title>
+
+<variablelist>
+ <varlistentry>
+  <term>Typical use:</term>
+  <listitem>
+   <para>Improve privacy by not forwarding the source of the request in the HTTP headers.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Effect:</term>
+  <listitem>
+   <para>
+    Deletes the <quote>X-Forwarded-For:</quote> HTTP header from the client request,
+    or adds a new one.
+   </para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Type:</term>
+  <!-- Boolean, Parameterized, Multi-value -->
+  <listitem>
+   <para>Parameterized.</para>
+  </listitem>
+ </varlistentry>
+
+ <varlistentry>
+  <term>Parameter:</term>
+  <listitem>
+   <itemizedlist>
+    <listitem>
+     <para><quote>block</quote> to delete the header.</para>
+    </listitem>
+    <listitem>
+     <para>
+       <quote>add</quote> to create the header (or append
+       the client's IP address to an already existing one).
+     </para>
+    </listitem>
+   </itemizedlist>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Notes:</term>
+  <listitem>
+   <para>
+    It is safe and recommended to use <literal>block</literal>.
+   </para>
+   <para>
+    Forwarding the source address of the request may make
+    sense in some multi-user setups but is also a privacy risk.
+   </para>
+  </listitem>
+ </varlistentry>
+ <varlistentry>
+  <term>Example usage:</term>
+  <listitem>
+    <para>
+     <screen>+change-x-forwarded-for{block}</screen>
+   </para>
+  </listitem>
+ </varlistentry>
+</variablelist>
+</sect3>
+
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 renderas="sect4" id="client-header-filter">
 <title>client-header-filter</title>
@@ -3052,6 +2980,25 @@ This doesn't actually work in all browser configuration and the user probably do
 # Tag every request with the User-Agent header
 {+client-header-tagger{user-agent}}
 /
+
+# Tagging itself doesn't change the action
+# settings, sections with TAG patterns do:
+#
+# If it's a download agent, use a different forwarding proxy,
+# show the real User-Agent and make sure resume works.
+{+forward-override{forward-socks5 10.0.0.2:2222 .} \
+ -hide-if-modified-since      \
+ -overwrite-last-modified     \
+ -hide-user-agent             \
+ -filter                      \
+ -deanimate-gifs              \
+}
+TAG:^User-Agent: NetBSD-ftp/
+TAG:^User-Agent: Novell ZYPP Installer
+TAG:^User-Agent: RPM APT-HTTP/
+TAG:^User-Agent: fetch libfetch/
+TAG:^User-Agent: Ubuntu APT-HTTP/
+TAG:^User-Agent: MPlayer/
     </screen>
     </para>
   </listitem>
@@ -3948,23 +3895,23 @@ problem-host.example.com</screen>
   <listitem>
    <para>
     <anchor id="filter-js-annoyances">
-    <screen>+filter{js-annoyances}       # Get rid of particularly annoying JavaScript abuse</screen>
+    <screen>+filter{js-annoyances}       # Get rid of particularly annoying JavaScript abuse.</screen>
    </para>
    <para>
     <anchor id="filter-js-events">
-    <screen>+filter{js-events}           # Kill all JS event bindings (Radically destructive! Only for extra nasty sites)</screen>
+    <screen>+filter{js-events}           # Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites).</screen>
    </para>
    <para>
     <anchor id="filter-html-annoyances">
-    <screen>+filter{html-annoyances}     # Get rid of particularly annoying HTML abuse</screen>
+    <screen>+filter{html-annoyances}     # Get rid of particularly annoying HTML abuse.</screen>
    </para>
    <para>
     <anchor id="filter-content-cookies">
-    <screen>+filter{content-cookies}     # Kill cookies that come in the HTML or JS content</screen>
+    <screen>+filter{content-cookies}     # Kill cookies that come in the HTML or JS content.</screen>
    </para>
    <para>
     <anchor id="filter-refresh-tags">
-    <screen>+filter{refresh-tags}        # Kill automatic refresh tags (for dial-on-demand setups)</screen>
+    <screen>+filter{refresh-tags}        # Kill automatic refresh tags (for dial-on-demand setups).</screen>
    </para>
    <para>
     <anchor id="filter-unsolicited-popups">
@@ -3976,43 +3923,43 @@ problem-host.example.com</screen>
    </para>
    <para>
     <anchor id="filter-img-reorder">
-    <screen>+filter{img-reorder}         # Reorder attributes in &lt;img&gt; tags to make the banners-by-* filters more effective</screen>
+    <screen>+filter{img-reorder}         # Reorder attributes in &lt;img&gt; tags to make the banners-by-* filters more effective.</screen>
    </para>
    <para>
     <anchor id="filter-banners-by-size">
-    <screen>+filter{banners-by-size}     # Kill banners by size</screen>
+    <screen>+filter{banners-by-size}     # Kill banners by size.</screen>
    </para>
    <para>
     <anchor id="filter-banners-by-link">
-    <screen>+filter{banners-by-link}     # Kill banners by their links to known clicktrackers</screen>
+    <screen>+filter{banners-by-link}     # Kill banners by their links to known clicktrackers.</screen>
    </para>
    <para>
     <anchor id="filter-webbugs">
-    <screen>+filter{webbugs}             # Squish WebBugs (1x1 invisible GIFs used for user tracking)</screen>
+    <screen>+filter{webbugs}             # Squish WebBugs (1x1 invisible GIFs used for user tracking).</screen>
    </para>
    <para>
     <anchor id="filter-tiny-textforms">
-    <screen>+filter{tiny-textforms}      # Extend those tiny textareas up to 40x80 and kill the hard wrap</screen>
+    <screen>+filter{tiny-textforms}      # Extend those tiny textareas up to 40x80 and kill the hard wrap.</screen>
    </para>
    <para>
     <anchor id="filter-jumping-windows">
-    <screen>+filter{jumping-windows}     # Prevent windows from resizing and moving themselves</screen>
+    <screen>+filter{jumping-windows}     # Prevent windows from resizing and moving themselves.</screen>
    </para>
    <para>
     <anchor id="filter-frameset-borders">
-    <screen>+filter{frameset-borders}    # Give frames a border and make them resizeable</screen>
+    <screen>+filter{frameset-borders}    # Give frames a border and make them resizable.</screen>
    </para>
    <para>
     <anchor id="filter-demoronizer">
-    <screen>+filter{demoronizer}         # Fix MS's non-standard use of standard charsets</screen>
+    <screen>+filter{demoronizer}         # Fix MS's non-standard use of standard charsets.</screen>
    </para>
    <para>
     <anchor id="filter-shockwave-flash">
-    <screen>+filter{shockwave-flash}     # Kill embedded Shockwave Flash objects</screen>
+    <screen>+filter{shockwave-flash}     # Kill embedded Shockwave Flash objects.</screen>
    </para>
    <para>
     <anchor id="filter-quicktime-kioskmode">
-    <screen>+filter{quicktime-kioskmode} # Make Quicktime movies savable</screen>
+    <screen>+filter{quicktime-kioskmode} # Make Quicktime movies saveable.</screen>
    </para>
    <para>
     <anchor id="filter-fun">
@@ -4020,35 +3967,35 @@ problem-host.example.com</screen>
    </para>
    <para>
     <anchor id="filter-crude-parental">
-    <screen>+filter{crude-parental}      # Crude parental filtering (demo only)</screen>
+    <screen>+filter{crude-parental}      # Crude parental filtering. Note that this filter doesn't work reliably.</screen>
    </para>
    <para>
     <anchor id="filter-ie-exploits">
-    <screen>+filter{ie-exploits}         # Disable a known Internet Explorer bug exploits</screen>
+    <screen>+filter{ie-exploits}         # Disable some known Internet Explorer bug exploits.</screen>
    </para>
    <para>
     <anchor id="filter-site-specifics">
-    <screen>+filter{site-specifics}      # Custom filters for specific site related problems</screen>
+    <screen>+filter{site-specifics}      # Cure for site-specific problems. Don't apply generally!</screen>
+   </para>
+   <para>
+    <anchor id="filter-no-ping">
+    <screen>+filter{no-ping}             # Removes non-standard ping attributes in &lt;a&gt; and &lt;area&gt; tags.</screen>
    </para>
    <para>
     <anchor id="filter-google">
-    <screen>+filter{google}              # Removes text ads and other Google specific improvements</screen>
+    <screen>+filter{google}              # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.</screen>
    </para>
    <para>
     <anchor id="filter-yahoo">
-    <screen>+filter{yahoo}               # Removes text ads and other Yahoo specific improvements</screen>
+    <screen>+filter{yahoo}               # CSS-based block for Yahoo text ads. Also removes a width limitation.</screen>
    </para>
    <para>
     <anchor id="filter-msn">
-    <screen>+filter{msn}                 # Removes text ads and other MSN specific improvements</screen>
+    <screen>+filter{msn}                 # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation.</screen>
    </para>
    <para>
     <anchor id="filter-blogspot">
-    <screen>+filter{blogspot}            # Cleans up Blogspot blogs</screen>
-   </para>
-   <para>
-    <anchor id="filter-no-ping">
-    <screen>+filter{no-ping}             # Removes non-standard ping attributes from anchor and area tags</screen>
+    <screen>+filter{blogspot}            # Cleans up some Blogspot blogs. Read the fine print before using this.</screen>
    </para>
   </listitem>
  </varlistentry>
@@ -4678,64 +4625,6 @@ new action
 </sect3>
 
 
-<!--   ~~~~~       New section      ~~~~~     -->
-<sect3 renderas="sect4" id="hide-forwarded-for-headers">
-<title>hide-forwarded-for-headers</title>
-<variablelist>
- <varlistentry>
-  <term>Typical use:</term>
-  <listitem>
-   <para>Improve privacy by not forwarding the source of the request in the HTTP headers.</para>
-  </listitem>
- </varlistentry>
-
- <varlistentry>
-  <term>Effect:</term>
-  <listitem>
-   <para>
-    Deletes any existing <quote>X-Forwarded-for:</quote> HTTP header from client requests.
-   </para>
-  </listitem>
- </varlistentry>
-
- <varlistentry>
-  <term>Type:</term>
-  <!-- Boolean, Parameterized, Multi-value -->
-  <listitem>
-   <para>Boolean.</para>
-  </listitem>
- </varlistentry>
-
- <varlistentry>
-  <term>Parameter:</term>
-  <listitem>
-   <para>
-    N/A
-   </para>
-  </listitem>
- </varlistentry>
- <varlistentry>
-  <term>Notes:</term>
-  <listitem>
-   <para>
-    It is safe and recommended to leave this on.
-   </para>
-  </listitem>
- </varlistentry>
-
- <varlistentry>
-  <term>Example usage:</term>
-  <listitem>
-    <para>
-     <screen>+hide-forwarded-for-headers</screen>
-   </para>
-  </listitem>
- </varlistentry>
-</variablelist>
-</sect3>
-
-
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 renderas="sect4" id="hide-from-header">
 <title>hide-from-header</title>
@@ -5345,6 +5234,10 @@ new action
     and be aware that using your own redirects might make it
     possible to fingerprint your requests.
    </para>
+   <para>
+    In case of problems with your redirects, or simply to watch
+    them working, enable <link linkend="DEBUG">debug 128</link>.
+   </para>
   </listitem>
  </varlistentry>
 
@@ -5365,7 +5258,20 @@ new action
 # (Note the $ at the end of the URL pattern to make sure
 # the request for the rewritten URL isn't redirected as well)
 {+redirect{s@$@&amp;mode=expanded@}}
-undeadly.org/cgi\?action=article&amp;sid=\d*$</screen>
+undeadly.org/cgi\?action=article&amp;sid=\d*$
+
+# Redirect Google search requests to MSN
+{+redirect{s@^http://[^/]*/search\?q=([^&amp;]*).*@http://search.msn.com/results.aspx?q=$1@}}
+.google.com/search
+
+# Redirect MSN search requests to Yahoo
+{+redirect{s@^http://[^/]*/results\.aspx\?q=([^&amp;]*).*@http://search.yahoo.com/search?p=$1@}}
+search.msn.com//results\.aspx\?q=
+
+# Redirect remote requests for this manual
+# to the local version delivered by Privoxy
+{+redirect{s@^http://www@http://config@}}
+www.privoxy.org/user-manual/</screen>
    </para>
   </listitem>
  </varlistentry>
@@ -5977,12 +5883,12 @@ that also explains why and how aliases are used:
 # "Defaults" section:
 ##########################################################################
  { \
+ +<link linkend="CHANGE-X-FORWARDED-FOR">change-x-forwarded-for{block}</link> \
  +<link linkend="DEANIMATE-GIFS">deanimate-gifs</link> \
  +<link linkend="FILTER-HTML-ANNOYANCES">filter{html-annoyances}</link> \
  +<link linkend="FILTER-REFRESH-TAGS">filter{refresh-tags}</link> \
  +<link linkend="FILTER-WEBBUGS">filter{webbugs}</link> \
  +<link linkend="FILTER-IE-EXPLOITS">filter{ie-exploits}</link> \     
- +<link linkend="HIDE-FORWARDED-FOR-HEADERS">hide-forwarded-for-headers</link> \
  +<link linkend="HIDE-FROM-HEADER">hide-from-header{block}</link> \
  +<link linkend="HIDE-REFERER">hide-referrer{forge}</link> \
  +<link linkend="PREVENT-COMPRESSION">prevent-compression</link> \
@@ -8131,7 +8037,8 @@ Requests</title>
 
  In file: default.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
 
- {+deanimate-gifs {last}
+ {+change-x-forwarded-for{block}
+ +deanimate-gifs {last}
  +fast-redirects {check-decoded-url}
  +filter {refresh-tags}
  +filter {img-reorder}
@@ -8139,7 +8046,6 @@ Requests</title>
  +filter {webbugs}
  +filter {jumping-windows}
  +filter {ie-exploits}
- +hide-forwarded-for-headers
  +hide-from-header {block}
  +hide-referrer {forge}
  +session-cookies-only
@@ -8221,6 +8127,7 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  
  -add-header
  -block
+ +change-x-forwarded-for{block} 
  -client-header-filter{hide-tor-exit-notation}
  -content-type-overwrite
  -crunch-client-header
@@ -8262,7 +8169,6 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  -handle-as-image
  -hide-accept-language
  -hide-content-disposition
- +hide-forwarded-for-headers
  +hide-from-header {block}
  -hide-if-modified-since
  +hide-referrer {forge}
@@ -8341,6 +8247,7 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
 
  {-add-header 
   -block
+  +change-x-forwarded-for{block} 
   -client-header-filter{hide-tor-exit-notation}
   -content-type-overwrite
   -crunch-client-header
@@ -8382,7 +8289,6 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
   -handle-as-image 
   -hide-accept-language
   -hide-content-disposition  
-  +hide-forwarded-for-headers 
   +hide-from-header{block} 
   +hide-referer{forge} 
   -hide-user-agent 
@@ -8553,6 +8459,77 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  USA
 
  $Log: user-manual.sgml,v $
+ Revision 2.89  2008/09/21 15:38:56  fabiankeil
+ Fix Portage tree sync instructions in Gentoo section.
+ Anonymously reported at ijbswa-developers@.
+
+ Revision 2.88  2008/09/21 14:42:52  fabiankeil
+ Add documentation for change-x-forwarded-for{},
+ remove documentation for hide-forwarded-for-headers.
+
+ Revision 2.87  2008/08/30 15:37:35  fabiankeil
+ Update entities.
+
+ Revision 2.86  2008/08/16 10:12:23  fabiankeil
+ Merge two sentences and move the URL to the end of the item.
+
+ Revision 2.85  2008/08/16 10:04:59  fabiankeil
+ Some more syntax fixes. This version actually builds.
+
+ Revision 2.84  2008/08/16 09:42:45  fabiankeil
+ Turns out building docs works better if the syntax is valid.
+
+ Revision 2.83  2008/08/16 09:32:02  fabiankeil
+ Mention changes since 3.0.9 beta.
+
+ Revision 2.82  2008/08/16 09:00:52  fabiankeil
+ Fix example URL pattern (once more with feeling).
+
+ Revision 2.81  2008/08/16 08:51:28  fabiankeil
+ Update version-related entities.
+
+ Revision 2.80  2008/07/18 16:54:30  fabiankeil
+ Remove erroneous whitespace in documentation link.
+ Reported by John Chronister in #2021611.
+
+ Revision 2.79  2008/06/27 18:00:53  markm68k
+ remove outdated startup information for mac os x
+
+ Revision 2.78  2008/06/21 17:03:03  fabiankeil
+ Fix typo.
+
+ Revision 2.77  2008/06/14 13:45:22  fabiankeil
+ Re-add a colon I unintentionally removed a few revisions ago.
+
+ Revision 2.76  2008/06/14 13:21:28  fabiankeil
+ Prepare for the upcoming 3.0.9 beta release.
+
+ Revision 2.75  2008/06/13 16:06:48  fabiankeil
+ Update the "What's New in this Release" section with
+ the ChangeLog entries changelog2doc.pl could handle.
+
+ Revision 2.74  2008/05/26 15:55:46  fabiankeil
+ - Update "default profiles" table.
+ - Add some more pcrs redirect examples and note that
+   enabling debug 128 helps to get redirects working.
+
+ Revision 2.73  2008/05/23 14:43:18  fabiankeil
+ Remove previously out-commented block that caused syntax problems.
+
+ Revision 2.72  2008/05/12 10:26:14  fabiankeil
+ Synchronize content filter descriptions with the ones in default.filter.
+
+ Revision 2.71  2008/04/10 17:37:16  fabiankeil
+ Actually we use "modern" POSIX 1003.2 regular
+ expressions in path patterns, not PCRE.
+
+ Revision 2.70  2008/04/10 15:59:12  fabiankeil
+ Add another section to the client-header-tagger example that shows
+ how to actually change the action settings once the tag is created.
+
+ Revision 2.69  2008/03/29 12:14:25  fabiankeil
+ Remove send-wafer and send-vanilla-wafer actions.
+
  Revision 2.68  2008/03/28 15:13:43  fabiankeil
  Remove inspect-jpegs action.