Docs regenerated with the IPv6 changes.
[privoxy.git] / doc / webserver / user-manual / config.html
index e6a6433..2562be5 100644 (file)
@@ -7,7 +7,7 @@
 NAME="GENERATOR"
 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
-TITLE="Privoxy 3.0.9 User Manual"
+TITLE="Privoxy 3.0.13 User Manual"
 HREF="index.html"><LINK
 REL="PREVIOUS"
 TITLE="Privoxy Configuration"
@@ -42,7 +42,7 @@ CELLSPACING="0"
 ><TH
 COLSPAN="3"
 ALIGN="center"
->Privoxy 3.0.9 User Manual</TH
+>Privoxy 3.0.13 User Manual</TH
 ></TR
 ><TR
 ><TD
@@ -363,7 +363,13 @@ CLASS="VARIABLELIST"
 >Default value:</DT
 ><DD
 ><P
->Two example URLs are provided</P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Unset</I
+></SPAN
+></P
 ></DD
 ><DT
 >Effect if unset:</DT
@@ -708,14 +714,10 @@ CLASS="VARIABLELIST"
 ><DD
 ><P
 >    The directory where all logging takes place
-    (i.e. where <TT
+    (i.e. where the <TT
 CLASS="FILENAME"
 >logfile</TT
-> and
-    <TT
-CLASS="FILENAME"
->jarfile</TT
-> are located).
+> is located).
    </P
 ></DD
 ><DT
@@ -820,7 +822,7 @@ BORDER="0"
 ><TD
 >     <P
 CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;standard.action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Internal&nbsp;purposes,&nbsp;no&nbsp;editing&nbsp;recommended</P
+>&nbsp;&nbsp;match-all.action&nbsp;#&nbsp;Actions&nbsp;that&nbsp;are&nbsp;applied&nbsp;to&nbsp;all&nbsp;sites&nbsp;and&nbsp;maybe&nbsp;overruled&nbsp;later&nbsp;on.</P
 >
     </TD
 ></TR
@@ -828,7 +830,7 @@ CLASS="LITERALLAYOUT"
 ><TD
 >     <P
 CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;default.action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Main&nbsp;actions&nbsp;file</P
+>&nbsp;&nbsp;default.action&nbsp;&nbsp;&nbsp;#&nbsp;Main&nbsp;actions&nbsp;file</P
 >
     </TD
 ></TR
@@ -836,7 +838,7 @@ CLASS="LITERALLAYOUT"
 ><TD
 >     <P
 CLASS="LITERALLAYOUT"
->&nbsp;&nbsp;user.action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;User&nbsp;customizations</P
+>&nbsp;&nbsp;user.action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;User&nbsp;customizations</P
 >
     </TD
 ></TR
@@ -863,15 +865,11 @@ CLASS="LITERAL"
    </P
 ><P
 > 
-    The default values include <TT
-CLASS="FILENAME"
->standard.action</TT
->, which is used
-    for internal purposes and should be loaded, <TT
+    The default values are <TT
 CLASS="FILENAME"
 >default.action</TT
->,
-    which is the <SPAN
+>, which is the
+    <SPAN
 CLASS="QUOTE"
 >"main"</SPAN
 > actions file maintained by the developers, and
@@ -1155,79 +1153,8 @@ CLASS="SECT3"
 ><H4
 CLASS="SECT3"
 ><A
-NAME="JARFILE"
->7.2.7. jarfile</A
-></H4
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->Specifies:</DT
-><DD
-><P
->    The file to store intercepted cookies in
-   </P
-></DD
-><DT
->Type of value:</DT
-><DD
-><P
->File name, relative to <TT
-CLASS="LITERAL"
->logdir</TT
-></P
-></DD
-><DT
->Default value:</DT
-><DD
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Unset (commented out)</I
-></SPAN
->. When activated: jarfile (Unix) <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->or</I
-></SPAN
-> privoxy.jar (Windows).</P
-></DD
-><DT
->Effect if unset:</DT
-><DD
-><P
->    Intercepted cookies are not stored in a dedicated log file.
-   </P
-></DD
-><DT
->Notes:</DT
-><DD
-><P
->    The jarfile may grow to ridiculous sizes over time.
-   </P
-><P
->    If debug 8 (show header parsing) is enabled, cookies are
-    also written to the logfile with the rest of the headers.
-    Therefore this option isn't very useful and may be removed
-    in future releases. Please report to the developers if you
-    are still using it.
-   </P
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><H4
-CLASS="SECT3"
-><A
 NAME="TRUSTFILE"
->7.2.8. trustfile</A
+>7.2.7. trustfile</A
 ></H4
 ><P
 ></P
@@ -1444,10 +1371,10 @@ WIDTH="90%"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  debug     1 # log each request destination (and the crunch reason if <SPAN
+>  debug     1 # Log the destination for each request <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> intercepted the request)
+> let through. See also debug 1024.
   debug     2 # show each connection status
   debug     4 # show I/O status
   debug     8 # show header parsing
@@ -1457,6 +1384,10 @@ CLASS="APPLICATION"
   debug   128 # debug redirects
   debug   256 # debug GIF de-animation
   debug   512 # Common Log Format
+  debug  1024 # Log the destination for requests <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> didn't let through, and the reason why.
   debug  2048 # CGI user interface
   debug  4096 # Startup banner and warnings.
   debug  8192 # Non-fatal errors</PRE
@@ -1478,7 +1409,7 @@ CLASS="LITERAL"
 CLASS="emphasis"
 ><I
 CLASS="EMPHASIS"
->1, 4096 and 8192 are recommended</I
+>1, 1024, 4096 and 8192 are recommended</I
 ></SPAN
 >
     so that you will notice when things go wrong. The other levels are
@@ -1732,12 +1663,12 @@ CLASS="REPLACEABLE"
 >Effect if unset:</DT
 ><DD
 ><P
->    Bind to 127.0.0.1 (localhost), port 8118. This is suitable and recommended for
-    home users who run <SPAN
+>    Bind to 127.0.0.1 (IPv4 localhost), port 8118. This is suitable and
+    recommended for home users who run <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> on the same machine as
-    their browser.
+> on
+    the same machine as their browser.
    </P
 ></DD
 ><DT
@@ -1752,16 +1683,24 @@ CLASS="APPLICATION"
     will need to override the default.
    </P
 ><P
+>    IPv6 addresses containing colons have to be quoted by brackets.
+   </P
+><P
 >    If you leave out the IP address, <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > will
-    bind to all interfaces (addresses) on your machine and may become reachable
+    bind to all IPv4 interfaces (addresses) on your machine and may become reachable
     from the Internet. In that case, consider using <A
 HREF="config.html#ACLS"
 >access control lists</A
 > (ACL's, see below), and/or
-    a firewall.
+    a firewall. If the hostname is localhost, <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+    will explicitly try to bind to an IPv4 address. For other hostnames it depends
+    on the operating system which IP version will be used.
    </P
 ><P
 >    If you open <SPAN
@@ -1809,6 +1748,29 @@ CLASS="PROGRAMLISTING"
 ></TD
 ></TR
 ></TABLE
+>
+   </P
+><P
+>    Suppose you are running <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> on an
+    IPv6-capable machine and you want it to listen on the IPv6 address
+    of the loopback device:
+   </P
+><P
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>  listen-address [::1]:8118</PRE
+></TD
+></TR
+></TABLE
 >
    </P
 ></DD
@@ -2322,7 +2284,12 @@ CLASS="REPLACEABLE"
 ><I
 >src_addr</I
 ></TT
->[/<TT
+>[:<TT
+CLASS="REPLACEABLE"
+><I
+>port</I
+></TT
+>][/<TT
 CLASS="REPLACEABLE"
 ><I
 >src_masklen</I
@@ -2333,7 +2300,12 @@ CLASS="REPLACEABLE"
 ><I
 >dst_addr</I
 ></TT
->[/<TT
+>[:<TT
+CLASS="REPLACEABLE"
+><I
+>port</I
+></TT
+>][/<TT
 CLASS="REPLACEABLE"
 ><I
 >dst_masklen</I
@@ -2352,8 +2324,14 @@ CLASS="REPLACEABLE"
 ><I
 >dst_addr</I
 ></TT
-> are IP addresses in dotted decimal notation or valid
-    DNS names, and <TT
+> are IPv4 addresses in dotted decimal notation or valid
+    DNS names, <TT
+CLASS="REPLACEABLE"
+><I
+>port</I
+></TT
+> is a port
+    number, and <TT
 CLASS="REPLACEABLE"
 ><I
 >src_masklen</I
@@ -2368,6 +2346,45 @@ CLASS="REPLACEABLE"
     values from 2 to 30 representing the length (in bits) of the network address. The masks and the whole
     destination part are optional.
    </P
+><P
+>    If your system implements
+    <A
+HREF="http://tools.ietf.org/html/rfc3493"
+TARGET="_top"
+>RFC 3493</A
+>, then
+    <TT
+CLASS="REPLACEABLE"
+><I
+>src_addr</I
+></TT
+> and <TT
+CLASS="REPLACEABLE"
+><I
+>dst_addr</I
+></TT
+> can be IPv6 addresses delimeted by
+    brackets, <TT
+CLASS="REPLACEABLE"
+><I
+>port</I
+></TT
+> can be a number
+    or a service name, and
+    <TT
+CLASS="REPLACEABLE"
+><I
+>src_masklen</I
+></TT
+> and
+    <TT
+CLASS="REPLACEABLE"
+><I
+>dst_masklen</I
+></TT
+> can be a number
+    from 0 to 128.
+   </P
 ></DD
 ><DT
 >Default value:</DT
@@ -2380,6 +2397,27 @@ CLASS="EMPHASIS"
 >Unset</I
 ></SPAN
 ></P
+><P
+>    If no <TT
+CLASS="REPLACEABLE"
+><I
+>port</I
+></TT
+> is specified,
+    any port will match. If no <TT
+CLASS="REPLACEABLE"
+><I
+>src_masklen</I
+></TT
+> or
+    <TT
+CLASS="REPLACEABLE"
+><I
+>src_masklen</I
+></TT
+> is given, the complete IP
+    address has to match (i.e. 32 bits for IPv4 and 128 bits for IPv6).
+   </P
 ></DD
 ><DT
 >Effect if unset:</DT
@@ -2492,6 +2530,16 @@ CLASS="QUOTE"
     IP addresses, only the first one is used.
    </P
 ><P
+>     Some systems allows IPv4 client to connect to IPv6 server socket.
+     Then the client's IPv4 address will be translated by system into
+     IPv6 address space with special prefix ::ffff:0:0/96 (so called IPv4
+     mapped IPv6 address). <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can handle it
+     and maps such ACL addresses automatically.
+   </P
+><P
 >    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
     (most sites are).
@@ -2576,6 +2624,44 @@ CLASS="SCREEN"
 ></TD
 ></TR
 ></TABLE
+>
+   </P
+><P
+>     Allow access from the IPv4 network 192.0.2.0/24 even if listening on
+     an IPv6 wild card address (not supported on all platforms):
+   </P
+><P
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>  permit-access  192.0.2.0/24</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+><P
+>     This is equivalent to the following line even if listening on an
+     IPv4 address (not supported on all platforms):
+   </P
+><P
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>  permit-access  [::ffff:192.0.2.0]/120</PRE
+></TD
+></TR
+></TABLE
 >
    </P
 ></DD
@@ -2776,7 +2862,7 @@ CLASS="REPLACEABLE"
 ></TT
 >]
     is the DNS name or IP address of the parent HTTP proxy through which the requests should be forwarded,
-    optionally followed by its listening port (default: 8080).
+    optionally followed by its listening port (default: 8000).
     Use a single dot (<TT
 CLASS="LITERAL"
 >.</TT
@@ -2821,6 +2907,29 @@ CLASS="QUOTE"
     forwarded to another HTTP proxy but are made directly to the web servers.
    </P
 ><P
+>    <TT
+CLASS="REPLACEABLE"
+><I
+>http_parent</I
+></TT
+> can be a
+     numerical IPv6 address (if
+    <A
+HREF="http://tools.ietf.org/html/rfc3493"
+TARGET="_top"
+>RFC 3493</A
+> is
+    implemented). To prevent clashes with the port delimiter, the whole IP
+    address has to be put into brackets. On the other hand a <TT
+CLASS="REPLACEABLE"
+><I
+>target_pattern</I
+></TT
+> containing an IPv6 address
+    has to be put into angle brackets (normal brackets are reserved for
+    regular expressions already).
+   </P
+><P
 >    Multiple lines are OK, they are checked in sequence, and the last match wins.
    </P
 ></DD
@@ -2864,6 +2973,44 @@ CLASS="SCREEN"
 ></TD
 ></TR
 ></TABLE
+>
+   </P
+><P
+>    Parent proxy specified by an IPv6 address:
+   </P
+><P
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>  foward   /                   [2001:DB8::1]:8000</PRE
+></TD
+></TR
+></TABLE
+>
+   </P
+><P
+>    Suppose your parent proxy doesn't support IPv6:
+   </P
+><P
+>    <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>  forward  /                        parent-proxy.example.org:8000
+  forward  ipv6-server.example.org  .
+  forward  &#60;[2-3][0-9a-f][0-9a-f][0-9a-f]:*&#62;   .</PRE
+></TD
+></TR
+></TABLE
 >
    </P
 ></DD
@@ -3025,6 +3172,35 @@ CLASS="LITERAL"
 > the DNS resolution will happen on the remote server as well.
    </P
 ><P
+>    <TT
+CLASS="REPLACEABLE"
+><I
+>socks_proxy</I
+></TT
+> and
+    <TT
+CLASS="REPLACEABLE"
+><I
+>http_parent</I
+></TT
+> can be a
+     numerical IPv6 address (if
+    <A
+HREF="http://tools.ietf.org/html/rfc3493"
+TARGET="_top"
+>RFC 3493</A
+> is
+    implemented). To prevent clashes with the port delimiter, the whole IP
+    address has to be put into brackets. On the other hand a <TT
+CLASS="REPLACEABLE"
+><I
+>target_pattern</I
+></TT
+> containing an IPv6 address
+    has to be put into angle brackets (normal brackets are reserved for
+    regular expressions already).
+   </P
+><P
 >    If <TT
 CLASS="REPLACEABLE"
 ><I
@@ -3097,7 +3273,7 @@ WIDTH="90%"
 ><TD
 ><PRE
 CLASS="SCREEN"
->  forward-socks4a   /               127.0.0.1:9050 .</PRE
+>  forward-socks5   /               127.0.0.1:9050 .</PRE
 ></TD
 ></TR
 ></TABLE
@@ -3671,6 +3847,163 @@ CLASS="APPLICATION"
 ></DL
 ></DIV
 ></DIV
+><DIV
+CLASS="SECT3"
+><H4
+CLASS="SECT3"
+><A
+NAME="KEEP-ALIVE-TIMEOUT"
+>7.5.8. keep-alive-timeout</A
+></H4
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+>Specifies:</DT
+><DD
+><P
+>    Number of seconds after which an open connection will no longer be reused.
+   </P
+></DD
+><DT
+>Type of value:</DT
+><DD
+><P
+>    <TT
+CLASS="REPLACEABLE"
+><I
+>Time in seconds.</I
+></TT
+>
+   </P
+></DD
+><DT
+>Default value:</DT
+><DD
+><P
+>None</P
+></DD
+><DT
+>Effect if unset:</DT
+><DD
+><P
+>    Connections are not reused.
+   </P
+></DD
+><DT
+>Notes:</DT
+><DD
+><P
+>    This option has no effect if <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+    has been compiled without keep-alive support.
+   </P
+></DD
+><DT
+>Notes:</DT
+><DD
+><P
+>    Note that reusing connections doesn't necessary cause speedups.
+    There are also a few privacy implications you should be aware of.
+   </P
+><P
+>    Outgoing connections are shared between clients (if there are more
+    than one) and closing the client that initiated the outgoing connection
+    does not affect the connection between <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> and the server unless
+    the client's request hasn't been completed yet. If the outgoing connection
+    is idle, it will not be closed until either <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+>
+    or the server's timeout is reached. While it's open, the server knows
+    that the system running <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is still there.
+   </P
+></DD
+><DT
+>Examples:</DT
+><DD
+><P
+>    keep-alive-timeout 300
+   </P
+></DD
+></DL
+></DIV
+></DIV
+><DIV
+CLASS="SECT3"
+><H4
+CLASS="SECT3"
+><A
+NAME="SOCKET-TIMEOUT"
+>7.5.9. socket-timeout</A
+></H4
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+>Specifies:</DT
+><DD
+><P
+>    Number of seconds after which a socket times out if
+    no data is received.
+   </P
+></DD
+><DT
+>Type of value:</DT
+><DD
+><P
+>    <TT
+CLASS="REPLACEABLE"
+><I
+>Time in seconds.</I
+></TT
+>
+   </P
+></DD
+><DT
+>Default value:</DT
+><DD
+><P
+>None</P
+></DD
+><DT
+>Effect if unset:</DT
+><DD
+><P
+>    A default value of 300 seconds is used.
+   </P
+></DD
+><DT
+>Notes:</DT
+><DD
+><P
+>    For SOCKS requests the timeout currently doesn't start until
+    the SOCKS server accepted the request. This will be fixed in
+    the next release.
+   </P
+></DD
+><DT
+>Examples:</DT
+><DD
+><P
+>    socket-timeout 300
+   </P
+></DD
+></DL
+></DIV
+></DIV
 ></DIV
 ><DIV
 CLASS="SECT2"
@@ -4030,4 +4363,4 @@ VALIGN="top"
 ></DIV
 ></BODY
 ></HTML
->
\ No newline at end of file
+>