From: Fabian Keil <fk@fabiankeil.de> Date: Wed, 31 Aug 2011 13:38:53 +0000 (+0000) Subject: The first result of the shiny-new dok-tidy target. X-Git-Tag: v_3_0_18~116 X-Git-Url: http://www.privoxy.org/gitweb/%22https:/developer-manual/static/faq/static/@default-cgi@edit-actions-remove-url?a=commitdiff_plain;h=6d810395712f0337682205c4ea304009c86c128f;p=privoxy.git The first result of the shiny-new dok-tidy target. --- diff --git a/doc/webserver/developer-manual/coding.html b/doc/webserver/developer-manual/coding.html index 15744c6e..7d7854e3 100644 --- a/doc/webserver/developer-manual/coding.html +++ b/doc/webserver/developer-manual/coding.html @@ -1,218 +1,151 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Coding Guidelines</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Documentation Guidelines" -HREF="documentation.html"><LINK -REL="NEXT" -TITLE="Testing Guidelines" -HREF="testing.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="documentation.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="testing.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="CODING" ->4. Coding Guidelines</A -></H1 -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="S1" ->4.1. Introduction</A -></H2 -><P ->This set of standards is designed to make our lives easier. It is - developed with the simple goal of helping us keep the "new and improved - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->" consistent and reliable. Thus making - maintenance easier and increasing chances of success of the - project.</P -><P ->And that of course comes back to us as individuals. If we can - increase our development and product efficiencies then we can solve more - of the request for changes/improvements and in general feel good about - ourselves. ;-></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="S2" ->4.2. Using Comments</A -></H2 -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S3" ->4.2.1. Comment, Comment, Comment</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Comment as much as possible without commenting the obvious. - For example do not comment "variable_a is equal to variable_b". - Instead explain why variable_a should be equal to the variable_b. - Just because a person can read code does not mean they will - understand why or what is being done. A reader may spend a lot - more time figuring out what is going on when a simple comment - or explanation would have prevented the extra research. Please - help your brother IJB'ers out!</P -><P ->The comments will also help justify the intent of the code. - If the comment describes something different than what the code - is doing then maybe a programming error is occurring.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->/* if page size greater than 1k ... */ -if ( page_length() > 1024 ) +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Coding Guidelines + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="Documentation Guidelines" href= + "documentation.html"> + <link rel="NEXT" title="Testing Guidelines" href="testing.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="documentation.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="testing.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="CODING">4. Coding Guidelines</a> + </h1> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="S1">4.1. Introduction</a> + </h2> + <p> + This set of standards is designed to make our lives easier. It is + developed with the simple goal of helping us keep the "new and + improved <span class="APPLICATION">Privoxy</span>" consistent and + reliable. Thus making maintenance easier and increasing chances of + success of the project. + </p> + <p> + And that of course comes back to us as individuals. If we can + increase our development and product efficiencies then we can solve + more of the request for changes/improvements and in general feel + good about ourselves. ;-> + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="S2">4.2. Using Comments</a> + </h2> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S3">4.2.1. Comment, Comment, Comment</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Comment as much as possible without commenting the obvious. For + example do not comment "variable_a is equal to variable_b". + Instead explain why variable_a should be equal to the variable_b. + Just because a person can read code does not mean they will + understand why or what is being done. A reader may spend a lot + more time figuring out what is going on when a simple comment or + explanation would have prevented the extra research. Please help + your brother IJB'ers out! + </p> + <p> + The comments will also help justify the intent of the code. If + the comment describes something different than what the code is + doing then maybe a programming error is occurring. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +/* if page size greater than 1k ... */ +if ( page_length() > 1024 ) { ... "block" the page up ... } /* if page size is small, send it in blocks */ -if ( page_length() > 1024 ) +if ( page_length() > 1024 ) { ... "block" the page up ... } This demonstrates 2 cases of "what not to do". The first is a "syntax comment". The second is a comment that does not fit what -is actually being done.</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S4" ->4.2.2. Use blocks for comments</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Comments can help or they can clutter. They help when they - are differentiated from the code they describe. One line - comments do not offer effective separation between the comment - and the code. Block identifiers do, by surrounding the code - with a clear, definable pattern.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->/********************************************************************* +is actually being done. +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S4">4.2.2. Use blocks for comments</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Comments can help or they can clutter. They help when they are + differentiated from the code they describe. One line comments do + not offer effective separation between the comment and the code. + Block identifiers do, by surrounding the code with a clear, + definable pattern. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +/********************************************************************* * This will stand out clearly in your code! *********************************************************************/ if ( this_variable == that_variable ) @@ -231,65 +164,46 @@ if ( this_variable == that_variable ) if ( this_variable == that_variable ) /* this may not either */ { do_something_very_important(); -}</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Exception:</I -></SPAN -></P -><P ->If you are trying to add a small logic comment and do not - wish to "disrupt" the flow of the code, feel free to use a 1 - line comment which is NOT on the same line as the code.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S5" ->4.2.3. Keep Comments on their own line</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->It goes back to the question of readability. If the comment - is on the same line as the code it will be harder to read than - the comment that is on its own line.</P -><P ->There are three exceptions to this rule, which should be - violated freely and often: during the definition of variables, - at the end of closing braces, when used to comment - parameters.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->/********************************************************************* +} +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Exception:</i></span> + </p> + <p> + If you are trying to add a small logic comment and do not wish to + "disrupt" the flow of the code, feel free to use a 1 line comment + which is NOT on the same line as the code. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S5">4.2.3. Keep Comments on their own line</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + It goes back to the question of readability. If the comment is on + the same line as the code it will be harder to read than the + comment that is on its own line. + </p> + <p> + There are three exceptions to this rule, which should be violated + freely and often: during the definition of variables, at the end + of closing braces, when used to comment parameters. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +/********************************************************************* * This will stand out clearly in your code, * But the second example won't. *********************************************************************/ @@ -322,116 +236,89 @@ short do_something_very_important( { ...code here... -} /* -END- do_something_very_important */</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S6" ->4.2.4. Comment each logical step</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Logical steps should be commented to help others follow the - intent of the written code and comments will make the code more - readable.</P -><P ->If you have 25 lines of code without a comment, you should - probably go back into it to see where you forgot to put - one.</P -><P ->Most "for", "while", "do", etc... loops _probably_ need a - comment. After all, these are usually major logic - containers.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S7" ->4.2.5. Comment All Functions Thoroughly</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->A reader of the code should be able to look at the comments - just prior to the beginning of a function and discern the - reason for its existence and the consequences of using it. The - reader should not have to read through the code to determine if - a given function is safe for a desired use. The proper - information thoroughly presented at the introduction of a - function not only saves time for subsequent maintenance or - debugging, it more importantly aids in code reuse by allowing a - user to determine the safety and applicability of any function - for the problem at hand. As a result of such benefits, all - functions should contain the information presented in the - addendum section of this document.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S8" ->4.2.6. Comment at the end of braces if the - content is more than one screen length</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Each closing brace should be followed on the same line by a - comment that describes the origination of the brace if the - original brace is off of the screen, or otherwise far away from - the closing brace. This will simplify the debugging, - maintenance, and readability of the code.</P -><P ->As a suggestion , use the following flags to make the - comment and its brace more readable:</P -><P ->use following a closing brace: } /* -END- if() or while () - or etc... */</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->if ( 1 == X ) +} /* -END- do_something_very_important */ +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S6">4.2.4. Comment each logical step</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Logical steps should be commented to help others follow the + intent of the written code and comments will make the code more + readable. + </p> + <p> + If you have 25 lines of code without a comment, you should + probably go back into it to see where you forgot to put one. + </p> + <p> + Most "for", "while", "do", etc... loops _probably_ need a + comment. After all, these are usually major logic containers. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S7">4.2.5. Comment All Functions Thoroughly</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + A reader of the code should be able to look at the comments just + prior to the beginning of a function and discern the reason for + its existence and the consequences of using it. The reader should + not have to read through the code to determine if a given + function is safe for a desired use. The proper information + thoroughly presented at the introduction of a function not only + saves time for subsequent maintenance or debugging, it more + importantly aids in code reuse by allowing a user to determine + the safety and applicability of any function for the problem at + hand. As a result of such benefits, all functions should contain + the information presented in the addendum section of this + document. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S8">4.2.6. Comment at the end of braces if the content + is more than one screen length</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Each closing brace should be followed on the same line by a + comment that describes the origination of the brace if the + original brace is off of the screen, or otherwise far away from + the closing brace. This will simplify the debugging, maintenance, + and readability of the code. + </p> + <p> + As a suggestion , use the following flags to make the comment and + its brace more readable: + </p> + <p> + use following a closing brace: } /* -END- if() or while () or + etc... */ + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +if ( 1 == X ) { do_something_very_important(); ...some long list of commands... @@ -443,735 +330,480 @@ if ( 1 == X ) { do_something_very_important(); ...some long list of commands... -} /* -END- if ( 1 == X ) */</PRE -></TD -></TR -></TABLE -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="S9" ->4.3. Naming Conventions</A -></H2 -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S10" ->4.3.1. Variable Names</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Use all lowercase, and separate words via an underscore - ('_'). Do not start an identifier with an underscore. (ANSI C - reserves these for use by the compiler and system headers.) Do - not use identifiers which are reserved in ANSI C++. (E.g. - template, class, true, false, ...). This is in case we ever - decide to port Privoxy to C++.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->int ms_iis5_hack = 0;</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -></P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->int msiis5hack = 0; int msIis5Hack = 0;</PRE -></TD -></TR -></TABLE -></P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S11" ->4.3.2. Function Names</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Use all lowercase, and separate words via an underscore - ('_'). Do not start an identifier with an underscore. (ANSI C - reserves these for use by the compiler and system headers.) Do - not use identifiers which are reserved in ANSI C++. (E.g. - template, class, true, false, ...). This is in case we ever - decide to port Privoxy to C++.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->int load_some_file( struct client_state *csp )</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -></P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->int loadsomefile( struct client_state *csp ) -int loadSomeFile( struct client_state *csp )</PRE -></TD -></TR -></TABLE -></P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S12" ->4.3.3. Header file prototypes</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Use a descriptive parameter name in the function prototype - in header files. Use the same parameter name in the header file - that you use in the c file.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->(.h) extern int load_aclfile( struct client_state *csp ); -(.c) int load_aclfile( struct client_state *csp )</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -> -<TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->(.h) extern int load_aclfile( struct client_state * ); or -(.h) extern int load_aclfile(); -(.c) int load_aclfile( struct client_state *csp )</PRE -></TD -></TR -></TABLE -></P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S13" ->4.3.4. Enumerations, and #defines</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Use all capital letters, with underscores between words. Do - not start an identifier with an underscore. (ANSI C reserves - these for use by the compiler and system headers.)</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->(enumeration) : enum Boolean { FALSE, TRUE }; -(#define) : #define DEFAULT_SIZE 100;</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> We have a standard naming scheme for #defines - that toggle a feature in the preprocessor: FEATURE_>, where - > is a short (preferably 1 or 2 word) description.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->#define FEATURE_FORCE 1 +} /* -END- if ( 1 == X ) */ +</pre> + </td> + </tr> + </table> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="S9">4.3. Naming Conventions</a> + </h2> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S10">4.3.1. Variable Names</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Use all lowercase, and separate words via an underscore ('_'). Do + not start an identifier with an underscore. (ANSI C reserves + these for use by the compiler and system headers.) Do not use + identifiers which are reserved in ANSI C++. (E.g. template, + class, true, false, ...). This is in case we ever decide to port + Privoxy to C++. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +int ms_iis5_hack = 0; +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +int msiis5hack = 0; int msIis5Hack = 0; +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S11">4.3.2. Function Names</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Use all lowercase, and separate words via an underscore ('_'). Do + not start an identifier with an underscore. (ANSI C reserves + these for use by the compiler and system headers.) Do not use + identifiers which are reserved in ANSI C++. (E.g. template, + class, true, false, ...). This is in case we ever decide to port + Privoxy to C++. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +int load_some_file( struct client_state *csp ) +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +int loadsomefile( struct client_state *csp ) +int loadSomeFile( struct client_state *csp ) +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S12">4.3.3. Header file prototypes</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Use a descriptive parameter name in the function prototype in + header files. Use the same parameter name in the header file that + you use in the c file. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +(.h) extern int load_aclfile( struct client_state *csp ); +(.c) int load_aclfile( struct client_state *csp ) +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +(.h) extern int load_aclfile( struct client_state * ); or +(.h) extern int load_aclfile(); +(.c) int load_aclfile( struct client_state *csp ) +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S13">4.3.4. Enumerations, and #defines</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Use all capital letters, with underscores between words. Do not + start an identifier with an underscore. (ANSI C reserves these + for use by the compiler and system headers.) + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +(enumeration) : enum Boolean { FALSE, TRUE }; +(#define) : #define DEFAULT_SIZE 100; +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> We + have a standard naming scheme for #defines that toggle a feature + in the preprocessor: FEATURE_>, where > is a short + (preferably 1 or 2 word) description. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +#define FEATURE_FORCE 1 #ifdef FEATURE_FORCE #define FORCE_PREFIX blah -#endif /* def FEATURE_FORCE */</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S14" ->4.3.5. Constants</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Spell common words out entirely (do not remove vowels).</P -><P ->Use only widely-known domain acronyms and abbreviations. - Capitalize all letters of an acronym.</P -><P ->Use underscore (_) to separate adjacent acronyms and - abbreviations. Never terminate a name with an underscore.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->#define USE_IMAGE_LIST 1</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -></P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->#define USE_IMG_LST 1 or +#endif /* def FEATURE_FORCE */ +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S14">4.3.5. Constants</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Spell common words out entirely (do not remove vowels). + </p> + <p> + Use only widely-known domain acronyms and abbreviations. + Capitalize all letters of an acronym. + </p> + <p> + Use underscore (_) to separate adjacent acronyms and + abbreviations. Never terminate a name with an underscore. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +#define USE_IMAGE_LIST 1 +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +#define USE_IMG_LST 1 or #define _USE_IMAGE_LIST 1 or -#define USE_IMAGE_LIST_ 1 or +#define USE_IMAGE_LIST_ 1 or #define use_image_list 1 or -#define UseImageList 1</PRE -></TD -></TR -></TABLE -></P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="S15" ->4.4. Using Space</A -></H2 -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S16" ->4.4.1. Put braces on a line by themselves.</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->The brace needs to be on a line all by itself, not at the - end of the statement. Curly braces should line up with the - construct that they're associated with. This practice makes it - easier to identify the opening and closing braces for a - block.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->if ( this == that ) +#define UseImageList 1 +</pre> + </td> + </tr> + </table> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="S15">4.4. Using Space</a> + </h2> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S16">4.4.1. Put braces on a line by themselves.</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + The brace needs to be on a line all by itself, not at the end of + the statement. Curly braces should line up with the construct + that they're associated with. This practice makes it easier to + identify the opening and closing braces for a block. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +if ( this == that ) { ... -}</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -></P -><P ->if ( this == that ) { ... }</P -><P ->or</P -><P ->if ( this == that ) { ... }</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> In the special case that the if-statement is - inside a loop, and it is trivial, i.e. it tests for a - condition that is obvious from the purpose of the block, - one-liners as above may optically preserve the loop structure - and make it easier to read.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Status:</I -></SPAN -> developer-discretion.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example exception:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->while ( more lines are read ) +} +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <p> + if ( this == that ) { ... } + </p> + <p> + or + </p> + <p> + if ( this == that ) { ... } + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> In + the special case that the if-statement is inside a loop, and it + is trivial, i.e. it tests for a condition that is obvious from + the purpose of the block, one-liners as above may optically + preserve the loop structure and make it easier to read. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Status:</i></span> + developer-discretion. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example + exception:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +while ( more lines are read ) { /* Please document what is/is not a comment line here */ if ( it's a comment ) continue; do_something( line ); -}</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S17" ->4.4.2. ALL control statements should have a - block</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Using braces to make a block will make your code more - readable and less prone to error. All control statements should - have a block defined.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->if ( this == that ) +} +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S17">4.4.2. ALL control statements should have a + block</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Using braces to make a block will make your code more readable + and less prone to error. All control statements should have a + block defined. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +if ( this == that ) { do_something(); do_something_else(); -}</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -></P -><P ->if ( this == that ) do_something(); do_something_else();</P -><P ->or</P -><P ->if ( this == that ) do_something();</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> The first example in "Instead of" will execute - in a manner other than that which the developer desired (per - indentation). Using code braces would have prevented this - "feature". The "explanation" and "exception" from the point - above also applies.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S18" ->4.4.3. Do not belabor/blow-up boolean - expressions</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->structure->flag = ( condition );</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -></P -><P ->if ( condition ) { structure->flag = 1; } else { - structure->flag = 0; }</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> The former is readable and concise. The later - is wordy and inefficient. Please assume that any developer new - to the project has at least a "good" knowledge of C/C++. (Hope - I do not offend by that last comment ... 8-)</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S19" ->4.4.4. Use white space freely because it is - free</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Make it readable. The notable exception to using white space - freely is listed in the next guideline.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->int first_value = 0; +} +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <p> + if ( this == that ) do_something(); do_something_else(); + </p> + <p> + or + </p> + <p> + if ( this == that ) do_something(); + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> The + first example in "Instead of" will execute in a manner other than + that which the developer desired (per indentation). Using code + braces would have prevented this "feature". The "explanation" and + "exception" from the point above also applies. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S18">4.4.3. Do not belabor/blow-up boolean + expressions</a> + </h3> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +structure->flag = ( condition ); +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <p> + if ( condition ) { structure->flag = 1; } else { + structure->flag = 0; } + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> The + former is readable and concise. The later is wordy and + inefficient. Please assume that any developer new to the project + has at least a "good" knowledge of C/C++. (Hope I do not offend + by that last comment ... 8-) + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S19">4.4.4. Use white space freely because it is + free</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Make it readable. The notable exception to using white space + freely is listed in the next guideline. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +int first_value = 0; int some_value = 0; int another_value = 0; int this_variable = 0; if ( this_variable == this_variable ) -first_value = old_value + ( ( some_value - another_value ) - whatever )</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S20" ->4.4.5. Don't use white space around structure - operators</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->- structure pointer operator ( "->" ) - member operator ( - "." ) - functions and parentheses</P -><P ->It is a general coding practice to put pointers, references, - and function parentheses next to names. With spaces, the - connection between the object and variable/function name is not - as clear.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->a_struct->a_member; +first_value = old_value + ( ( some_value - another_value ) - whatever ) +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S20">4.4.5. Don't use white space around structure + operators</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + - structure pointer operator ( "->" ) - member operator ( "." + ) - functions and parentheses + </p> + <p> + It is a general coding practice to put pointers, references, and + function parentheses next to names. With spaces, the connection + between the object and variable/function name is not as clear. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +a_struct->a_member; a_struct.a_member; -function_name();</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -> a_struct -> a_member; a_struct . a_member; - function_name ();</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S21" ->4.4.6. Make the last brace of a function stand - out</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->int function1( ... ) +function_name(); +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + a_struct -> a_member; a_struct . a_member; function_name (); + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S21">4.4.6. Make the last brace of a function stand + out</a> + </h3> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +int function1( ... ) { ...code... return( ret_code ); @@ -1181,83 +813,55 @@ CLASS="PROGRAMLISTING" int function2( ... ) { -} /* -END- function2 */</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -></P -><P ->int function1( ... ) { ...code... return( ret_code ); } int - function2( ... ) { }</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> Use 1 blank line before the closing brace and 2 - lines afterward. This makes the end of function standout to - the most casual viewer. Although function comments help - separate functions, this is still a good coding practice. In - fact, I follow these rules when using blocks in "for", "while", - "do" loops, and long if {} statements too. After all whitespace - is free!</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Status:</I -></SPAN -> developer-discretion on the number of blank - lines. Enforced is the end of function comments.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S22" ->4.4.7. Use 3 character indentions</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->If some use 8 character TABs and some use 3 character TABs, - the code can look *very* ragged. So use 3 character indentions - only. If you like to use TABs, pass your code through a filter - such as "expand -t3" before checking in your code.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->static const char * const url_code_map[256] = +} /* -END- function2 */ +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <p> + int function1( ... ) { ...code... return( ret_code ); } int + function2( ... ) { } + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> Use 1 + blank line before the closing brace and 2 lines afterward. This + makes the end of function standout to the most casual viewer. + Although function comments help separate functions, this is still + a good coding practice. In fact, I follow these rules when using + blocks in "for", "while", "do" loops, and long if {} statements + too. After all whitespace is free! + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Status:</i></span> + developer-discretion on the number of blank lines. Enforced is + the end of function comments. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S22">4.4.7. Use 3 character indentions</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + If some use 8 character TABs and some use 3 character TABs, the + code can look *very* ragged. So use 3 character indentions only. + If you like to use TABs, pass your code through a filter such as + "expand -t3" before checking in your code. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +static const char * const url_code_map[256] = { NULL, ... }; @@ -1276,477 +880,319 @@ int function1( ... ) return( NEVER_GETS_HERE ); -}</PRE -></TD -></TR -></TABLE -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="S23" ->4.5. Initializing</A -></H2 -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S24" ->4.5.1. Initialize all variables</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Do not assume that the variables declared will not be used - until after they have been assigned a value somewhere else in - the code. Remove the chance of accidentally using an unassigned - variable.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->short a_short = 0; +} +</pre> + </td> + </tr> + </table> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="S23">4.5. Initializing</a> + </h2> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S24">4.5.1. Initialize all variables</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Do not assume that the variables declared will not be used until + after they have been assigned a value somewhere else in the code. + Remove the chance of accidentally using an unassigned variable. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +short a_short = 0; float a_float = 0; -struct *ptr = NULL;</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> It is much easier to debug a SIGSEGV if the - message says you are trying to access memory address 00000000 - and not 129FA012; or array_ptr[20] causes a SIGSEV vs. - array_ptr[0].</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Status:</I -></SPAN -> developer-discretion if and only if the - variable is assigned a value "shortly after" declaration.</P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="S25" ->4.6. Functions</A -></H2 -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S26" ->4.6.1. Name functions that return a boolean as a - question.</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Value should be phrased as a question that would logically - be answered as a true or false statement</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->should_we_block_this(); +struct *ptr = NULL; +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> It is + much easier to debug a SIGSEGV if the message says you are trying + to access memory address 00000000 and not 129FA012; or + array_ptr[20] causes a SIGSEV vs. array_ptr[0]. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Status:</i></span> + developer-discretion if and only if the variable is assigned a + value "shortly after" declaration. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="S25">4.6. Functions</a> + </h2> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S26">4.6.1. Name functions that return a boolean as a + question.</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Value should be phrased as a question that would logically be + answered as a true or false statement + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +should_we_block_this(); contains_an_image(); -is_web_page_blank();</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S27" ->4.6.2. Always specify a return type for a - function.</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->The default return for a function is an int. To avoid - ambiguity, create a return for a function when the return has a - purpose, and create a void return type if the function does not - need to return anything.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S28" ->4.6.3. Minimize function calls when iterating by - using variables</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->It is easy to write the following code, and a clear argument - can be made that the code is easy to understand:</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->for ( size_t cnt = 0; cnt < block_list_length(); cnt++ ) +is_web_page_blank(); +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S27">4.6.2. Always specify a return type for a + function.</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + The default return for a function is an int. To avoid ambiguity, + create a return for a function when the return has a purpose, and + create a void return type if the function does not need to return + anything. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S28">4.6.3. Minimize function calls when iterating by + using variables</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + It is easy to write the following code, and a clear argument can + be made that the code is easy to understand: + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +for ( size_t cnt = 0; cnt < block_list_length(); cnt++ ) { .... -}</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> Unfortunately, this makes a function call for - each and every iteration. This increases the overhead in the - program, because the compiler has to look up the function each - time, call it, and return a value. Depending on what occurs in - the block_list_length() call, it might even be creating and - destroying structures with each iteration, even though in each - case it is comparing "cnt" to the same value, over and over. - Remember too - even a call to block_list_length() is a function - call, with the same overhead.</P -><P ->Instead of using a function call during the iterations, - assign the value to a variable, and evaluate using the - variable.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->size_t len = block_list_length(); +} +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> + Unfortunately, this makes a function call for each and every + iteration. This increases the overhead in the program, because + the compiler has to look up the function each time, call it, and + return a value. Depending on what occurs in the + block_list_length() call, it might even be creating and + destroying structures with each iteration, even though in each + case it is comparing "cnt" to the same value, over and over. + Remember too - even a call to block_list_length() is a function + call, with the same overhead. + </p> + <p> + Instead of using a function call during the iterations, assign + the value to a variable, and evaluate using the variable. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +size_t len = block_list_length(); -for ( size_t cnt = 0; cnt < len; cnt++ ) +for ( size_t cnt = 0; cnt < len; cnt++ ) { .... -}</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Exceptions:</I -></SPAN -> if the value of block_list_length() - *may* change or could *potentially* change, then you must code the - function call in the for/while loop.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S29" ->4.6.4. Pass and Return by Const Reference</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->This allows a developer to define a const pointer and call - your function. If your function does not have the const - keyword, we may not be able to use your function. Consider - strcmp, if it were defined as: extern int strcmp( char *s1, - char *s2 );</P -><P ->I could then not use it to compare argv's in main: int main( - int argc, const char *argv[] ) { strcmp( argv[0], "privoxy" - ); }</P -><P ->Both these pointers are *const*! If the c runtime library - maintainers do it, we should too.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S30" ->4.6.5. Pass and Return by Value</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Most structures cannot fit onto a normal stack entry (i.e. - they are not 4 bytes or less). Aka, a function declaration - like: int load_aclfile( struct client_state csp )</P -><P ->would not work. So, to be consistent, we should declare all - prototypes with "pass by value": int load_aclfile( struct - client_state *csp )</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S31" ->4.6.6. Names of include files</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Your include statements should contain the file name without - a path. The path should be listed in the Makefile, using -I as - processor directive to search the indicated paths. An exception - to this would be for some proprietary software that utilizes a - partial path to distinguish their header files from system or - other header files.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->#include <iostream.h> /* This is not a local include */ -#include "config.h" /* This IS a local include */</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Exception:</I -></SPAN -></P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->/* This is not a local include, but requires a path element. */ -#include <sys/fileName.h></PRE -></TD -></TR -></TABLE -></P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> Please! do not add "-I." to the Makefile - without a _very_ good reason. This duplicates the #include - "file.h" behavior.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S32" ->4.6.7. Provide multiple inclusion - protection</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Prevents compiler and linker errors resulting from - redefinition of items.</P -><P ->Wrap each header file with the following syntax to prevent - multiple inclusions of the file. Of course, replace PROJECT_H - with your file name, with "." Changed to "_", and make it - uppercase.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->#ifndef PROJECT_H_INCLUDED +} +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Exceptions:</i></span> + if the value of block_list_length() *may* change or could + *potentially* change, then you must code the function call in the + for/while loop. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S29">4.6.4. Pass and Return by Const Reference</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + This allows a developer to define a const pointer and call your + function. If your function does not have the const keyword, we + may not be able to use your function. Consider strcmp, if it were + defined as: extern int strcmp( char *s1, char *s2 ); + </p> + <p> + I could then not use it to compare argv's in main: int main( int + argc, const char *argv[] ) { strcmp( argv[0], "privoxy" ); } + </p> + <p> + Both these pointers are *const*! If the c runtime library + maintainers do it, we should too. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S30">4.6.5. Pass and Return by Value</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Most structures cannot fit onto a normal stack entry (i.e. they + are not 4 bytes or less). Aka, a function declaration like: int + load_aclfile( struct client_state csp ) + </p> + <p> + would not work. So, to be consistent, we should declare all + prototypes with "pass by value": int load_aclfile( struct + client_state *csp ) + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S31">4.6.6. Names of include files</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Your include statements should contain the file name without a + path. The path should be listed in the Makefile, using -I as + processor directive to search the indicated paths. An exception + to this would be for some proprietary software that utilizes a + partial path to distinguish their header files from system or + other header files. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +#include <iostream.h> /* This is not a local include */ +#include "config.h" /* This IS a local include */ +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Exception:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +/* This is not a local include, but requires a path element. */ +#include <sys/fileName.h> +</pre> + </td> + </tr> + </table> + + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> + Please! do not add "-I." to the Makefile without a _very_ good + reason. This duplicates the #include "file.h" behavior. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S32">4.6.7. Provide multiple inclusion protection</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Prevents compiler and linker errors resulting from redefinition + of items. + </p> + <p> + Wrap each header file with the following syntax to prevent + multiple inclusions of the file. Of course, replace PROJECT_H + with your file name, with "." Changed to "_", and make it + uppercase. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +#ifndef PROJECT_H_INCLUDED #define PROJECT_H_INCLUDED ... -#endif /* ndef PROJECT_H_INCLUDED */</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S33" ->4.6.8. Use `extern "C"` when appropriate</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->If our headers are included from C++, they must declare our - functions as `extern "C"`. This has no cost in C, but increases - the potential re-usability of our code.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->#ifdef __cplusplus +#endif /* ndef PROJECT_H_INCLUDED */ +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S33">4.6.8. Use `extern "C"` when appropriate</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + If our headers are included from C++, they must declare our + functions as `extern "C"`. This has no cost in C, but increases + the potential re-usability of our code. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +#ifdef __cplusplus extern "C" { #endif /* def __cplusplus */ @@ -1755,145 +1201,93 @@ extern "C" #ifdef __cplusplus } -#endif /* def __cplusplus */</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S34" ->4.6.9. Where Possible, Use Forward Struct - Declaration Instead of Includes</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Useful in headers that include pointers to other struct's. - Modifications to excess header files may cause needless - compiles.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->/********************************************************************* +#endif /* def __cplusplus */ +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S34">4.6.9. Where Possible, Use Forward Struct + Declaration Instead of Includes</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Useful in headers that include pointers to other struct's. + Modifications to excess header files may cause needless compiles. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +/********************************************************************* * We're avoiding an include statement here! *********************************************************************/ struct file_list; -extern file_list *xyz;</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> If you declare "file_list xyz;" (without the - pointer), then including the proper header file is necessary. - If you only want to prototype a pointer, however, the header - file is unnecessary.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Status:</I -></SPAN -> Use with discretion.</P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="S35" ->4.7. General Coding Practices</A -></H2 -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S36" ->4.7.1. Turn on warnings</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation</I -></SPAN -></P -><P ->Compiler warnings are meant to help you find bugs. You - should turn on as many as possible. With GCC, the switch is - "-Wall". Try and fix as many warnings as possible.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S37" ->4.7.2. Provide a default case for all switch - statements</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->What you think is guaranteed is never really guaranteed. The - value that you don't think you need to check is the one that - someday will be passed. So, to protect yourself from the - unknown, always have a default step in a switch statement.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->switch( hash_string( cmd ) ) +extern file_list *xyz; +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> If + you declare "file_list xyz;" (without the pointer), then + including the proper header file is necessary. If you only want + to prototype a pointer, however, the header file is unnecessary. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Status:</i></span> Use + with discretion. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="S35">4.7. General Coding Practices</a> + </h2> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S36">4.7.1. Turn on warnings</a> + </h3> + <p> + <span class="emphasis"><i class="EMPHASIS">Explanation</i></span> + </p> + <p> + Compiler warnings are meant to help you find bugs. You should + turn on as many as possible. With GCC, the switch is "-Wall". Try + and fix as many warnings as possible. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S37">4.7.2. Provide a default case for all switch + statements</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + What you think is guaranteed is never really guaranteed. The + value that you don't think you need to check is the one that + someday will be passed. So, to protect yourself from the unknown, + always have a default step in a switch statement. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +switch( hash_string( cmd ) ) { case hash_actions_file : ... code ... @@ -1908,438 +1302,299 @@ CLASS="PROGRAMLISTING" ... anomaly code goes here ... continue; / break; / exit( 1 ); / etc ... -} /* end switch( hash_string( cmd ) ) */</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> If you already have a default condition, you - are obviously exempt from this point. Of note, most of the - WIN32 code calls `DefWindowProc' after the switch statement. - This API call *should* be included in a default statement.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Another Note:</I -></SPAN -> This is not so much a readability issue - as a robust programming issue. The "anomaly code goes here" may - be no more than a print to the STDERR stream (as in - load_config). Or it may really be an abort condition.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Status:</I -></SPAN -> Programmer discretion is advised.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S38" ->4.7.3. Try to avoid falling through cases in a - switch statement.</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->In general, you will want to have a 'break' statement within - each 'case' of a switch statement. This allows for the code to - be more readable and understandable, and furthermore can - prevent unwanted surprises if someone else later gets creative - and moves the code around.</P -><P ->The language allows you to plan the fall through from one - case statement to another simply by omitting the break - statement within the case statement. This feature does have - benefits, but should only be used in rare cases. In general, - use a break statement for each case statement.</P -><P ->If you choose to allow fall through, you should comment both - the fact of the fall through and reason why you felt it was - necessary.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S39" ->4.7.4. Use 'long' or 'short' Instead of - 'int'</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->On 32-bit platforms, int usually has the range of long. On - 16-bit platforms, int has the range of short.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Status:</I -></SPAN -> open-to-debate. In the case of most FSF - projects (including X/GNU-Emacs), there are typedefs to int4, - int8, int16, (or equivalence ... I forget the exact typedefs - now). Should we add these to IJB now that we have a "configure" - script?</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S40" ->4.7.5. Don't mix size_t and other types</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->The type of size_t varies across platforms. Do not make - assumptions about whether it is signed or unsigned, or about - how long it is. Do not compare a size_t against another - variable of a different type (or even against a constant) - without casting one of the values.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S41" ->4.7.6. Declare each variable and struct on its - own line.</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->It can be tempting to declare a series of variables all on - one line. Don't.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->long a = 0; +} /* end switch( hash_string( cmd ) ) */ +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> If + you already have a default condition, you are obviously exempt + from this point. Of note, most of the WIN32 code calls + `DefWindowProc' after the switch statement. This API call + *should* be included in a default statement. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Another + Note:</i></span> This is not so much a readability issue as a + robust programming issue. The "anomaly code goes here" may be no + more than a print to the STDERR stream (as in load_config). Or it + may really be an abort condition. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Status:</i></span> + Programmer discretion is advised. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S38">4.7.3. Try to avoid falling through cases in a + switch statement.</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + In general, you will want to have a 'break' statement within each + 'case' of a switch statement. This allows for the code to be more + readable and understandable, and furthermore can prevent unwanted + surprises if someone else later gets creative and moves the code + around. + </p> + <p> + The language allows you to plan the fall through from one case + statement to another simply by omitting the break statement + within the case statement. This feature does have benefits, but + should only be used in rare cases. In general, use a break + statement for each case statement. + </p> + <p> + If you choose to allow fall through, you should comment both the + fact of the fall through and reason why you felt it was + necessary. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S39">4.7.4. Use 'long' or 'short' Instead of 'int'</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + On 32-bit platforms, int usually has the range of long. On 16-bit + platforms, int has the range of short. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Status:</i></span> + open-to-debate. In the case of most FSF projects (including + X/GNU-Emacs), there are typedefs to int4, int8, int16, (or + equivalence ... I forget the exact typedefs now). Should we add + these to IJB now that we have a "configure" script? + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S40">4.7.5. Don't mix size_t and other types</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + The type of size_t varies across platforms. Do not make + assumptions about whether it is signed or unsigned, or about how + long it is. Do not compare a size_t against another variable of a + different type (or even against a constant) without casting one + of the values. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S41">4.7.6. Declare each variable and struct on its own + line.</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + It can be tempting to declare a series of variables all on one + line. Don't. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +long a = 0; long b = 0; -long c = 0;</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Instead of:</I -></SPAN -></P -><P ->long a, b, c;</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -> - there is more room for comments on the - individual variables - easier to add new variables without - messing up the original ones - when searching on a variable to - find its type, there is less clutter to "visually" - eliminate</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Exceptions:</I -></SPAN -> when you want to declare a bunch of loop - variables or other trivial variables; feel free to declare them - on one line. You should, although, provide a good comment on - their functions.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Status:</I -></SPAN -> developer-discretion.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S42" ->4.7.7. Use malloc/zalloc sparingly</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->Create a local struct (on the stack) if the variable will - live and die within the context of one function call.</P -><P ->Only "malloc" a struct (on the heap) if the variable's life - will extend beyond the context of one function call.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->If a function creates a struct and stores a pointer to it in a -list, then it should definitely be allocated via `malloc'.</PRE -></TD -></TR -></TABLE -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S43" ->4.7.8. The Programmer Who Uses 'malloc' is - Responsible for Ensuring 'free'</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->If you have to "malloc" an instance, you are responsible for - insuring that the instance is `free'd, even if the deallocation - event falls within some other programmer's code. You are also - responsible for ensuring that deletion is timely (i.e. not too - soon, not too late). This is known as "low-coupling" and is a - "good thing (tm)". You may need to offer a - free/unload/destructor type function to accommodate this.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->int load_re_filterfile( struct client_state *csp ) { ... } -static void unload_re_filterfile( void *f ) { ... }</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Exceptions:</I -></SPAN -></P -><P ->The developer cannot be expected to provide `free'ing - functions for C run-time library functions ... such as - `strdup'.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Status:</I -></SPAN -> developer-discretion. The "main" use of this - standard is for allocating and freeing data structures (complex - or nested).</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S44" ->4.7.9. Add loaders to the `file_list' structure - and in order</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->I have ordered all of the "blocker" file code to be in alpha - order. It is easier to add/read new blockers when you expect a - certain order.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> It may appear that the alpha order is broken in - places by POPUP tests coming before PCRS tests. But since - POPUPs can also be referred to as KILLPOPUPs, it is clear that - it should come first.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="S45" ->4.7.10. "Uncertain" new code and/or changes to - existing code, use FIXME or XXX</A -></H3 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Explanation:</I -></SPAN -></P -><P ->If you have enough confidence in new code or confidence in - your changes, but are not *quite* sure of the repercussions, - add this:</P -><P ->/* FIXME: this code has a logic error on platform XYZ, * - attempting to fix */ #ifdef PLATFORM ...changed code here... - #endif</P -><P ->or:</P -><P ->/* FIXME: I think the original author really meant this... - */ ...changed code here...</P -><P ->or:</P -><P ->/* FIXME: new code that *may* break something else... */ - ...new code here...</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> If you make it clear that this may or may not - be a "good thing (tm)", it will be easier to identify and - include in the project (or conversely exclude from the - project).</P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="S46" ->4.8. Addendum: Template for files and function - comment blocks:</A -></H2 -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example for file comments:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->const char FILENAME_rcs[] = "$Id$"; +long c = 0; +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Instead of:</i></span> + </p> + <p> + long a, b, c; + </p> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> - there is more room for + comments on the individual variables - easier to add new + variables without messing up the original ones - when searching + on a variable to find its type, there is less clutter to + "visually" eliminate + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Exceptions:</i></span> + when you want to declare a bunch of loop variables or other + trivial variables; feel free to declare them on one line. You + should, although, provide a good comment on their functions. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Status:</i></span> + developer-discretion. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S42">4.7.7. Use malloc/zalloc sparingly</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + Create a local struct (on the stack) if the variable will live + and die within the context of one function call. + </p> + <p> + Only "malloc" a struct (on the heap) if the variable's life will + extend beyond the context of one function call. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +If a function creates a struct and stores a pointer to it in a +list, then it should definitely be allocated via `malloc'. +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S43">4.7.8. The Programmer Who Uses 'malloc' is + Responsible for Ensuring 'free'</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + If you have to "malloc" an instance, you are responsible for + insuring that the instance is `free'd, even if the deallocation + event falls within some other programmer's code. You are also + responsible for ensuring that deletion is timely (i.e. not too + soon, not too late). This is known as "low-coupling" and is a + "good thing (tm)". You may need to offer a free/unload/destructor + type function to accommodate this. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +int load_re_filterfile( struct client_state *csp ) { ... } +static void unload_re_filterfile( void *f ) { ... } +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Exceptions:</i></span> + </p> + <p> + The developer cannot be expected to provide `free'ing functions + for C run-time library functions ... such as `strdup'. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Status:</i></span> + developer-discretion. The "main" use of this standard is for + allocating and freeing data structures (complex or nested). + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S44">4.7.9. Add loaders to the `file_list' structure and + in order</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + I have ordered all of the "blocker" file code to be in alpha + order. It is easier to add/read new blockers when you expect a + certain order. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> It + may appear that the alpha order is broken in places by POPUP + tests coming before PCRS tests. But since POPUPs can also be + referred to as KILLPOPUPs, it is clear that it should come first. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="S45">4.7.10. "Uncertain" new code and/or changes to + existing code, use FIXME or XXX</a> + </h3> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Explanation:</i></span> + </p> + <p> + If you have enough confidence in new code or confidence in your + changes, but are not *quite* sure of the repercussions, add this: + </p> + <p> + /* FIXME: this code has a logic error on platform XYZ, * + attempting to fix */ #ifdef PLATFORM ...changed code here... + #endif + </p> + <p> + or: + </p> + <p> + /* FIXME: I think the original author really meant this... */ + ...changed code here... + </p> + <p> + or: + </p> + <p> + /* FIXME: new code that *may* break something else... */ ...new + code here... + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> If + you make it clear that this may or may not be a "good thing + (tm)", it will be easier to identify and include in the project + (or conversely exclude from the project). + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="S46">4.8. Addendum: Template for files and function + comment blocks:</a> + </h2> + <p> + <span class="emphasis"><i class="EMPHASIS">Example for file + comments:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +const char FILENAME_rcs[] = "$Id: coding.html,v 1.54 2010/11/13 12:50:18 fabiankeil Exp $"; /********************************************************************* * - * File : $Source$ + * File : $Source: /cvsroot/ijbswa/current/doc/webserver/developer-manual/coding.html,v $ * * Purpose : (Fill me in with a good description!) * @@ -2361,7 +1616,7 @@ CLASS="PROGRAMLISTING" * The GNU General Public License should be included with * this file. If not, you can view it at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or write to the Free Software Foundation, Inc., + * or write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 , * USA * @@ -2372,55 +1627,39 @@ CLASS="PROGRAMLISTING" ...necessary include files for us to do our work... -const char FILENAME_h_rcs[] = FILENAME_H_VERSION;</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> This declares the rcs variables that should be - added to the "show-proxy-args" page. If this is a brand new - creation by you, you are free to change the "Copyright" section - to represent the rights you wish to maintain.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> The formfeed character that is present right - after the comment flower box is handy for (X|GNU)Emacs users to - skip the verbiage and get to the heart of the code (via - `forward-page' and `backward-page'). Please include it if you - can.</P -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example for file header comments:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->#ifndef _FILENAME_H +const char FILENAME_h_rcs[] = FILENAME_H_VERSION; +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> This + declares the rcs variables that should be added to the + "show-proxy-args" page. If this is a brand new creation by you, you + are free to change the "Copyright" section to represent the rights + you wish to maintain. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> The + formfeed character that is present right after the comment flower + box is handy for (X|GNU)Emacs users to skip the verbiage and get to + the heart of the code (via `forward-page' and `backward-page'). + Please include it if you can. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">Example for file header + comments:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +#ifndef _FILENAME_H #define _FILENAME_H -#define FILENAME_H_VERSION "$Id$" +#define FILENAME_H_VERSION "$Id: coding.html,v 1.54 2010/11/13 12:50:18 fabiankeil Exp $" /********************************************************************* * - * File : $Source$ + * File : $Source: /cvsroot/ijbswa/current/doc/webserver/developer-manual/coding.html,v $ * * Purpose : (Fill me in with a good description!) * @@ -2442,7 +1681,7 @@ CLASS="PROGRAMLISTING" * The GNU General Public License should be included with * this file. If not, you can view it at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or write to the Free Software Foundation, Inc., + * or write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 , * USA * @@ -2473,27 +1712,20 @@ extern const char FILENAME_h_rcs[]; Local Variables: tab-width: 3 end: -*/</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Example for function comments:</I -></SPAN -></P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" ->/********************************************************************* +*/ +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Example for function + comments:</i></span> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> +/********************************************************************* * * Function : FUNCTION_NAME * @@ -2503,7 +1735,7 @@ CLASS="PROGRAMLISTING" * 1 : param1 = pointer to an important thing * 2 : x = pointer to something else * - * Returns : 0 => Ok, everything else is an error. + * Returns : 0 => Ok, everything else is an error. * *********************************************************************/ int FUNCTION_NAME( void *param1, const char *x ) @@ -2511,80 +1743,46 @@ int FUNCTION_NAME( void *param1, const char *x ) ... return( 0 ); -}</PRE -></TD -></TR -></TABLE -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Note:</I -></SPAN -> If we all follow this practice, we should be - able to parse our code to create a "self-documenting" web - page.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="documentation.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="testing.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Documentation Guidelines</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Testing Guidelines</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +} +</pre> + </td> + </tr> + </table> + <p> + <span class="emphasis"><i class="EMPHASIS">Note:</i></span> If we + all follow this practice, we should be able to parse our code to + create a "self-documenting" web page. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="documentation.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="testing.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Documentation Guidelines + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Testing Guidelines + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/contact.html b/doc/webserver/developer-manual/contact.html index e87e6046..12d54193 100644 --- a/doc/webserver/developer-manual/contact.html +++ b/doc/webserver/developer-manual/contact.html @@ -1,563 +1,406 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Contacting the developers, Bug Reporting and Feature Requests</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Update the Webserver" -HREF="webserver-update.html"><LINK -REL="NEXT" -TITLE="Privoxy Copyright, License and History" -HREF="copyright.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="webserver-update.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="copyright.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="CONTACT" ->8. Contacting the developers, Bug Reporting and Feature Requests</A -></H1 -><P -> We value your feedback. In fact, we rely on it to improve - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and its configuration. - However, please note the following hints, so we can - provide you with the best support:</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CONTACT-SUPPORT" ->8.1. Get Support</A -></H2 -><P -> For casual users, our - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118" -TARGET="_top" ->support forum at SourceForge</A -> - is probably best suited: - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118" -TARGET="_top" ->http://sourceforge.net/tracker/?group_id=11118&atid=211118</A -></P -><P -> All users are of course welcome to discuss their issues on the <A -HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-users" -TARGET="_top" ->users - mailing list</A ->, where the developers also hang around.</P -><P -> Please don't sent private support requests to individual Privoxy - developers, either use the mailing lists or the support trackers.</P -><P -> If you have to contact a Privoxy developer directly for other reasons, - please send a real mail and do not bother with SourceForge's messaging - system. Answers to SourceForge messages are usually bounced by SourceForge's - mail server in which case the developer wasted time writing a response you - don't get. From your point of view it will look like your message has - been completely ignored, so this is frustrating for all parties involved.</P -><P -> Note that the Privoxy mailing lists are moderated. Posts from unsubscribed - addresses have to be accepted manually by a moderator. This may cause a - delay of several days and if you use a subject that doesn't clearly - mention Privoxy or one of its features, your message may be accidentally - discarded as spam.</P -><P -> If you aren't subscribed, you should therefore spend a few seconds - to come up with a proper subject. Additionally you should make it clear - that you want to get CC'd. Otherwise some responses will be directed to - the mailing list only, and you won't see them.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="REPORTING" ->8.2. Reporting Problems</A -></H2 -><P -><SPAN -CLASS="QUOTE" ->"Problems"</SPAN -> for our purposes, come in two forms:</P -><P -></P -><UL -><LI -><P -> Configuration issues, such as ads that slip through, or sites that - don't function properly due to one <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - <SPAN -CLASS="QUOTE" ->"action"</SPAN -> or another being turned <SPAN -CLASS="QUOTE" ->"on"</SPAN ->. - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"Bugs"</SPAN -> in the programming code that makes up - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, such as that might cause a crash. - </P -></LI -></UL -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="CONTACT-ADS" ->8.2.1. Reporting Ads or Other Configuration Problems</A -></H3 -><P -> Please send feedback on ads that slipped through, innocent images that were - blocked, sites that don't work properly, and other configuration related problem of - <TT -CLASS="FILENAME" ->default.action</TT -> file, to - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=460288" -TARGET="_top" -> http://sourceforge.net/tracker/?group_id=11118&atid=460288</A ->, - the Actions File Tracker.</P -><P -> New, improved <TT -CLASS="FILENAME" ->default.action</TT -> files may occasionally be made - available based on your feedback. These will be announced on the <A -HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-announce" -TARGET="_top" ->ijbswa-announce</A -> - list and available from our the <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->files section</A -> of - our <A -HREF="http://sf.net/projects/ijbswa/" -TARGET="_top" ->project page</A ->.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="CONTACT-BUGS" ->8.2.2. Reporting Bugs</A -></H3 -><P -> Please report all bugs through our bug tracker: - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=111118" -TARGET="_top" ->http://sourceforge.net/tracker/?group_id=11118&atid=111118</A ->. </P -><P -> Before doing so, please make sure that the bug has <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not already been submitted</I -></SPAN -> - and observe the additional hints at the top of the <A -HREF="http://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118" -TARGET="_top" ->submit - form</A ->. If already submitted, please feel free to add any info to the - original report that might help to solve the issue.</P -><P -> Please try to verify that it is a <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> bug, - and not a browser or site bug or documented behaviour that just happens - to be different than what you expected. If unsure, - try <A -HREF="http://config.privoxy.org/toggle?set=disable" -TARGET="_top" ->toggling - off</A -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, and see if the problem persists.</P -><P -> If you are using your own custom configuration, please try - the stock configs to see if the problem is configuration related. - If you're having problems with a feature that is disabled by default, - please ask around on the mailing list if others can reproduce the problem.</P -><P -> If you aren't using the latest Privoxy version, the bug may have been found - and fixed in the meantime. We would appreciate if you could take the time - to <A -HREF="http://www.privoxy.org/user-manual/installation.html" -TARGET="_top" ->upgrade - to the latest version</A -> (or even the latest CVS snapshot) and verify - that your bug still exists.</P -><P ->Please be sure to provide the following information:</P -><P -> <P -></P -><UL -><LI -><P -> The exact <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version you are using - (if you got the source from CVS, please also provide the source code revisions - as shown in <A -HREF="http://config.privoxy.org/show-version" -TARGET="_top" ->http://config.privoxy.org/show-version</A ->). - </P -></LI -><LI -><P -> The operating system and versions you run - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on, (e.g. <SPAN -CLASS="APPLICATION" ->Windows - XP SP2</SPAN ->), if you are using a Unix flavor, - sending the output of <SPAN -CLASS="QUOTE" ->"uname -a"</SPAN -> should do, - in case of GNU/Linux, please also name the distribution. - </P -></LI -><LI -><P -> The name, platform, and version of the <SPAN -CLASS="APPLICATION" ->browser</SPAN -> - you were using (e.g. <SPAN -CLASS="APPLICATION" ->Internet Explorer v5.5</SPAN -> for Mac). - </P -></LI -><LI -><P -> The URL where the problem occurred, or some way for us to duplicate the - problem (e.g. <TT -CLASS="LITERAL" ->http://somesite.example.com/?somethingelse=123</TT ->). - </P -></LI -><LI -><P -> Whether your version of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is one supplied - by the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> developers via SourceForge, - or if you got your copy somewhere else. - </P -></LI -><LI -><P -> Whether you are using <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in tandem with - another proxy such as <SPAN -CLASS="APPLICATION" ->Tor</SPAN ->. If so, please - temporary disable the other proxy to see if the symptoms change. - </P -></LI -><LI -><P -> Whether you are using a personal firewall product. If so, does - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> work without it? - </P -></LI -><LI -><P -> Any other pertinent information to help identify the problem such as config - or log file excerpts (yes, you should have log file entries for each - action taken). To get a meaningful logfile, please make sure that the - <A -HREF="../user-manual/config.html#LOGFILE" -TARGET="_top" ->logfile directive</A -> - is being used and the following <A -HREF="../user-manual/config.html#DEBUG" -TARGET="_top" ->debug options</A -> are enabled: - <P -CLASS="LITERALLAYOUT" ->debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.<br> -debug 2 # show each connection status<br> -debug 4 # show I/O status<br> -debug 8 # show header parsing<br> -debug 128 # debug redirects<br> -debug 256 # debug GIF de-animation<br> -debug 512 # Common Log Format<br> -debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.<br> -debug 4096 # Startup banner and warnings.<br> -debug 8192 # Non-fatal errors</P -> - If you are having trouble with a filter, please additionally enable - <P -CLASS="LITERALLAYOUT" ->debug 64 # debug regular expression filters</P -> - If you are using Privoxy 3.0.17 or later and suspect that it interprets the - request or the response incorrectly, please enable - <P -CLASS="LITERALLAYOUT" ->debug 32768 # log all data read from the network</P -> - Note that Privoxy log files may contain sensitive information so please don't - submit any logfiles you didn't read first. You can mask sensitive information - as long as it's clear that you removed something. - </P -></LI -></UL -></P -><P -> You don't have to tell us your actual name when filing a problem - report, but if you don't, please use a nickname so we can differentiate - between your messages and the ones entered by other "anonymous" users that - may respond to your request if they have the same problem or already - found a solution. Note that due to spam the trackers may not always - allow to post without being logged into SourceForge. If that's the - case, you are still free to create a login that isn't directly linked - to your name, though.</P -><P -> Please also check the status of your request a few days after submitting - it, as we may request additional information. If you use a SF id, - you should automatically get a mail when someone responds to your request. - Please don't bother to add an email address when using the tracker. - If you prefer to communicate through email, just use one of the mailing - lists directly.</P -><P -> The <A -HREF="http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" -TARGET="_top" ->appendix - of the Privoxy User Manual</A -> also has helpful information - on understanding <TT -CLASS="LITERAL" ->actions</TT ->, and <TT -CLASS="LITERAL" ->action</TT -> debugging. </P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CONTACT-FEATURE" ->8.3. Request New Features</A -></H2 -><P -> You are welcome to submit ideas on new features or other proposals - for improvement through our feature request tracker at - <A -HREF="http://sourceforge.net/tracker/?atid=361118&group_id=11118" -TARGET="_top" ->http://sourceforge.net/tracker/?atid=361118&group_id=11118</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="MAILING-LISTS" ->8.4. Mailing Lists</A -></H2 -><P ->If you prefer to communicate through email, instead of using a web interface, -feel free to use one of the mailing lists. -To discuss issues that haven't been completely diagnosed yet, please use the Privoxy -users list. Technically interested users and people who wish to contribute to -the project are always welcome on the developers list. -You can find an overview of all <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->-related mailing lists, -including list archives, at: -<A -HREF="http://sourceforge.net/mail/?group_id=11118" -TARGET="_top" ->http://sourceforge.net/mail/?group_id=11118</A ->.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="webserver-update.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="copyright.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Update the Webserver</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Privoxy Copyright, License and History</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Contacting the developers, Bug Reporting and Feature Requests + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="Update the Webserver" href= + "webserver-update.html"> + <link rel="NEXT" title="Privoxy Copyright, License and History" href= + "copyright.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="webserver-update.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="copyright.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="CONTACT">8. Contacting the developers, Bug Reporting and + Feature Requests</a> + </h1> + <p> + We value your feedback. In fact, we rely on it to improve <span + class="APPLICATION">Privoxy</span> and its configuration. However, + please note the following hints, so we can provide you with the best + support: + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CONTACT-SUPPORT">8.1. Get Support</a> + </h2> + <p> + For casual users, our <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=211118" + target="_top">support forum at SourceForge</a> is probably best + suited: <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=211118" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=211118</a> + </p> + <p> + All users are of course welcome to discuss their issues on the <a + href="http://lists.sourceforge.net/lists/listinfo/ijbswa-users" + target="_top">users mailing list</a>, where the developers also + hang around. + </p> + <p> + Please don't sent private support requests to individual Privoxy + developers, either use the mailing lists or the support trackers. + </p> + <p> + If you have to contact a Privoxy developer directly for other + reasons, please send a real mail and do not bother with + SourceForge's messaging system. Answers to SourceForge messages are + usually bounced by SourceForge's mail server in which case the + developer wasted time writing a response you don't get. From your + point of view it will look like your message has been completely + ignored, so this is frustrating for all parties involved. + </p> + <p> + Note that the Privoxy mailing lists are moderated. Posts from + unsubscribed addresses have to be accepted manually by a moderator. + This may cause a delay of several days and if you use a subject + that doesn't clearly mention Privoxy or one of its features, your + message may be accidentally discarded as spam. + </p> + <p> + If you aren't subscribed, you should therefore spend a few seconds + to come up with a proper subject. Additionally you should make it + clear that you want to get CC'd. Otherwise some responses will be + directed to the mailing list only, and you won't see them. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="REPORTING">8.2. Reporting Problems</a> + </h2> + <p> + <span class="QUOTE">"Problems"</span> for our purposes, come in two + forms: + </p> + <ul> + <li> + <p> + Configuration issues, such as ads that slip through, or sites + that don't function properly due to one <span class= + "APPLICATION">Privoxy</span> <span class= + "QUOTE">"action"</span> or another being turned <span class= + "QUOTE">"on"</span>. + </p> + </li> + <li> + <p> + <span class="QUOTE">"Bugs"</span> in the programming code that + makes up <span class="APPLICATION">Privoxy</span>, such as that + might cause a crash. + </p> + </li> + </ul> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="CONTACT-ADS">8.2.1. Reporting Ads or Other Configuration + Problems</a> + </h3> + <p> + Please send feedback on ads that slipped through, innocent images + that were blocked, sites that don't work properly, and other + configuration related problem of <tt class= + "FILENAME">default.action</tt> file, to <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=460288" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, + the Actions File Tracker. + </p> + <p> + New, improved <tt class="FILENAME">default.action</tt> files may + occasionally be made available based on your feedback. These will + be announced on the <a href= + "http://lists.sourceforge.net/lists/listinfo/ijbswa-announce" + target="_top">ijbswa-announce</a> list and available from our the + <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">files section</a> of our <a href= + "http://sf.net/projects/ijbswa/" target="_top">project page</a>. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="CONTACT-BUGS">8.2.2. Reporting Bugs</a> + </h3> + <p> + Please report all bugs through our bug tracker: <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=111118" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=111118</a>. + </p> + <p> + Before doing so, please make sure that the bug has <span class= + "emphasis"><i class="EMPHASIS">not already been + submitted</i></span> and observe the additional hints at the top + of the <a href= + "http://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118" + target="_top">submit form</a>. If already submitted, please feel + free to add any info to the original report that might help to + solve the issue. + </p> + <p> + Please try to verify that it is a <span class= + "APPLICATION">Privoxy</span> bug, and not a browser or site bug + or documented behaviour that just happens to be different than + what you expected. If unsure, try <a href= + "http://config.privoxy.org/toggle?set=disable" target= + "_top">toggling off</a> <span class="APPLICATION">Privoxy</span>, + and see if the problem persists. + </p> + <p> + If you are using your own custom configuration, please try the + stock configs to see if the problem is configuration related. If + you're having problems with a feature that is disabled by + default, please ask around on the mailing list if others can + reproduce the problem. + </p> + <p> + If you aren't using the latest Privoxy version, the bug may have + been found and fixed in the meantime. We would appreciate if you + could take the time to <a href= + "http://www.privoxy.org/user-manual/installation.html" target= + "_top">upgrade to the latest version</a> (or even the latest CVS + snapshot) and verify that your bug still exists. + </p> + <p> + Please be sure to provide the following information: + </p> + <p> + </p> + <ul> + <li> + <p> + The exact <span class="APPLICATION">Privoxy</span> version + you are using (if you got the source from CVS, please also + provide the source code revisions as shown in <a href= + "http://config.privoxy.org/show-version" target= + "_top">http://config.privoxy.org/show-version</a>). + </p> + </li> + <li> + <p> + The operating system and versions you run <span class= + "APPLICATION">Privoxy</span> on, (e.g. <span class= + "APPLICATION">Windows XP SP2</span>), if you are using a Unix + flavor, sending the output of <span class="QUOTE">"uname + -a"</span> should do, in case of GNU/Linux, please also name + the distribution. + </p> + </li> + <li> + <p> + The name, platform, and version of the <span class= + "APPLICATION">browser</span> you were using (e.g. <span + class="APPLICATION">Internet Explorer v5.5</span> for Mac). + </p> + </li> + <li> + <p> + The URL where the problem occurred, or some way for us to + duplicate the problem (e.g. <tt class= + "LITERAL">http://somesite.example.com/?somethingelse=123</tt>). + </p> + </li> + <li> + <p> + Whether your version of <span class= + "APPLICATION">Privoxy</span> is one supplied by the <span + class="APPLICATION">Privoxy</span> developers via + SourceForge, or if you got your copy somewhere else. + </p> + </li> + <li> + <p> + Whether you are using <span class= + "APPLICATION">Privoxy</span> in tandem with another proxy + such as <span class="APPLICATION">Tor</span>. If so, please + temporary disable the other proxy to see if the symptoms + change. + </p> + </li> + <li> + <p> + Whether you are using a personal firewall product. If so, + does <span class="APPLICATION">Privoxy</span> work without + it? + </p> + </li> + <li> + <p> + Any other pertinent information to help identify the problem + such as config or log file excerpts (yes, you should have log + file entries for each action taken). To get a meaningful + logfile, please make sure that the <a href= + "../user-manual/config.html#LOGFILE" target="_top">logfile + directive</a> is being used and the following <a href= + "../user-manual/config.html#DEBUG" target="_top">debug + options</a> are enabled: + </p> + <p class="LITERALLAYOUT"> + debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.<br> + + debug 2 # show each connection status<br> + + debug 4 # show I/O status<br> + + debug 8 # show header parsing<br> + + debug 128 # debug redirects<br> + + debug 256 # debug GIF de-animation<br> + + debug 512 # Common Log Format<br> + + debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.<br> + + debug 4096 # Startup banner and warnings.<br> + + debug 8192 # Non-fatal errors + </p> + If you are having trouble with a filter, please additionally + enable + <p class="LITERALLAYOUT"> + debug 64 # debug regular expression filters + </p> + If you are using Privoxy 3.0.17 or later and suspect that it + interprets the request or the response incorrectly, please + enable + <p class="LITERALLAYOUT"> + debug 32768 # log all data read from the network + </p> + Note that Privoxy log files may contain sensitive information + so please don't submit any logfiles you didn't read first. You + can mask sensitive information as long as it's clear that you + removed something.<br> + </li> + </ul> + + <p> + You don't have to tell us your actual name when filing a problem + report, but if you don't, please use a nickname so we can + differentiate between your messages and the ones entered by other + "anonymous" users that may respond to your request if they have + the same problem or already found a solution. Note that due to + spam the trackers may not always allow to post without being + logged into SourceForge. If that's the case, you are still free + to create a login that isn't directly linked to your name, + though. + </p> + <p> + Please also check the status of your request a few days after + submitting it, as we may request additional information. If you + use a SF id, you should automatically get a mail when someone + responds to your request. Please don't bother to add an email + address when using the tracker. If you prefer to communicate + through email, just use one of the mailing lists directly. + </p> + <p> + The <a href= + "http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" + target="_top">appendix of the Privoxy User Manual</a> also has + helpful information on understanding <tt class= + "LITERAL">actions</tt>, and <tt class="LITERAL">action</tt> + debugging. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CONTACT-FEATURE">8.3. Request New Features</a> + </h2> + <p> + You are welcome to submit ideas on new features or other proposals + for improvement through our feature request tracker at <a href= + "http://sourceforge.net/tracker/?atid=361118&group_id=11118" + target= + "_top">http://sourceforge.net/tracker/?atid=361118&group_id=11118</a>. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="MAILING-LISTS">8.4. Mailing Lists</a> + </h2> + <p> + If you prefer to communicate through email, instead of using a web + interface, feel free to use one of the mailing lists. To discuss + issues that haven't been completely diagnosed yet, please use the + Privoxy users list. Technically interested users and people who + wish to contribute to the project are always welcome on the + developers list. You can find an overview of all <span class= + "APPLICATION">Privoxy</span>-related mailing lists, including list + archives, at: <a href="http://sourceforge.net/mail/?group_id=11118" + target="_top">http://sourceforge.net/mail/?group_id=11118</a>. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="webserver-update.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="copyright.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Update the Webserver + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Privoxy Copyright, License and History + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/copyright.html b/doc/webserver/developer-manual/copyright.html index c89bcaed..39b1dd0f 100644 --- a/doc/webserver/developer-manual/copyright.html +++ b/doc/webserver/developer-manual/copyright.html @@ -1,298 +1,176 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy Copyright, License and History</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Contacting the developers, Bug Reporting and Feature Requests" -HREF="contact.html"><LINK -REL="NEXT" -TITLE="See also" -HREF="seealso.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="contact.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="seealso.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="COPYRIGHT" ->9. Privoxy Copyright, License and History</A -></H1 -><P -> Copyright © 2001-2011 by Privoxy Developers <CODE -CLASS="EMAIL" -><<A -HREF="mailto:ijbswa-developers@lists.sourceforge.net" ->ijbswa-developers@lists.sourceforge.net</A ->></CODE -></P -><P -> Some source code is based on code Copyright © 1997 by Anonymous Coders - and Junkbusters, Inc. and licensed under the <I -CLASS="CITETITLE" ->GNU General Public - License</I ->.</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN1229" ->9.1. License</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is free software; you can - redistribute it and/or modify it under the terms of the - <I -CLASS="CITETITLE" ->GNU General Public License</I ->, version 2, - as published by the Free Software Foundation.</P -><P -> 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 <A -HREF="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" -TARGET="_top" -> <I -CLASS="CITETITLE" ->GNU General Public License</I -></A -> for details.</P -><P -> You should have received a copy of the <I -CLASS="CITETITLE" ->GNU GPL</I -> - along with this program; if not, write to the <P -CLASS="ADDRESS" -> Free Software<br> - Foundation, Inc. <SPAN -CLASS="STREET" ->51 Franklin Street, Fifth Floor</SPAN -><br> - <SPAN -CLASS="CITY" ->Boston</SPAN ->, <SPAN -CLASS="STATE" ->MA</SPAN -> <SPAN -CLASS="POSTCODE" ->02110-1301</SPAN -><br> - <SPAN -CLASS="COUNTRY" ->USA</SPAN -> </P -></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN1245" ->9.2. History</A -></H2 -><P -> A long time ago, there was the - <A -HREF="http://www.junkbusters.com/ijb.html" -TARGET="_top" -><SPAN -CLASS="APPLICATION" ->Internet Junkbuster</SPAN -></A ->, - by Anonymous Coders and <A -HREF="http://www.junkbusters.com/" -TARGET="_top" ->Junkbusters - Corporation</A ->. This saved many users a lot of pain in the early days of - web advertising and user tracking.</P -><P -> But the web, its protocols and standards, and with it, the techniques for - forcing ads on users, give up autonomy over their browsing, and - for tracking them, keeps evolving. Unfortunately, the <SPAN -CLASS="APPLICATION" ->Internet - Junkbuster</SPAN -> did not. Version 2.0.2, published in 1998, was - (and is) the last official - <A -HREF="http://www.junkbusters.com/ijbdist.html#release" -TARGET="_top" ->release</A -> - available from <A -HREF="http://www.junkbusters.com" -TARGET="_top" ->Junkbusters Corporation</A ->. - Fortunately, it had been released under the GNU - <A -HREF="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" -TARGET="_top" ->GPL</A ->, - which allowed further development by others.</P -><P -> So Stefan Waldherr started maintaining an improved version of the - software, to which eventually a number of people contributed patches. - It could already replace banners with a transparent image, and had a first - version of pop-up killing, but it was still very closely based on the - original, with all its limitations, such as the lack of HTTP/1.1 support, - flexible per-site configuration, or content modification. The last release - from this effort was version 2.0.2-10, published in 2000.</P -><P -> Then, some - <A -HREF="http://www.privoxy.org/user-manual/copyright.html#AUTHORS" -TARGET="_top" ->developers</A -> - picked up the thread, and started turning the software inside out, upside down, - and then reassembled it, adding many - <A -HREF="http://www.privoxy.org/user-manual/introduction.html#FEATURES" -TARGET="_top" ->new - features</A -> along the way.</P -><P -> The result of this is <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, whose first - stable version, 3.0, was released August, 2002. - </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="contact.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="seealso.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Contacting the developers, Bug Reporting and Feature Requests</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->See also</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy Copyright, License and History + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title= + "Contacting the developers, Bug Reporting and Feature Requests" href= + "contact.html"> + <link rel="NEXT" title="See also" href="seealso.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="contact.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="seealso.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="COPYRIGHT">9. Privoxy Copyright, License and History</a> + </h1> + <p> + Copyright © 2001-2011 by Privoxy Developers <code class= + "EMAIL"><<a href= + "mailto:ijbswa-developers@lists.sourceforge.net">ijbswa-developers@lists.sourceforge.net</a>></code> + </p> + <p> + Some source code is based on code Copyright © 1997 by Anonymous + Coders and Junkbusters, Inc. and licensed under the <i class= + "CITETITLE">GNU General Public License</i>. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN1229">9.1. License</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span> is free software; you can + redistribute it and/or modify it under the terms of the <i class= + "CITETITLE">GNU General Public License</i>, version 2, as published + by the Free Software Foundation. + </p> + <p> + 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 <a + href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + target="_top"><i class="CITETITLE">GNU General Public + License</i></a> for details. + </p> + <p> + You should have received a copy of the <i class="CITETITLE">GNU + GPL</i> along with this program; if not, write to the + </p> + <p class="ADDRESS"> + Free Software<br> + Foundation, Inc. <span class="STREET">51 Franklin + Street, Fifth Floor</span><br> + <span class="CITY">Boston</span>, <span class= + "STATE">MA</span> <span class="POSTCODE">02110-1301</span><br> + <span class="COUNTRY">USA</span> + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN1245">9.2. History</a> + </h2> + <p> + A long time ago, there was the <a href= + "http://www.junkbusters.com/ijb.html" target="_top"><span class= + "APPLICATION">Internet Junkbuster</span></a>, by Anonymous Coders + and <a href="http://www.junkbusters.com/" target="_top">Junkbusters + Corporation</a>. This saved many users a lot of pain in the early + days of web advertising and user tracking. + </p> + <p> + But the web, its protocols and standards, and with it, the + techniques for forcing ads on users, give up autonomy over their + browsing, and for tracking them, keeps evolving. Unfortunately, the + <span class="APPLICATION">Internet Junkbuster</span> did not. + Version 2.0.2, published in 1998, was (and is) the last official <a + href="http://www.junkbusters.com/ijbdist.html#release" target= + "_top">release</a> available from <a href= + "http://www.junkbusters.com" target="_top">Junkbusters + Corporation</a>. Fortunately, it had been released under the GNU <a + href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + target="_top">GPL</a>, which allowed further development by others. + </p> + <p> + So Stefan Waldherr started maintaining an improved version of the + software, to which eventually a number of people contributed + patches. It could already replace banners with a transparent image, + and had a first version of pop-up killing, but it was still very + closely based on the original, with all its limitations, such as + the lack of HTTP/1.1 support, flexible per-site configuration, or + content modification. The last release from this effort was version + 2.0.2-10, published in 2000. + </p> + <p> + Then, some <a href= + "http://www.privoxy.org/user-manual/copyright.html#AUTHORS" target= + "_top">developers</a> picked up the thread, and started turning the + software inside out, upside down, and then reassembled it, adding + many <a href= + "http://www.privoxy.org/user-manual/introduction.html#FEATURES" + target="_top">new features</a> along the way. + </p> + <p> + The result of this is <span class="APPLICATION">Privoxy</span>, + whose first stable version, 3.0, was released August, 2002. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="contact.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="seealso.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Contacting the developers, Bug Reporting and Feature Requests + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + See also + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/cvs.html b/doc/webserver/developer-manual/cvs.html index db1fb9e9..3db67f4f 100644 --- a/doc/webserver/developer-manual/cvs.html +++ b/doc/webserver/developer-manual/cvs.html @@ -1,330 +1,209 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->The CVS Repository</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Introduction" -HREF="introduction.html"><LINK -REL="NEXT" -TITLE="Documentation Guidelines" -HREF="documentation.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="introduction.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="documentation.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="CVS" ->2. The CVS Repository</A -></H1 -><P -> If you become part of the active development team, you will eventually - need write access to our holy grail, the CVS repository. One of the - team members will need to set this up for you. Please read - this chapter completely before accessing via CVS. - </P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CVSACCESS" ->2.1. Access to CVS</A -></H2 -><P -> The project's CVS repository is hosted on - <A -HREF="http://sourceforge.net/" -TARGET="_top" ->SourceForge.</A -> - Please refer to the chapters 6 and 7 in - <A -HREF="http://sourceforge.net/docman/?group_id=1" -TARGET="_top" ->SF's site - documentation</A -> for the technical access details for your - operating system. For historical reasons, the CVS server is - called <TT -CLASS="LITERAL" ->ijbswa.cvs.sourceforge.net</TT ->, the repository is - called <TT -CLASS="LITERAL" ->ijbswa</TT ->, and the source tree module is called - <TT -CLASS="LITERAL" ->current</TT ->. - </P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CVSBRANCHES" ->2.2. Branches</A -></H2 -><P -> Within the CVS repository, there are modules and branches. As - mentioned, the sources are in the <TT -CLASS="LITERAL" ->current</TT -> - <SPAN -CLASS="QUOTE" ->"module"</SPAN ->. Other modules are present for platform specific - issues. There is a webview of the CVS hierarchy at <A -HREF="http://ijbswa.cvs.sourceforge.net/ijbswa/" -TARGET="_top" ->http://ijbswa.cvs.sourceforge.net/ijbswa/</A ->, - which might help with visualizing how these pieces fit together. - </P -><P -> Branches are used to fork a sub-development path from the main trunk. - Within the <TT -CLASS="LITERAL" ->current</TT -> module where the sources are, there - is always at least one <SPAN -CLASS="QUOTE" ->"branch"</SPAN -> from the main trunk - devoted to a stable release series. The main trunk is where active - development takes place for the next stable series (e.g. 3.2.x). - So just prior to each stable series (e.g. 3.0.x), a branch is created - just for stable series releases (e.g. 3.0.0 -> 3.0.1 -> 3.0.2, etc). - Once the initial stable release of any stable branch has taken place, - this branch is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->only used for bugfixes</I -></SPAN ->, which have - had prior testing before being committed to CVS. (See <A -HREF="newrelease.html#VERSIONNUMBERS" ->Version Numbers</A -> below for details on - versioning.) - </P -><P -> At one time there were two distinct branches: stable and unstable. The - more drastic changes were to be in the unstable branch. These branches - have now been merged to minimize time and effort of maintaining two - branches. - </P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CVSCOMMIT" ->2.3. CVS Commit Guidelines</A -></H2 -><P -> The source tree is the heart of every software project. Every effort must - be made to ensure that it is readable, compilable and consistent at all - times. There are differing guidelines for the stable branch and the - main development trunk, and we ask anyone with CVS access to strictly - adhere to the following guidelines: - </P -><P -> Basic Guidelines, for all branches: - </P -><P -> <P -></P -><UL -><LI -><P -> Please don't commit even - a small change without testing it thoroughly first. When we're - close to a public release, ask a fellow developer to review your - changes. - </P -></LI -><LI -><P -> Your commit message should give a concise overview of <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->what you - changed</I -></SPAN -> (no big details) and <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->why you changed it</I -></SPAN -> - Just check previous messages for good examples. - </P -></LI -><LI -><P -> Don't use the same message on multiple files, unless it equally applies to - all those files. - </P -></LI -><LI -><P -> If your changes span multiple files, and the code won't recompile unless - all changes are committed (e.g. when changing the signature of a function), - then commit all files one after another, without long delays in between. - If necessary, prepare the commit messages in advance. - </P -></LI -><LI -><P -> Before changing things on CVS, make sure that your changes are in line - with the team's general consensus on what should be done. - </P -></LI -><LI -><P -> Note that near a major public release, we get more cautious. - There is always the possibility to submit a patch to the <A -HREF="http://sourceforge.net/tracker/?atid=311118&group_id=11118&func=browse" -TARGET="_top" ->patch - tracker</A -> instead. - </P -></LI -></UL -> - </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="introduction.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="documentation.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Introduction</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Documentation Guidelines</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + The CVS Repository + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="Introduction" href="introduction.html"> + <link rel="NEXT" title="Documentation Guidelines" href= + "documentation.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="introduction.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="documentation.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="CVS">2. The CVS Repository</a> + </h1> + <p> + If you become part of the active development team, you will + eventually need write access to our holy grail, the CVS repository. + One of the team members will need to set this up for you. Please read + this chapter completely before accessing via CVS. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CVSACCESS">2.1. Access to CVS</a> + </h2> + <p> + The project's CVS repository is hosted on <a href= + "http://sourceforge.net/" target="_top">SourceForge.</a> Please + refer to the chapters 6 and 7 in <a href= + "http://sourceforge.net/docman/?group_id=1" target="_top">SF's site + documentation</a> for the technical access details for your + operating system. For historical reasons, the CVS server is called + <tt class="LITERAL">ijbswa.cvs.sourceforge.net</tt>, the repository + is called <tt class="LITERAL">ijbswa</tt>, and the source tree + module is called <tt class="LITERAL">current</tt>. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CVSBRANCHES">2.2. Branches</a> + </h2> + <p> + Within the CVS repository, there are modules and branches. As + mentioned, the sources are in the <tt class="LITERAL">current</tt> + <span class="QUOTE">"module"</span>. Other modules are present for + platform specific issues. There is a webview of the CVS hierarchy + at <a href="http://ijbswa.cvs.sourceforge.net/ijbswa/" target= + "_top">http://ijbswa.cvs.sourceforge.net/ijbswa/</a>, which might + help with visualizing how these pieces fit together. + </p> + <p> + Branches are used to fork a sub-development path from the main + trunk. Within the <tt class="LITERAL">current</tt> module where the + sources are, there is always at least one <span class= + "QUOTE">"branch"</span> from the main trunk devoted to a stable + release series. The main trunk is where active development takes + place for the next stable series (e.g. 3.2.x). So just prior to + each stable series (e.g. 3.0.x), a branch is created just for + stable series releases (e.g. 3.0.0 -> 3.0.1 -> 3.0.2, etc). + Once the initial stable release of any stable branch has taken + place, this branch is <span class="emphasis"><i class= + "EMPHASIS">only used for bugfixes</i></span>, which have had prior + testing before being committed to CVS. (See <a href= + "newrelease.html#VERSIONNUMBERS">Version Numbers</a> below for + details on versioning.) + </p> + <p> + At one time there were two distinct branches: stable and unstable. + The more drastic changes were to be in the unstable branch. These + branches have now been merged to minimize time and effort of + maintaining two branches. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CVSCOMMIT">2.3. CVS Commit Guidelines</a> + </h2> + <p> + The source tree is the heart of every software project. Every + effort must be made to ensure that it is readable, compilable and + consistent at all times. There are differing guidelines for the + stable branch and the main development trunk, and we ask anyone + with CVS access to strictly adhere to the following guidelines: + </p> + <p> + Basic Guidelines, for all branches: + </p> + <p> + </p> + <ul> + <li> + <p> + Please don't commit even a small change without testing it + thoroughly first. When we're close to a public release, ask a + fellow developer to review your changes. + </p> + </li> + <li> + <p> + Your commit message should give a concise overview of <span + class="emphasis"><i class="EMPHASIS">what you + changed</i></span> (no big details) and <span class= + "emphasis"><i class="EMPHASIS">why you changed it</i></span> + Just check previous messages for good examples. + </p> + </li> + <li> + <p> + Don't use the same message on multiple files, unless it equally + applies to all those files. + </p> + </li> + <li> + <p> + If your changes span multiple files, and the code won't + recompile unless all changes are committed (e.g. when changing + the signature of a function), then commit all files one after + another, without long delays in between. If necessary, prepare + the commit messages in advance. + </p> + </li> + <li> + <p> + Before changing things on CVS, make sure that your changes are + in line with the team's general consensus on what should be + done. + </p> + </li> + <li> + <p> + Note that near a major public release, we get more cautious. + There is always the possibility to submit a patch to the <a + href= + "http://sourceforge.net/tracker/?atid=311118&group_id=11118&func=browse" + target="_top">patch tracker</a> instead. + </p> + </li> + </ul> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="introduction.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="documentation.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Introduction + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Documentation Guidelines + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/documentation.html b/doc/webserver/developer-manual/documentation.html index f1bfe610..a57a2d26 100644 --- a/doc/webserver/developer-manual/documentation.html +++ b/doc/webserver/developer-manual/documentation.html @@ -1,944 +1,534 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Documentation Guidelines</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="The CVS Repository" -HREF="cvs.html"><LINK -REL="NEXT" -TITLE="Coding Guidelines" -HREF="coding.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="cvs.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="coding.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="DOCUMENTATION" ->3. Documentation Guidelines</A -></H1 -><P -> All formal documents are maintained in Docbook SGML and located in the - <SAMP -CLASS="COMPUTEROUTPUT" ->doc/source/*</SAMP -> directory. You will need - <A -HREF="http://www.docbook.org" -TARGET="_top" ->Docbook</A ->, the Docbook - DTD's and the Docbook modular stylesheets (or comparable alternatives), - and either <SPAN -CLASS="APPLICATION" ->jade</SPAN -> or - <SPAN -CLASS="APPLICATION" ->openjade</SPAN -> (recommended) installed in order to - build docs from source. Currently there is <A -HREF="../user-manual/index.html" -TARGET="_top" -><I -CLASS="CITETITLE" ->user-manual</I -></A ->, - <A -HREF="../faq/index.html" -TARGET="_top" -><I -CLASS="CITETITLE" ->FAQ</I -></A ->, and, of - course this, the <I -CLASS="CITETITLE" ->developer-manual</I -> in this format. - The <I -CLASS="CITETITLE" ->README</I ->, <I -CLASS="CITETITLE" ->AUTHORS</I ->, - <I -CLASS="CITETITLE" ->INSTALL</I ->, - <I -CLASS="CITETITLE" ->privoxy.1</I -> (man page), and - <I -CLASS="CITETITLE" ->config</I -> files are also now maintained as Docbook - SGML. These files, when built, in the top-level source directory are - generated files! Also, the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> <TT -CLASS="FILENAME" ->index.html</TT -> (and a - variation on this file, <TT -CLASS="FILENAME" ->privoxy-index.html</TT ->, - meant for inclusion with doc packages), are maintained as SGML as well. - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->DO NOT edit these directly</I -></SPAN ->. Edit the SGML source, or - contact someone involved in the documentation. - </P -><P -> <TT -CLASS="FILENAME" ->config</TT -> requires some special handling. The reason it - is maintained this way is so that the extensive comments in the file - mirror those in <I -CLASS="CITETITLE" ->user-manual</I ->. But the conversion - process requires going from SGML to HTML to text to special formatting - required for the embedded comments. Some of this does not survive so - well. Especially some of the examples that are longer than 80 characters. - The build process for this file outputs to <TT -CLASS="FILENAME" ->config.new</TT ->, - which should be reviewed for errors and mis-formatting. Once satisfied - that it is correct, then it should be hand copied to - <TT -CLASS="FILENAME" ->config</TT ->. - </P -><P -> Other, less formal documents (e.g. <TT -CLASS="FILENAME" ->LICENSE</TT ->) are - maintained as plain text files in the top-level source directory. - </P -><P -> Packagers are encouraged to include this documentation. For those without - the ability to build the docs locally, text versions of each are kept in - CVS. HTML versions are also being kept in CVS under - <TT -CLASS="FILENAME" ->doc/webserver/*</TT ->. And PDF version are kept in - <TT -CLASS="FILENAME" ->doc/pdf/*</TT ->. - </P -><P -> Formal documents are built with the Makefile targets of - <SAMP -CLASS="COMPUTEROUTPUT" ->make dok</SAMP ->, or alternately - <SAMP -CLASS="COMPUTEROUTPUT" ->make redhat-dok</SAMP ->. If you have problems, - try both. The build process uses the document SGML sources in - <SAMP -CLASS="COMPUTEROUTPUT" ->doc/source/*/*</SAMP -> to update all text files in - <SAMP -CLASS="COMPUTEROUTPUT" ->doc/text/</SAMP -> and to update all HTML - documents in <SAMP -CLASS="COMPUTEROUTPUT" ->doc/webserver/</SAMP ->. - </P -><P -> Documentation writers should please make sure documents build - successfully before committing to CVS, if possible. - </P -><P -> How do you update the webserver (i.e. the pages on privoxy.org)? - - <P -></P -><OL -TYPE="1" -><LI -><P -> First, build the docs by running <SAMP -CLASS="COMPUTEROUTPUT" ->make - dok</SAMP -> (or alternately <SAMP -CLASS="COMPUTEROUTPUT" ->make - redhat-dok</SAMP ->). For PDF docs, do <SAMP -CLASS="COMPUTEROUTPUT" ->make - dok-pdf</SAMP ->. - </P -></LI -><LI -><P -> Run <SAMP -CLASS="COMPUTEROUTPUT" ->make webserver</SAMP -> which copies all - files from <SAMP -CLASS="COMPUTEROUTPUT" ->doc/webserver</SAMP -> to the - sourceforge webserver via scp. - </P -></LI -></OL -> - </P -><P -> Finished docs should be occasionally submitted to CVS - (<TT -CLASS="FILENAME" ->doc/webserver/*/*.html</TT ->) so that those without - the ability to build them locally, have access to them if needed. - This is especially important just prior to a new release! Please - do this <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->after</I -></SPAN -> the <TT -CLASS="LITERAL" ->$VERSION</TT -> and - other release specific data in <TT -CLASS="FILENAME" ->configure.in</TT -> has been - updated (this is done just prior to a new release). - </P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="SGML" ->3.1. Quickstart to Docbook and SGML</A -></H2 -><P -> If you are not familiar with SGML, it is a markup language similar to HTML. - Actually, not a mark up language per se, but a language used to define - markup languages. In fact, HTML is an SGML application. Both will use - <SPAN -CLASS="QUOTE" ->"tags"</SPAN -> to format text and other content. SGML tags can be much - more varied, and flexible, but do much of the same kinds of things. The tags, - or <SPAN -CLASS="QUOTE" ->"elements"</SPAN ->, are definable in SGML. There is no set - <SPAN -CLASS="QUOTE" ->"standards"</SPAN ->. Since we are using - <SPAN -CLASS="APPLICATION" ->Docbook</SPAN ->, our tags are those that are defined by - <SPAN -CLASS="APPLICATION" ->Docbook</SPAN ->. Much of how the finish document is - rendered is determined by the <SPAN -CLASS="QUOTE" ->"stylesheets"</SPAN ->. - The stylesheets determine how each tag gets translated to HTML, or other - formats.</P -><P -> Tags in Docbook SGML need to be always <SPAN -CLASS="QUOTE" ->"closed"</SPAN ->. If not, you - will likely generate errors. Example: <TT -CLASS="LITERAL" -><title>My - Title</title></TT ->. They are also case-insensitive, but we - strongly suggest using all lower case. This keeps compatibility with - [Docbook] <SPAN -CLASS="APPLICATION" ->XML</SPAN ->.</P -><P -> Our documents use <SPAN -CLASS="QUOTE" ->"sections"</SPAN -> for the most part. Sections - will be processed into HTML headers (e.g. <TT -CLASS="LITERAL" ->h1</TT -> for - <TT -CLASS="LITERAL" ->sect1</TT ->). The <SPAN -CLASS="APPLICATION" ->Docbook</SPAN -> stylesheets - will use these to also generate the Table of Contents for each doc. Our - TOC's are set to a depth of three. Meaning <TT -CLASS="LITERAL" ->sect1</TT ->, - <TT -CLASS="LITERAL" ->sect2</TT ->, and <TT -CLASS="LITERAL" ->sect3</TT -> will have TOC - entries, but <TT -CLASS="LITERAL" ->sect4</TT -> will not. Each section requires - a <TT -CLASS="LITERAL" -><title></TT -> element, and at least one - <TT -CLASS="LITERAL" -><para></TT ->. There is a limit of five section - levels in Docbook, but generally three should be sufficient for our - purposes.</P -><P -> Some common elements that you likely will use: </P -><P -> <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><para></para></I -></SPAN ->, paragraph delimiter. Most - text needs to be within paragraph elements (there are some exceptions). - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><emphasis></emphasis></I -></SPAN ->, the stylesheets - make this italics. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><filename></filename></I -></SPAN ->, files and directories. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><command></command></I -></SPAN ->, command examples. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><literallayout></literallayout></I -></SPAN ->, like - <TT -CLASS="LITERAL" -><pre></TT ->, more or less. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><itemizedlist></itemizedlist></I -></SPAN ->, list with bullets. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><listitem></listitem></I -></SPAN ->, member of the above. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><screen></screen></I -></SPAN ->, screen output, implies - <TT -CLASS="LITERAL" -><literallayout></TT ->. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><ulink url="example.com"></ulink></I -></SPAN ->, like - HTML <TT -CLASS="LITERAL" -><a></TT -> tag. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><quote></quote></I -></SPAN ->, for, doh, quoting text. - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -> Look at any of the existing docs for examples of all these and more.</P -><P -> You might also find <SPAN -CLASS="QUOTE" ->"<A -HREF="http://opensource.bureau-cornavin.com/crash-course/index.html" -TARGET="_top" ->Writing Documentation - Using DocBook - A Crash Course</A ->"</SPAN -> useful.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="DOCSTYLE" ->3.2. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> Documentation Style</A -></H2 -><P -> It will be easier if everyone follows a similar writing style. This - just makes it easier to read what someone else has written if it - is all done in a similar fashion. - </P -><P -> Here it is: - </P -><P -> <P -></P -><UL -><LI -><P -> All tags should be lower case. - </P -></LI -><LI -><P -> Tags delimiting a <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->block</I -></SPAN -> of text (even small - blocks) should be on their own line. Like: - <P -CLASS="LITERALLAYOUT" -> <para><br> - Some text goes here.<br> - </para><br> - </P -> - Tags marking individual words, or few words, should be in-line: - <P -CLASS="LITERALLAYOUT" -> Just to <emphasis>emphasize</emphasis>, some text goes here.<br> - </P -> - </P -></LI -><LI -><P -> Tags should be nested and step indented for block text like: (except - in-line tags) - <P -CLASS="LITERALLAYOUT" -> <para><br> - <itemizedlist><br> - <para><br> - <listitem><br> - Some text goes here in our list example.<br> - </listitem><br> - </para><br> - </itemizedlist><br> - </para><br> - </P -> - This makes it easier to find the text amongst the tags ;-) - </P -></LI -><LI -><P -> Use white space to separate logical divisions within a document, - like between sections. Running everything together consistently - makes it harder to read and work on. - </P -></LI -><LI -><P -> Do not hesitate to make comments. Comments can either use the - <comment> element, or the <!-- --> style comment - familiar from HTML. (Note in Docbook v4.x <comment> is - replaced by <remark>.) - </P -></LI -><LI -><P -> We have an international audience. Refrain from slang, or English - idiosyncrasies (too many to list :). Humor also does not translate - well sometimes. - </P -></LI -><LI -><P -> Try to keep overall line lengths in source files to 80 characters or less - for obvious reasons. This is not always possible, with lengthy URLs for - instance. - </P -></LI -><LI -><P -> Our documents are available in differing formats. Right now, they - are just plain text, HTML, and PDF, but others are always a - future possibility. Be careful with URLs (<ulink>), and avoid - this mistake: - </P -><P -> My favorite site is <ulink url="http://example.com">here</ulink>. - </P -><P -> This will render as <SPAN -CLASS="QUOTE" ->"My favorite site is here"</SPAN ->, which is - not real helpful in a text doc. Better like this: - </P -><P -> My favorite site is <ulink url="http://example.com">example.com</ulink>. - </P -></LI -><LI -><P -> All documents should be spell checked occasionally. - <SPAN -CLASS="APPLICATION" ->aspell</SPAN -> can check SGML with the - <TT -CLASS="LITERAL" ->-H</TT -> option. (<SPAN -CLASS="APPLICATION" ->ispell</SPAN -> I think - too.) - </P -></LI -></UL -> - </P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN217" ->3.3. Privoxy Custom Entities</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> documentation is using - a number of customized <SPAN -CLASS="QUOTE" ->"entities"</SPAN -> to facilitate - documentation maintenance. - </P -><P -> We are using a set of <SPAN -CLASS="QUOTE" ->"boilerplate"</SPAN -> files with generic text, - that is used by multiple docs. This way we can write something once, and use - it repeatedly without having to re-write the same content over and over again. - If editing such a file, keep in mind that it should be - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->generic</I -></SPAN ->. That is the purpose; so it can be used in varying - contexts without additional modifications. - </P -><P -> We are also using what <SPAN -CLASS="APPLICATION" ->Docbook</SPAN -> calls - <SPAN -CLASS="QUOTE" ->"internal entities"</SPAN ->. These are like variables in - programming. Well, sort of. For instance, we have the - <TT -CLASS="LITERAL" ->p-version</TT -> entity that contains the current - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version string. You are strongly - encouraged to use these where possible. Some of these obviously - require re-setting with each release (done by the Makefile). A sampling of - custom entities are listed below. See any of the main docs for examples. - </P -><P -> <P -></P -><UL -><LI -><P -> Re- <SPAN -CLASS="QUOTE" ->"boilerplate"</SPAN -> text entities are defined like: - </P -><P -> <TT -CLASS="LITERAL" -><!entity supported SYSTEM "supported.sgml"></TT -> - </P -><P -> In this example, the contents of the file, - <TT -CLASS="FILENAME" ->supported.sgml</TT -> is available for inclusion anywhere - in the doc. To make this happen, just reference the now defined - entity: <TT -CLASS="LITERAL" ->&supported;</TT -> (starts with an ampersand - and ends with a semi-colon), and the contents will be dumped into - the finished doc at that point. - </P -></LI -><LI -><P -> Commonly used <SPAN -CLASS="QUOTE" ->"internal entities"</SPAN ->: - </P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->p-version</I -></SPAN ->: the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - version string, e.g. <SPAN -CLASS="QUOTE" ->"3.0.18"</SPAN ->. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->p-status</I -></SPAN ->: the project status, either - <SPAN -CLASS="QUOTE" ->"alpha"</SPAN ->, <SPAN -CLASS="QUOTE" ->"beta"</SPAN ->, or <SPAN -CLASS="QUOTE" ->"stable"</SPAN ->. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->p-not-stable</I -></SPAN ->: use to conditionally include - text in <SPAN -CLASS="QUOTE" ->"not stable"</SPAN -> releases (e.g. <SPAN -CLASS="QUOTE" ->"beta"</SPAN ->). - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->p-stable</I -></SPAN ->: just the opposite. - </TD -></TR -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->p-text</I -></SPAN ->: this doc is only generated as text. - </TD -></TR -></TBODY -></TABLE -><P -></P -></LI -></UL -> - </P -><P -> There are others in various places that are defined for a specific - purpose. Read the source! - </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="cvs.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="coding.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->The CVS Repository</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Coding Guidelines</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Documentation Guidelines + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="The CVS Repository" href="cvs.html"> + <link rel="NEXT" title="Coding Guidelines" href="coding.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="cvs.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="coding.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="DOCUMENTATION">3. Documentation Guidelines</a> + </h1> + <p> + All formal documents are maintained in Docbook SGML and located in + the <samp class="COMPUTEROUTPUT">doc/source/*</samp> directory. You + will need <a href="http://www.docbook.org" target="_top">Docbook</a>, + the Docbook DTD's and the Docbook modular stylesheets (or comparable + alternatives), and either <span class="APPLICATION">jade</span> or + <span class="APPLICATION">openjade</span> (recommended) installed in + order to build docs from source. Currently there is <a href= + "../user-manual/index.html" target="_top"><i class= + "CITETITLE">user-manual</i></a>, <a href="../faq/index.html" target= + "_top"><i class="CITETITLE">FAQ</i></a>, and, of course this, the <i + class="CITETITLE">developer-manual</i> in this format. The <i class= + "CITETITLE">README</i>, <i class="CITETITLE">AUTHORS</i>, <i class= + "CITETITLE">INSTALL</i>, <i class="CITETITLE">privoxy.1</i> (man + page), and <i class="CITETITLE">config</i> files are also now + maintained as Docbook SGML. These files, when built, in the top-level + source directory are generated files! Also, the <span class= + "APPLICATION">Privoxy</span> <tt class="FILENAME">index.html</tt> + (and a variation on this file, <tt class= + "FILENAME">privoxy-index.html</tt>, meant for inclusion with doc + packages), are maintained as SGML as well. <span class="emphasis"><i + class="EMPHASIS">DO NOT edit these directly</i></span>. Edit the SGML + source, or contact someone involved in the documentation. + </p> + <p> + <tt class="FILENAME">config</tt> requires some special handling. The + reason it is maintained this way is so that the extensive comments in + the file mirror those in <i class="CITETITLE">user-manual</i>. But + the conversion process requires going from SGML to HTML to text to + special formatting required for the embedded comments. Some of this + does not survive so well. Especially some of the examples that are + longer than 80 characters. The build process for this file outputs to + <tt class="FILENAME">config.new</tt>, which should be reviewed for + errors and mis-formatting. Once satisfied that it is correct, then it + should be hand copied to <tt class="FILENAME">config</tt>. + </p> + <p> + Other, less formal documents (e.g. <tt class="FILENAME">LICENSE</tt>) + are maintained as plain text files in the top-level source directory. + </p> + <p> + Packagers are encouraged to include this documentation. For those + without the ability to build the docs locally, text versions of each + are kept in CVS. HTML versions are also being kept in CVS under <tt + class="FILENAME">doc/webserver/*</tt>. And PDF version are kept in + <tt class="FILENAME">doc/pdf/*</tt>. + </p> + <p> + Formal documents are built with the Makefile targets of <samp class= + "COMPUTEROUTPUT">make dok</samp>, or alternately <samp class= + "COMPUTEROUTPUT">make redhat-dok</samp>. If you have problems, try + both. The build process uses the document SGML sources in <samp + class="COMPUTEROUTPUT">doc/source/*/*</samp> to update all text files + in <samp class="COMPUTEROUTPUT">doc/text/</samp> and to update all + HTML documents in <samp class="COMPUTEROUTPUT">doc/webserver/</samp>. + </p> + <p> + Documentation writers should please make sure documents build + successfully before committing to CVS, if possible. + </p> + <p> + How do you update the webserver (i.e. the pages on privoxy.org)? + </p> + <ol type="1"> + <li> + <p> + First, build the docs by running <samp class= + "COMPUTEROUTPUT">make dok</samp> (or alternately <samp class= + "COMPUTEROUTPUT">make redhat-dok</samp>). For PDF docs, do <samp + class="COMPUTEROUTPUT">make dok-pdf</samp>. + </p> + </li> + <li> + <p> + Run <samp class="COMPUTEROUTPUT">make webserver</samp> which + copies all files from <samp class= + "COMPUTEROUTPUT">doc/webserver</samp> to the sourceforge + webserver via scp. + </p> + </li> + </ol> + + <p> + Finished docs should be occasionally submitted to CVS (<tt class= + "FILENAME">doc/webserver/*/*.html</tt>) so that those without the + ability to build them locally, have access to them if needed. This is + especially important just prior to a new release! Please do this + <span class="emphasis"><i class="EMPHASIS">after</i></span> the <tt + class="LITERAL">$VERSION</tt> and other release specific data in <tt + class="FILENAME">configure.in</tt> has been updated (this is done + just prior to a new release). + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="SGML">3.1. Quickstart to Docbook and SGML</a> + </h2> + <p> + If you are not familiar with SGML, it is a markup language similar + to HTML. Actually, not a mark up language per se, but a language + used to define markup languages. In fact, HTML is an SGML + application. Both will use <span class="QUOTE">"tags"</span> to + format text and other content. SGML tags can be much more varied, + and flexible, but do much of the same kinds of things. The tags, or + <span class="QUOTE">"elements"</span>, are definable in SGML. There + is no set <span class="QUOTE">"standards"</span>. Since we are + using <span class="APPLICATION">Docbook</span>, our tags are those + that are defined by <span class="APPLICATION">Docbook</span>. Much + of how the finish document is rendered is determined by the <span + class="QUOTE">"stylesheets"</span>. The stylesheets determine how + each tag gets translated to HTML, or other formats. + </p> + <p> + Tags in Docbook SGML need to be always <span class= + "QUOTE">"closed"</span>. If not, you will likely generate errors. + Example: <tt class="LITERAL"><title>My + Title</title></tt>. They are also case-insensitive, but we + strongly suggest using all lower case. This keeps compatibility + with [Docbook] <span class="APPLICATION">XML</span>. + </p> + <p> + Our documents use <span class="QUOTE">"sections"</span> for the + most part. Sections will be processed into HTML headers (e.g. <tt + class="LITERAL">h1</tt> for <tt class="LITERAL">sect1</tt>). The + <span class="APPLICATION">Docbook</span> stylesheets will use these + to also generate the Table of Contents for each doc. Our TOC's are + set to a depth of three. Meaning <tt class="LITERAL">sect1</tt>, + <tt class="LITERAL">sect2</tt>, and <tt class="LITERAL">sect3</tt> + will have TOC entries, but <tt class="LITERAL">sect4</tt> will not. + Each section requires a <tt class="LITERAL"><title></tt> + element, and at least one <tt class="LITERAL"><para></tt>. + There is a limit of five section levels in Docbook, but generally + three should be sufficient for our purposes. + </p> + <p> + Some common elements that you likely will use: + </p> + <p> + </p> + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><para></para></i></span>, paragraph + delimiter. Most text needs to be within paragraph elements + (there are some exceptions). + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><emphasis></emphasis></i></span>, the + stylesheets make this italics. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><filename></filename></i></span>, + files and directories. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><command></command></i></span>, + command examples. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><literallayout></literallayout></i></span>, + like <tt class="LITERAL"><pre></tt>, more or less. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><itemizedlist></itemizedlist></i></span>, + list with bullets. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><listitem></listitem></i></span>, + member of the above. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><screen></screen></i></span>, screen + output, implies <tt class= + "LITERAL"><literallayout></tt>. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS"><ulink + url="example.com"></ulink></i></span>, like HTML <tt + class="LITERAL"><a></tt> tag. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS"><quote></quote></i></span>, for, doh, + quoting text. + </td> + </tr> + </tbody> + </table> + + <p> + Look at any of the existing docs for examples of all these and + more. + </p> + <p> + You might also find <span class="QUOTE">"<a href= + "http://opensource.bureau-cornavin.com/crash-course/index.html" + target="_top">Writing Documentation Using DocBook - A Crash + Course</a>"</span> useful. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="DOCSTYLE">3.2. <span class="APPLICATION">Privoxy</span> + Documentation Style</a> + </h2> + <p> + It will be easier if everyone follows a similar writing style. This + just makes it easier to read what someone else has written if it is + all done in a similar fashion. + </p> + <p> + Here it is: + </p> + <p> + </p> + <ul> + <li> + <p> + All tags should be lower case. + </p> + </li> + <li> + <p> + Tags delimiting a <span class="emphasis"><i class= + "EMPHASIS">block</i></span> of text (even small blocks) should + be on their own line. Like: + </p> + <p class="LITERALLAYOUT"> + <para><br> + Some text goes here.<br> + </para><br> + + </p> + Tags marking individual words, or few words, should be in-line: + <p class="LITERALLAYOUT"> + Just to <emphasis>emphasize</emphasis>, some text goes here.<br> + + + </p> + </li> + <li> + <p> + Tags should be nested and step indented for block text like: + (except in-line tags) + </p> + <p class="LITERALLAYOUT"> + <para><br> + <itemizedlist><br> + <para><br> + <listitem><br> + Some text goes here in our list example.<br> + + </listitem><br> + </para><br> + </itemizedlist><br> + </para><br> + + </p> + This makes it easier to find the text amongst the tags ;-)<br> + </li> + <li> + <p> + Use white space to separate logical divisions within a + document, like between sections. Running everything together + consistently makes it harder to read and work on. + </p> + </li> + <li> + <p> + Do not hesitate to make comments. Comments can either use the + <comment> element, or the <!-- --> style comment + familiar from HTML. (Note in Docbook v4.x <comment> is + replaced by <remark>.) + </p> + </li> + <li> + <p> + We have an international audience. Refrain from slang, or + English idiosyncrasies (too many to list :). Humor also does + not translate well sometimes. + </p> + </li> + <li> + <p> + Try to keep overall line lengths in source files to 80 + characters or less for obvious reasons. This is not always + possible, with lengthy URLs for instance. + </p> + </li> + <li> + <p> + Our documents are available in differing formats. Right now, + they are just plain text, HTML, and PDF, but others are always + a future possibility. Be careful with URLs (<ulink>), and + avoid this mistake: + </p> + <p> + My favorite site is <ulink + url="http://example.com">here</ulink>. + </p> + <p> + This will render as <span class="QUOTE">"My favorite site is + here"</span>, which is not real helpful in a text doc. Better + like this: + </p> + <p> + My favorite site is <ulink + url="http://example.com">example.com</ulink>. + </p> + </li> + <li> + <p> + All documents should be spell checked occasionally. <span + class="APPLICATION">aspell</span> can check SGML with the <tt + class="LITERAL">-H</tt> option. (<span class= + "APPLICATION">ispell</span> I think too.) + </p> + </li> + </ul> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN217">3.3. Privoxy Custom Entities</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span> documentation is using a + number of customized <span class="QUOTE">"entities"</span> to + facilitate documentation maintenance. + </p> + <p> + We are using a set of <span class="QUOTE">"boilerplate"</span> + files with generic text, that is used by multiple docs. This way we + can write something once, and use it repeatedly without having to + re-write the same content over and over again. If editing such a + file, keep in mind that it should be <span class="emphasis"><i + class="EMPHASIS">generic</i></span>. That is the purpose; so it can + be used in varying contexts without additional modifications. + </p> + <p> + We are also using what <span class="APPLICATION">Docbook</span> + calls <span class="QUOTE">"internal entities"</span>. These are + like variables in programming. Well, sort of. For instance, we have + the <tt class="LITERAL">p-version</tt> entity that contains the + current <span class="APPLICATION">Privoxy</span> version string. + You are strongly encouraged to use these where possible. Some of + these obviously require re-setting with each release (done by the + Makefile). A sampling of custom entities are listed below. See any + of the main docs for examples. + </p> + <p> + </p> + <ul> + <li> + <p> + Re- <span class="QUOTE">"boilerplate"</span> text entities are + defined like: + </p> + <p> + <tt class="LITERAL"><!entity supported SYSTEM + "supported.sgml"></tt> + </p> + <p> + In this example, the contents of the file, <tt class= + "FILENAME">supported.sgml</tt> is available for inclusion + anywhere in the doc. To make this happen, just reference the + now defined entity: <tt class="LITERAL">&supported;</tt> + (starts with an ampersand and ends with a semi-colon), and the + contents will be dumped into the finished doc at that point. + </p> + </li> + <li> + <p> + Commonly used <span class="QUOTE">"internal entities"</span>: + </p> + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS">p-version</i></span>: the <span class= + "APPLICATION">Privoxy</span> version string, e.g. <span + class="QUOTE">"3.0.18"</span>. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS">p-status</i></span>: the project status, + either <span class="QUOTE">"alpha"</span>, <span class= + "QUOTE">"beta"</span>, or <span class= + "QUOTE">"stable"</span>. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS">p-not-stable</i></span>: use to conditionally + include text in <span class="QUOTE">"not stable"</span> + releases (e.g. <span class="QUOTE">"beta"</span>). + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS">p-stable</i></span>: just the opposite. + </td> + </tr> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS">p-text</i></span>: this doc is only generated + as text. + </td> + </tr> + </tbody> + </table> + </li> + </ul> + + <p> + There are others in various places that are defined for a specific + purpose. Read the source! + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="cvs.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="coding.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + The CVS Repository + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Coding Guidelines + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/index.html b/doc/webserver/developer-manual/index.html index 44b2d6ba..b3dc7337 100644 --- a/doc/webserver/developer-manual/index.html +++ b/doc/webserver/developer-manual/index.html @@ -1,688 +1,494 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy Developer Manual</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="NEXT" -TITLE="Introduction" -HREF="introduction.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="ARTICLE" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="ARTICLE" -><DIV -CLASS="TITLEPAGE" -><H1 -CLASS="TITLE" -><A -NAME="AEN2" ->Privoxy Developer Manual</A -></H1 -><P -CLASS="PUBDATE" -> <SUB -> - - <A -HREF="copyright.html" ->Copyright</A -> © 2001-2009 by - <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->Privoxy Developers</A -> - </SUB -> - <BR></P -><P -CLASS="PUBDATE" ->$Id: index.html,v 1.54 2010/11/13 12:50:18 fabiankeil Exp $<BR></P -><DIV -><DIV -CLASS="ABSTRACT" -><P -></P -><A -NAME="AEN9" -></A -><P -> The developer manual provides guidance on coding, testing, packaging, documentation - and other issues of importance to those involved with - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> development. It is mandatory (and helpful!) reading - for anyone who wants to join the team. Note that it's currently out of date - and may not be entirely correct. As always, patches are welcome.</P -><P -> Please note that this document is constantly evolving. This copy represents - the state at the release of version 3.0.18. - You can find the latest version of the this manual at <A -HREF="http://www.privoxy.org/developer-manual/" -TARGET="_top" ->http://www.privoxy.org/developer-manual/</A ->. - Please see <A -HREF="contact.html" ->the Contact section</A -> - on how to contact the developers.</P -><P -></P -></DIV -></DIV -><HR></DIV -><DIV -CLASS="TOC" -><DL -><DT -><B ->Table of Contents</B -></DT -><DT ->1. <A -HREF="introduction.html" ->Introduction</A -></DT -><DD -><DL -><DT ->1.1. <A -HREF="introduction.html#QUICKSTART" ->Quickstart to Privoxy Development</A -></DT -></DL -></DD -><DT ->2. <A -HREF="cvs.html" ->The CVS Repository</A -></DT -><DD -><DL -><DT ->2.1. <A -HREF="cvs.html#CVSACCESS" ->Access to CVS</A -></DT -><DT ->2.2. <A -HREF="cvs.html#CVSBRANCHES" ->Branches</A -></DT -><DT ->2.3. <A -HREF="cvs.html#CVSCOMMIT" ->CVS Commit Guidelines</A -></DT -></DL -></DD -><DT ->3. <A -HREF="documentation.html" ->Documentation Guidelines</A -></DT -><DD -><DL -><DT ->3.1. <A -HREF="documentation.html#SGML" ->Quickstart to Docbook and SGML</A -></DT -><DT ->3.2. <A -HREF="documentation.html#DOCSTYLE" -><SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> Documentation Style</A -></DT -><DT ->3.3. <A -HREF="documentation.html#AEN217" ->Privoxy Custom Entities</A -></DT -></DL -></DD -><DT ->4. <A -HREF="coding.html" ->Coding Guidelines</A -></DT -><DD -><DL -><DT ->4.1. <A -HREF="coding.html#S1" ->Introduction</A -></DT -><DT ->4.2. <A -HREF="coding.html#S2" ->Using Comments</A -></DT -><DD -><DL -><DT ->4.2.1. <A -HREF="coding.html#S3" ->Comment, Comment, Comment</A -></DT -><DT ->4.2.2. <A -HREF="coding.html#S4" ->Use blocks for comments</A -></DT -><DT ->4.2.3. <A -HREF="coding.html#S5" ->Keep Comments on their own line</A -></DT -><DT ->4.2.4. <A -HREF="coding.html#S6" ->Comment each logical step</A -></DT -><DT ->4.2.5. <A -HREF="coding.html#S7" ->Comment All Functions Thoroughly</A -></DT -><DT ->4.2.6. <A -HREF="coding.html#S8" ->Comment at the end of braces if the - content is more than one screen length</A -></DT -></DL -></DD -><DT ->4.3. <A -HREF="coding.html#S9" ->Naming Conventions</A -></DT -><DD -><DL -><DT ->4.3.1. <A -HREF="coding.html#S10" ->Variable Names</A -></DT -><DT ->4.3.2. <A -HREF="coding.html#S11" ->Function Names</A -></DT -><DT ->4.3.3. <A -HREF="coding.html#S12" ->Header file prototypes</A -></DT -><DT ->4.3.4. <A -HREF="coding.html#S13" ->Enumerations, and #defines</A -></DT -><DT ->4.3.5. <A -HREF="coding.html#S14" ->Constants</A -></DT -></DL -></DD -><DT ->4.4. <A -HREF="coding.html#S15" ->Using Space</A -></DT -><DD -><DL -><DT ->4.4.1. <A -HREF="coding.html#S16" ->Put braces on a line by themselves.</A -></DT -><DT ->4.4.2. <A -HREF="coding.html#S17" ->ALL control statements should have a - block</A -></DT -><DT ->4.4.3. <A -HREF="coding.html#S18" ->Do not belabor/blow-up boolean - expressions</A -></DT -><DT ->4.4.4. <A -HREF="coding.html#S19" ->Use white space freely because it is - free</A -></DT -><DT ->4.4.5. <A -HREF="coding.html#S20" ->Don't use white space around structure - operators</A -></DT -><DT ->4.4.6. <A -HREF="coding.html#S21" ->Make the last brace of a function stand - out</A -></DT -><DT ->4.4.7. <A -HREF="coding.html#S22" ->Use 3 character indentions</A -></DT -></DL -></DD -><DT ->4.5. <A -HREF="coding.html#S23" ->Initializing</A -></DT -><DD -><DL -><DT ->4.5.1. <A -HREF="coding.html#S24" ->Initialize all variables</A -></DT -></DL -></DD -><DT ->4.6. <A -HREF="coding.html#S25" ->Functions</A -></DT -><DD -><DL -><DT ->4.6.1. <A -HREF="coding.html#S26" ->Name functions that return a boolean as a - question.</A -></DT -><DT ->4.6.2. <A -HREF="coding.html#S27" ->Always specify a return type for a - function.</A -></DT -><DT ->4.6.3. <A -HREF="coding.html#S28" ->Minimize function calls when iterating by - using variables</A -></DT -><DT ->4.6.4. <A -HREF="coding.html#S29" ->Pass and Return by Const Reference</A -></DT -><DT ->4.6.5. <A -HREF="coding.html#S30" ->Pass and Return by Value</A -></DT -><DT ->4.6.6. <A -HREF="coding.html#S31" ->Names of include files</A -></DT -><DT ->4.6.7. <A -HREF="coding.html#S32" ->Provide multiple inclusion - protection</A -></DT -><DT ->4.6.8. <A -HREF="coding.html#S33" ->Use `extern "C"` when appropriate</A -></DT -><DT ->4.6.9. <A -HREF="coding.html#S34" ->Where Possible, Use Forward Struct - Declaration Instead of Includes</A -></DT -></DL -></DD -><DT ->4.7. <A -HREF="coding.html#S35" ->General Coding Practices</A -></DT -><DD -><DL -><DT ->4.7.1. <A -HREF="coding.html#S36" ->Turn on warnings</A -></DT -><DT ->4.7.2. <A -HREF="coding.html#S37" ->Provide a default case for all switch - statements</A -></DT -><DT ->4.7.3. <A -HREF="coding.html#S38" ->Try to avoid falling through cases in a - switch statement.</A -></DT -><DT ->4.7.4. <A -HREF="coding.html#S39" ->Use 'long' or 'short' Instead of - 'int'</A -></DT -><DT ->4.7.5. <A -HREF="coding.html#S40" ->Don't mix size_t and other types</A -></DT -><DT ->4.7.6. <A -HREF="coding.html#S41" ->Declare each variable and struct on its - own line.</A -></DT -><DT ->4.7.7. <A -HREF="coding.html#S42" ->Use malloc/zalloc sparingly</A -></DT -><DT ->4.7.8. <A -HREF="coding.html#S43" ->The Programmer Who Uses 'malloc' is - Responsible for Ensuring 'free'</A -></DT -><DT ->4.7.9. <A -HREF="coding.html#S44" ->Add loaders to the `file_list' structure - and in order</A -></DT -><DT ->4.7.10. <A -HREF="coding.html#S45" ->"Uncertain" new code and/or changes to - existing code, use FIXME or XXX</A -></DT -></DL -></DD -><DT ->4.8. <A -HREF="coding.html#S46" ->Addendum: Template for files and function - comment blocks:</A -></DT -></DL -></DD -><DT ->5. <A -HREF="testing.html" ->Testing Guidelines</A -></DT -><DD -><DL -><DT ->5.1. <A -HREF="testing.html#TESTING-PLAN" ->Testplan for releases</A -></DT -><DT ->5.2. <A -HREF="testing.html#TESTING-REPORT" ->Test reports</A -></DT -></DL -></DD -><DT ->6. <A -HREF="newrelease.html" ->Releasing a New Version</A -></DT -><DD -><DL -><DT ->6.1. <A -HREF="newrelease.html#VERSIONNUMBERS" ->Version numbers</A -></DT -><DT ->6.2. <A -HREF="newrelease.html#BEFORERELEASE" ->Before the Release: Freeze</A -></DT -><DT ->6.3. <A -HREF="newrelease.html#THERELEASE" ->Building and Releasing the Packages</A -></DT -><DD -><DL -><DT ->6.3.1. <A -HREF="newrelease.html#PACK-GUIDELINES" ->Note on Privoxy Packaging</A -></DT -><DT ->6.3.2. <A -HREF="newrelease.html#NEWRELEASE-TARBALL" ->Source Tarball</A -></DT -><DT ->6.3.3. <A -HREF="newrelease.html#NEWRELEASE-RPM" ->SuSE, Conectiva or Red Hat RPM</A -></DT -><DT ->6.3.4. <A -HREF="newrelease.html#NEWRELEASE-OS2" ->OS/2</A -></DT -><DT ->6.3.5. <A -HREF="newrelease.html#NEWRELEASE-SOLARIS" ->Solaris</A -></DT -><DT ->6.3.6. <A -HREF="newrelease.html#NEWRELEASE-WINDOWS" ->Windows</A -></DT -><DT ->6.3.7. <A -HREF="newrelease.html#NEWRELEASE-DEBIAN" ->Debian</A -></DT -><DT ->6.3.8. <A -HREF="newrelease.html#NEWRELEASE-MACOSX" ->Mac OS X</A -></DT -><DT ->6.3.9. <A -HREF="newrelease.html#NEWRELEASE-FREEBSD" ->FreeBSD</A -></DT -><DT ->6.3.10. <A -HREF="newrelease.html#NEWRELEASE-HPUX" ->HP-UX 11</A -></DT -><DT ->6.3.11. <A -HREF="newrelease.html#NEWRELEASE-AMIGA" ->Amiga OS</A -></DT -><DT ->6.3.12. <A -HREF="newrelease.html#NEWRELEASE-AIX" ->AIX</A -></DT -></DL -></DD -><DT ->6.4. <A -HREF="newrelease.html#RELEASING" ->Uploading and Releasing Your Package</A -></DT -><DT ->6.5. <A -HREF="newrelease.html#AFTERRELEASE" ->After the Release</A -></DT -></DL -></DD -><DT ->7. <A -HREF="webserver-update.html" ->Update the Webserver</A -></DT -><DT ->8. <A -HREF="contact.html" ->Contacting the developers, Bug Reporting and Feature Requests</A -></DT -><DD -><DL -><DT ->8.1. <A -HREF="contact.html#CONTACT-SUPPORT" ->Get Support</A -></DT -><DT ->8.2. <A -HREF="contact.html#REPORTING" ->Reporting Problems</A -></DT -><DD -><DL -><DT ->8.2.1. <A -HREF="contact.html#CONTACT-ADS" ->Reporting Ads or Other Configuration Problems</A -></DT -><DT ->8.2.2. <A -HREF="contact.html#CONTACT-BUGS" ->Reporting Bugs</A -></DT -></DL -></DD -><DT ->8.3. <A -HREF="contact.html#CONTACT-FEATURE" ->Request New Features</A -></DT -><DT ->8.4. <A -HREF="contact.html#MAILING-LISTS" ->Mailing Lists</A -></DT -></DL -></DD -><DT ->9. <A -HREF="copyright.html" ->Privoxy Copyright, License and History</A -></DT -><DD -><DL -><DT ->9.1. <A -HREF="copyright.html#AEN1229" ->License</A -></DT -><DT ->9.2. <A -HREF="copyright.html#AEN1245" ->History</A -></DT -></DL -></DD -><DT ->10. <A -HREF="seealso.html" ->See also</A -></DT -></DL -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -> </TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="introduction.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -> </TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Introduction</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy Developer Manual + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="NEXT" title="Introduction" href="introduction.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c2 {text-align: left} + dt.c1 {font-weight: bold} +</style> + </head> + <body class="ARTICLE"> + <div class="ARTICLE"> + <div class="TITLEPAGE"> + <h1 class="TITLE"> + <a name="AEN2">Privoxy Developer Manual</a> + </h1> + <p class="PUBDATE"> + <sub><a href="copyright.html">Copyright</a> © 2001-2009 by <a + href="http://www.privoxy.org/" target="_top">Privoxy + Developers</a></sub><br> + </p> + <p class="PUBDATE"> + $Id: index.html,v 1.55 2011/08/17 10:37:48 fabiankeil Exp $<br> + </p> + <div> + <a name="AEN9"></a> + <p> + The developer manual provides guidance on coding, testing, + packaging, documentation and other issues of importance to those + involved with <span class="APPLICATION">Privoxy</span> + development. It is mandatory (and helpful!) reading for anyone + who wants to join the team. Note that it's currently out of date + and may not be entirely correct. As always, patches are welcome. + </p> + <p> + Please note that this document is constantly evolving. This copy + represents the state at the release of version 3.0.18. You can + find the latest version of the this manual at <a href= + "http://www.privoxy.org/developer-manual/" target= + "_top">http://www.privoxy.org/developer-manual/</a>. Please see + <a href="contact.html">the Contact section</a> on how to contact + the developers. + </p> + </div> + <hr> + </div> + <div class="TOC"> + <dl> + <dt class="c1"> + Table of Contents + </dt> + <dt> + 1. <a href="introduction.html">Introduction</a> + </dt> + <dd> + <dl> + <dt> + 1.1. <a href="introduction.html#QUICKSTART">Quickstart to + Privoxy Development</a> + </dt> + </dl> + </dd> + <dt> + 2. <a href="cvs.html">The CVS Repository</a> + </dt> + <dd> + <dl> + <dt> + 2.1. <a href="cvs.html#CVSACCESS">Access to CVS</a> + </dt> + <dt> + 2.2. <a href="cvs.html#CVSBRANCHES">Branches</a> + </dt> + <dt> + 2.3. <a href="cvs.html#CVSCOMMIT">CVS Commit Guidelines</a> + </dt> + </dl> + </dd> + <dt> + 3. <a href="documentation.html">Documentation Guidelines</a> + </dt> + <dd> + <dl> + <dt> + 3.1. <a href="documentation.html#SGML">Quickstart to Docbook + and SGML</a> + </dt> + <dt> + 3.2. <a href="documentation.html#DOCSTYLE"><span class= + "APPLICATION">Privoxy</span> Documentation Style</a> + </dt> + <dt> + 3.3. <a href="documentation.html#AEN217">Privoxy Custom + Entities</a> + </dt> + </dl> + </dd> + <dt> + 4. <a href="coding.html">Coding Guidelines</a> + </dt> + <dd> + <dl> + <dt> + 4.1. <a href="coding.html#S1">Introduction</a> + </dt> + <dt> + 4.2. <a href="coding.html#S2">Using Comments</a> + </dt> + <dd> + <dl> + <dt> + 4.2.1. <a href="coding.html#S3">Comment, Comment, + Comment</a> + </dt> + <dt> + 4.2.2. <a href="coding.html#S4">Use blocks for + comments</a> + </dt> + <dt> + 4.2.3. <a href="coding.html#S5">Keep Comments on their + own line</a> + </dt> + <dt> + 4.2.4. <a href="coding.html#S6">Comment each logical + step</a> + </dt> + <dt> + 4.2.5. <a href="coding.html#S7">Comment All Functions + Thoroughly</a> + </dt> + <dt> + 4.2.6. <a href="coding.html#S8">Comment at the end of + braces if the content is more than one screen length</a> + </dt> + </dl> + </dd> + <dt> + 4.3. <a href="coding.html#S9">Naming Conventions</a> + </dt> + <dd> + <dl> + <dt> + 4.3.1. <a href="coding.html#S10">Variable Names</a> + </dt> + <dt> + 4.3.2. <a href="coding.html#S11">Function Names</a> + </dt> + <dt> + 4.3.3. <a href="coding.html#S12">Header file + prototypes</a> + </dt> + <dt> + 4.3.4. <a href="coding.html#S13">Enumerations, and + #defines</a> + </dt> + <dt> + 4.3.5. <a href="coding.html#S14">Constants</a> + </dt> + </dl> + </dd> + <dt> + 4.4. <a href="coding.html#S15">Using Space</a> + </dt> + <dd> + <dl> + <dt> + 4.4.1. <a href="coding.html#S16">Put braces on a line by + themselves.</a> + </dt> + <dt> + 4.4.2. <a href="coding.html#S17">ALL control statements + should have a block</a> + </dt> + <dt> + 4.4.3. <a href="coding.html#S18">Do not belabor/blow-up + boolean expressions</a> + </dt> + <dt> + 4.4.4. <a href="coding.html#S19">Use white space freely + because it is free</a> + </dt> + <dt> + 4.4.5. <a href="coding.html#S20">Don't use white space + around structure operators</a> + </dt> + <dt> + 4.4.6. <a href="coding.html#S21">Make the last brace of a + function stand out</a> + </dt> + <dt> + 4.4.7. <a href="coding.html#S22">Use 3 character + indentions</a> + </dt> + </dl> + </dd> + <dt> + 4.5. <a href="coding.html#S23">Initializing</a> + </dt> + <dd> + <dl> + <dt> + 4.5.1. <a href="coding.html#S24">Initialize all + variables</a> + </dt> + </dl> + </dd> + <dt> + 4.6. <a href="coding.html#S25">Functions</a> + </dt> + <dd> + <dl> + <dt> + 4.6.1. <a href="coding.html#S26">Name functions that + return a boolean as a question.</a> + </dt> + <dt> + 4.6.2. <a href="coding.html#S27">Always specify a return + type for a function.</a> + </dt> + <dt> + 4.6.3. <a href="coding.html#S28">Minimize function calls + when iterating by using variables</a> + </dt> + <dt> + 4.6.4. <a href="coding.html#S29">Pass and Return by Const + Reference</a> + </dt> + <dt> + 4.6.5. <a href="coding.html#S30">Pass and Return by + Value</a> + </dt> + <dt> + 4.6.6. <a href="coding.html#S31">Names of include + files</a> + </dt> + <dt> + 4.6.7. <a href="coding.html#S32">Provide multiple + inclusion protection</a> + </dt> + <dt> + 4.6.8. <a href="coding.html#S33">Use `extern "C"` when + appropriate</a> + </dt> + <dt> + 4.6.9. <a href="coding.html#S34">Where Possible, Use + Forward Struct Declaration Instead of Includes</a> + </dt> + </dl> + </dd> + <dt> + 4.7. <a href="coding.html#S35">General Coding Practices</a> + </dt> + <dd> + <dl> + <dt> + 4.7.1. <a href="coding.html#S36">Turn on warnings</a> + </dt> + <dt> + 4.7.2. <a href="coding.html#S37">Provide a default case + for all switch statements</a> + </dt> + <dt> + 4.7.3. <a href="coding.html#S38">Try to avoid falling + through cases in a switch statement.</a> + </dt> + <dt> + 4.7.4. <a href="coding.html#S39">Use 'long' or 'short' + Instead of 'int'</a> + </dt> + <dt> + 4.7.5. <a href="coding.html#S40">Don't mix size_t and + other types</a> + </dt> + <dt> + 4.7.6. <a href="coding.html#S41">Declare each variable + and struct on its own line.</a> + </dt> + <dt> + 4.7.7. <a href="coding.html#S42">Use malloc/zalloc + sparingly</a> + </dt> + <dt> + 4.7.8. <a href="coding.html#S43">The Programmer Who Uses + 'malloc' is Responsible for Ensuring 'free'</a> + </dt> + <dt> + 4.7.9. <a href="coding.html#S44">Add loaders to the + `file_list' structure and in order</a> + </dt> + <dt> + 4.7.10. <a href="coding.html#S45">"Uncertain" new code + and/or changes to existing code, use FIXME or XXX</a> + </dt> + </dl> + </dd> + <dt> + 4.8. <a href="coding.html#S46">Addendum: Template for files + and function comment blocks:</a> + </dt> + </dl> + </dd> + <dt> + 5. <a href="testing.html">Testing Guidelines</a> + </dt> + <dd> + <dl> + <dt> + 5.1. <a href="testing.html#TESTING-PLAN">Testplan for + releases</a> + </dt> + <dt> + 5.2. <a href="testing.html#TESTING-REPORT">Test reports</a> + </dt> + </dl> + </dd> + <dt> + 6. <a href="newrelease.html">Releasing a New Version</a> + </dt> + <dd> + <dl> + <dt> + 6.1. <a href="newrelease.html#VERSIONNUMBERS">Version + numbers</a> + </dt> + <dt> + 6.2. <a href="newrelease.html#BEFORERELEASE">Before the + Release: Freeze</a> + </dt> + <dt> + 6.3. <a href="newrelease.html#THERELEASE">Building and + Releasing the Packages</a> + </dt> + <dd> + <dl> + <dt> + 6.3.1. <a href="newrelease.html#PACK-GUIDELINES">Note on + Privoxy Packaging</a> + </dt> + <dt> + 6.3.2. <a href= + "newrelease.html#NEWRELEASE-TARBALL">Source Tarball</a> + </dt> + <dt> + 6.3.3. <a href="newrelease.html#NEWRELEASE-RPM">SuSE, + Conectiva or Red Hat RPM</a> + </dt> + <dt> + 6.3.4. <a href="newrelease.html#NEWRELEASE-OS2">OS/2</a> + </dt> + <dt> + 6.3.5. <a href= + "newrelease.html#NEWRELEASE-SOLARIS">Solaris</a> + </dt> + <dt> + 6.3.6. <a href= + "newrelease.html#NEWRELEASE-WINDOWS">Windows</a> + </dt> + <dt> + 6.3.7. <a href= + "newrelease.html#NEWRELEASE-DEBIAN">Debian</a> + </dt> + <dt> + 6.3.8. <a href="newrelease.html#NEWRELEASE-MACOSX">Mac OS + X</a> + </dt> + <dt> + 6.3.9. <a href= + "newrelease.html#NEWRELEASE-FREEBSD">FreeBSD</a> + </dt> + <dt> + 6.3.10. <a href="newrelease.html#NEWRELEASE-HPUX">HP-UX + 11</a> + </dt> + <dt> + 6.3.11. <a href="newrelease.html#NEWRELEASE-AMIGA">Amiga + OS</a> + </dt> + <dt> + 6.3.12. <a href="newrelease.html#NEWRELEASE-AIX">AIX</a> + </dt> + </dl> + </dd> + <dt> + 6.4. <a href="newrelease.html#RELEASING">Uploading and + Releasing Your Package</a> + </dt> + <dt> + 6.5. <a href="newrelease.html#AFTERRELEASE">After the + Release</a> + </dt> + </dl> + </dd> + <dt> + 7. <a href="webserver-update.html">Update the Webserver</a> + </dt> + <dt> + 8. <a href="contact.html">Contacting the developers, Bug + Reporting and Feature Requests</a> + </dt> + <dd> + <dl> + <dt> + 8.1. <a href="contact.html#CONTACT-SUPPORT">Get Support</a> + </dt> + <dt> + 8.2. <a href="contact.html#REPORTING">Reporting Problems</a> + </dt> + <dd> + <dl> + <dt> + 8.2.1. <a href="contact.html#CONTACT-ADS">Reporting Ads + or Other Configuration Problems</a> + </dt> + <dt> + 8.2.2. <a href="contact.html#CONTACT-BUGS">Reporting + Bugs</a> + </dt> + </dl> + </dd> + <dt> + 8.3. <a href="contact.html#CONTACT-FEATURE">Request New + Features</a> + </dt> + <dt> + 8.4. <a href="contact.html#MAILING-LISTS">Mailing Lists</a> + </dt> + </dl> + </dd> + <dt> + 9. <a href="copyright.html">Privoxy Copyright, License and + History</a> + </dt> + <dd> + <dl> + <dt> + 9.1. <a href="copyright.html#AEN1229">License</a> + </dt> + <dt> + 9.2. <a href="copyright.html#AEN1245">History</a> + </dt> + </dl> + </dd> + <dt> + 10. <a href="seealso.html">See also</a> + </dt> + </dl> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c2"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + <a href="introduction.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Introduction + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/introduction.html b/doc/webserver/developer-manual/introduction.html index 5ac1e59b..a47acf89 100644 --- a/doc/webserver/developer-manual/introduction.html +++ b/doc/webserver/developer-manual/introduction.html @@ -1,199 +1,123 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Introduction</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="NEXT" -TITLE="The CVS Repository" -HREF="cvs.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="index.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="cvs.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="INTRODUCTION" ->1. Introduction</A -></H1 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, as an heir to - <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN ->, is a Free Software project - and the code is licensed under the GNU General Public License version 2. - As such, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> development is potentially open - to anyone who has the time, knowledge, and desire to contribute - in any capacity. Our goals are simply to continue the mission, - to improve <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, and - to make it available to as wide an audience as possible. - </P -><P -> One does not have to be a programmer to contribute. Packaging, testing, - documenting and porting, are all important jobs as well. - </P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="QUICKSTART" ->1.1. Quickstart to Privoxy Development</A -></H2 -><P -> The first step is to join the <A -HREF="mailto:ijbswa-developers@lists.sourceforge.net" -TARGET="_top" ->developer's mailing list</A ->. - You can submit your ideas, or even better patches. Patches are best - submitted to the Sourceforge tracker set up for this purpose, but - can be sent to the list for review too. - </P -><P -> You will also need to have a cvs package installed, which will - entail having ssh installed as well (which seems to be a requirement of - SourceForge), in order to access the cvs repository. Having the GNU build - tools is also going to be important (particularly, autoconf and gmake). - </P -><P -> For the time being (read, this section is under construction), you can - also refer to the extensive comments in the source code. In fact, - reading the code is recommended in any case. - </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="cvs.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Privoxy Developer Manual</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->The CVS Repository</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Introduction + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="Privoxy Developer Manual" href="index.html"> + <link rel="NEXT" title="The CVS Repository" href="cvs.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="index.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="cvs.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="INTRODUCTION">1. Introduction</a> + </h1> + <p> + <span class="APPLICATION">Privoxy</span>, as an heir to <span class= + "APPLICATION">Junkbuster</span>, is a Free Software project and the + code is licensed under the GNU General Public License version 2. As + such, <span class="APPLICATION">Privoxy</span> development is + potentially open to anyone who has the time, knowledge, and desire to + contribute in any capacity. Our goals are simply to continue the + mission, to improve <span class="APPLICATION">Privoxy</span>, and to + make it available to as wide an audience as possible. + </p> + <p> + One does not have to be a programmer to contribute. Packaging, + testing, documenting and porting, are all important jobs as well. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="QUICKSTART">1.1. Quickstart to Privoxy Development</a> + </h2> + <p> + The first step is to join the <a href= + "mailto:ijbswa-developers@lists.sourceforge.net" target= + "_top">developer's mailing list</a>. You can submit your ideas, or + even better patches. Patches are best submitted to the Sourceforge + tracker set up for this purpose, but can be sent to the list for + review too. + </p> + <p> + You will also need to have a cvs package installed, which will + entail having ssh installed as well (which seems to be a + requirement of SourceForge), in order to access the cvs repository. + Having the GNU build tools is also going to be important + (particularly, autoconf and gmake). + </p> + <p> + For the time being (read, this section is under construction), you + can also refer to the extensive comments in the source code. In + fact, reading the code is recommended in any case. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="index.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="cvs.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Privoxy Developer Manual + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + The CVS Repository + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/newrelease.html b/doc/webserver/developer-manual/newrelease.html index fa80e1f4..7b01ecf5 100644 --- a/doc/webserver/developer-manual/newrelease.html +++ b/doc/webserver/developer-manual/newrelease.html @@ -1,1956 +1,1282 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Releasing a New Version</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Testing Guidelines" -HREF="testing.html"><LINK -REL="NEXT" -TITLE="Update the Webserver" -HREF="webserver-update.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="testing.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="webserver-update.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="NEWRELEASE" ->6. Releasing a New Version</A -></H1 -><P -> When we release versions of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Releasing a New Version + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="Testing Guidelines" href="testing.html"> + <link rel="NEXT" title="Update the Webserver" href= + "webserver-update.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="testing.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="webserver-update.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="NEWRELEASE">6. Releasing a New Version</a> + </h1> + <p> + When we release versions of <span class="APPLICATION">Privoxy</span>, our work leaves our cozy secret lab and has to work in the cold - RealWorld[tm]. Once it is released, there is no way to call it - back, so it is very important that great care is taken to ensure - that everything runs fine, and not to introduce problems in the - very last minute. - </P -><P -> So when releasing a new version, please adhere exactly to the + RealWorld[tm]. Once it is released, there is no way to call it back, + so it is very important that great care is taken to ensure that + everything runs fine, and not to introduce problems in the very last + minute. + </p> + <p> + So when releasing a new version, please adhere exactly to the procedure outlined in this chapter. - </P -><P -> The following programs are required to follow this process: - <TT -CLASS="FILENAME" ->ncftpput</TT -> (ncftp), <TT -CLASS="FILENAME" ->scp, ssh</TT -> (ssh), - <TT -CLASS="FILENAME" ->gmake</TT -> (GNU's version of make), autoconf, cvs. - </P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="VERSIONNUMBERS" ->6.1. Version numbers</A -></H2 -><P -> First you need to determine which version number the release will have. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version numbers consist of three numbers, - separated by dots, like in X.Y.Z (e.g. 3.0.0), where: - <P -></P -><UL -><LI -><P -> X, the version major, is rarely ever changed. It is increased by one if - turning a development branch into stable substantially changes the functionality, - user interface or configuration syntax. Majors 1 and 2 were - <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN ->, and 3 will be the first stable - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> release. - </P -></LI -><LI -><P -> Y, the version minor, represents the branch within the major version. - At any point in time, there are two branches being maintained: - The stable branch, with an even minor, say, 2N, in which no functionality is - being added and only bug-fixes are made, and 2N+1, the development branch, in - which the further development of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> takes - place. - This enables us to turn the code upside down and inside out, while at the same time - providing and maintaining a stable version. - The minor is reset to zero (and one) when the major is incremented. When a development - branch has matured to the point where it can be turned into stable, the old stable branch - 2N is given up (i.e. no longer maintained), the former development branch 2N+1 becomes the - new stable branch 2N+2, and a new development branch 2N+3 is opened. - </P -></LI -><LI -><P -> Z, the point or sub version, represents a release of the software within a branch. - It is therefore incremented immediately before each code freeze. - In development branches, only the even point versions correspond to actual releases, - while the odd ones denote the evolving state of the sources on CVS in between. - It follows that Z is odd on CVS in development branches most of the time. There, it gets - increased to an even number immediately before a code freeze, and is increased to an odd - number again immediately thereafter. - This ensures that builds from CVS snapshots are easily distinguished from released versions. - The point version is reset to zero when the minor changes. - </P -><P -> Stable branches work a little differently, since there should be - little to no development happening in such branches. Remember, - only bugfixes, which presumably should have had some testing - before being committed. Stable branches will then have their - version reported as <TT -CLASS="LITERAL" ->0.0.0</TT ->, during that period - between releases when changes are being added. This is to denote - that this code is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not for release</I -></SPAN ->. Then - as the release nears, the version is bumped according: e.g. - <TT -CLASS="LITERAL" ->3.0.1 -> 0.0.0 -> 3.0.2</TT ->. - </P -></LI -></UL -> - </P -><P -> In summary, the main CVS trunk is the development branch where new - features are being worked on for the next stable series. This should - almost always be where the most activity takes place. There is always at - least one stable branch from the trunk, e.g now it is - <TT -CLASS="LITERAL" ->3.0</TT ->, which is only used to release stable versions. - Once the initial *.0 release of the stable branch has been done, then as a - rule, only bugfixes that have had prior testing should be committed to - the stable branch. Once there are enough bugfixes to justify a new - release, the version of this branch is again incremented Example: 3.0.0 - -> 3.0.1 -> 3.0.2, etc are all stable releases from within the stable - branch. 3.1.x is currently the main trunk, and where work on 3.2.x is - taking place. If any questions, please post to the devel list - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->before</I -></SPAN -> committing to a stable branch! - </P -><P -> Developers should remember too that if they commit a bugfix to the stable - branch, this will more than likely require a separate submission to the - main trunk, since these are separate development trees within CVS. If you - are working on both, then this would require at least two separate check - outs (i.e main trunk, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->and</I -></SPAN -> the stable release branch, - which is <TT -CLASS="LITERAL" ->v_3_0_branch</TT -> at the moment). - </P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="BEFORERELEASE" ->6.2. Before the Release: Freeze</A -></H2 -><P -> The following <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->must be done by one of the - developers</I -></SPAN -> prior to each new release. - </P -><P -> <P -></P -><UL -><LI -><P -> Make sure that everybody who has worked on the code in the last - couple of days has had a chance to yell <SPAN -CLASS="QUOTE" ->"no!"</SPAN -> in case - they have pending changes/fixes in their pipelines. Announce the - freeze so that nobody will interfere with last minute changes. - </P -></LI -><LI -><P -> Increment the version number (point from odd to even in development - branches!) in <TT -CLASS="FILENAME" ->configure.in</TT ->. (RPM spec files - will need to be incremented as well.) - </P -></LI -><LI -><P -> If <TT -CLASS="FILENAME" ->default.action</TT -> has changed since last - release (i.e. software release or standalone actions file release), - bump up its version info to A.B in this line: - </P -><P -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> {+add-header{X-Actions-File-Version: A.B} -filter -no-popups}</PRE -></TD -></TR -></TABLE -> - </P -><P -> - Then change the version info in doc/webserver/actions/index.php, - line: '$required_actions_file_version = "A.B";' - </P -></LI -><LI -><P -> All documentation should be rebuild after the version bump. - Finished docs should be then be committed to CVS (for those - without the ability to build these). Some docs may require - rather obscure processing tools. <TT -CLASS="FILENAME" ->config</TT ->, - the man page (and the html version of the man page), and the PDF docs - fall in this category. REAMDE, the man page, AUTHORS, and config - should all also be committed to CVS for other packagers. The - formal docs should be uploaded to the webserver. See the - Section "Updating the webserver" in this manual for details. - </P -></LI -><LI -><P -> The <I -CLASS="CITETITLE" ->User Manual</I -> is also used for context - sensitive help for the CGI editor. This is version sensitive, so that - the user will get appropriate help for his/her release. So with - each release a fresh version should be uploaded to the webserver - (this is in addition to the main <I -CLASS="CITETITLE" ->User Manual</I -> - link from the main page since we need to keep manuals for various - versions available). The CGI pages will link to something like - <TT -CLASS="LITERAL" ->http://privoxy.org/$(VERSION)/user-manual/</TT ->. This - will need to be updated for each new release. There is no Makefile - target for this at this time!!! It needs to be done manually. - </P -></LI -><LI -><P -> All developers should look at the <TT -CLASS="FILENAME" ->ChangeLog</TT -> and - make sure noteworthy changes are referenced. - </P -></LI -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Commit all files that were changed in the above steps!</I -></SPAN -> - </P -></LI -><LI -><P -> Tag all files in CVS with the version number with - <SPAN -CLASS="QUOTE" ->"<B -CLASS="COMMAND" ->cvs tag v_X_Y_Z</B ->"</SPAN ->. - Don't use vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work) etc. - </P -></LI -><LI -><P -> If the release was in a development branch, increase the point version - from even to odd (X.Y.(Z+1)) again in <TT -CLASS="FILENAME" ->configure.in</TT -> and - commit your change. - </P -></LI -><LI -><P -> On the webserver, copy the user manual to a new top-level directory - called <TT -CLASS="FILENAME" ->X.Y.Z</TT ->. This ensures that help links from the CGI - pages, which have the version as a prefix, will go into the right version of the manual. - If this is a development branch release, also symlink <TT -CLASS="FILENAME" ->X.Y.(Z-1)</TT -> - to <TT -CLASS="FILENAME" ->X.Y.Z</TT -> and <TT -CLASS="FILENAME" ->X.Y.(Z+1)</TT -> to - <TT -CLASS="FILENAME" ->.</TT -> (i.e. dot). - </P -></LI -></UL -> - </P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="THERELEASE" ->6.3. Building and Releasing the Packages</A -></H2 -><P -> Now the individual packages can be built and released. Note that for - GPL reasons the first package to be released is always the source tarball. - </P -><P -> For <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> types of packages, including the source tarball, - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->you must make sure that you build from clean sources by exporting - the right version from CVS into an empty directory</I -></SPAN -> (just press return when - asked for a password): - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> mkdir dist # delete or choose different name if it already exists + </p> + <p> + The following programs are required to follow this process: <tt + class="FILENAME">ncftpput</tt> (ncftp), <tt class="FILENAME">scp, + ssh</tt> (ssh), <tt class="FILENAME">gmake</tt> (GNU's version of + make), autoconf, cvs. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="VERSIONNUMBERS">6.1. Version numbers</a> + </h2> + <p> + First you need to determine which version number the release will + have. <span class="APPLICATION">Privoxy</span> version numbers + consist of three numbers, separated by dots, like in X.Y.Z (e.g. + 3.0.0), where: + </p> + <ul> + <li> + <p> + X, the version major, is rarely ever changed. It is increased + by one if turning a development branch into stable + substantially changes the functionality, user interface or + configuration syntax. Majors 1 and 2 were <span class= + "APPLICATION">Junkbuster</span>, and 3 will be the first stable + <span class="APPLICATION">Privoxy</span> release. + </p> + </li> + <li> + <p> + Y, the version minor, represents the branch within the major + version. At any point in time, there are two branches being + maintained: The stable branch, with an even minor, say, 2N, in + which no functionality is being added and only bug-fixes are + made, and 2N+1, the development branch, in which the further + development of <span class="APPLICATION">Privoxy</span> takes + place. This enables us to turn the code upside down and inside + out, while at the same time providing and maintaining a stable + version. The minor is reset to zero (and one) when the major is + incremented. When a development branch has matured to the point + where it can be turned into stable, the old stable branch 2N is + given up (i.e. no longer maintained), the former development + branch 2N+1 becomes the new stable branch 2N+2, and a new + development branch 2N+3 is opened. + </p> + </li> + <li> + <p> + Z, the point or sub version, represents a release of the + software within a branch. It is therefore incremented + immediately before each code freeze. In development branches, + only the even point versions correspond to actual releases, + while the odd ones denote the evolving state of the sources on + CVS in between. It follows that Z is odd on CVS in development + branches most of the time. There, it gets increased to an even + number immediately before a code freeze, and is increased to an + odd number again immediately thereafter. This ensures that + builds from CVS snapshots are easily distinguished from + released versions. The point version is reset to zero when the + minor changes. + </p> + <p> + Stable branches work a little differently, since there should + be little to no development happening in such branches. + Remember, only bugfixes, which presumably should have had some + testing before being committed. Stable branches will then have + their version reported as <tt class="LITERAL">0.0.0</tt>, + during that period between releases when changes are being + added. This is to denote that this code is <span class= + "emphasis"><i class="EMPHASIS">not for release</i></span>. Then + as the release nears, the version is bumped according: e.g. <tt + class="LITERAL">3.0.1 -> 0.0.0 -> 3.0.2</tt>. + </p> + </li> + </ul> + + <p> + In summary, the main CVS trunk is the development branch where new + features are being worked on for the next stable series. This + should almost always be where the most activity takes place. There + is always at least one stable branch from the trunk, e.g now it is + <tt class="LITERAL">3.0</tt>, which is only used to release stable + versions. Once the initial *.0 release of the stable branch has + been done, then as a rule, only bugfixes that have had prior + testing should be committed to the stable branch. Once there are + enough bugfixes to justify a new release, the version of this + branch is again incremented Example: 3.0.0 -> 3.0.1 -> 3.0.2, + etc are all stable releases from within the stable branch. 3.1.x is + currently the main trunk, and where work on 3.2.x is taking place. + If any questions, please post to the devel list <span class= + "emphasis"><i class="EMPHASIS">before</i></span> committing to a + stable branch! + </p> + <p> + Developers should remember too that if they commit a bugfix to the + stable branch, this will more than likely require a separate + submission to the main trunk, since these are separate development + trees within CVS. If you are working on both, then this would + require at least two separate check outs (i.e main trunk, <span + class="emphasis"><i class="EMPHASIS">and</i></span> the stable + release branch, which is <tt class="LITERAL">v_3_0_branch</tt> at + the moment). + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="BEFORERELEASE">6.2. Before the Release: Freeze</a> + </h2> + <p> + The following <span class="emphasis"><i class="EMPHASIS">must be + done by one of the developers</i></span> prior to each new release. + </p> + <p> + </p> + <ul> + <li> + <p> + Make sure that everybody who has worked on the code in the last + couple of days has had a chance to yell <span class= + "QUOTE">"no!"</span> in case they have pending changes/fixes in + their pipelines. Announce the freeze so that nobody will + interfere with last minute changes. + </p> + </li> + <li> + <p> + Increment the version number (point from odd to even in + development branches!) in <tt class= + "FILENAME">configure.in</tt>. (RPM spec files will need to be + incremented as well.) + </p> + </li> + <li> + <p> + If <tt class="FILENAME">default.action</tt> has changed since + last release (i.e. software release or standalone actions file + release), bump up its version info to A.B in this line: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + {+add-header{X-Actions-File-Version: A.B} -filter -no-popups} +</pre> + </td> + </tr> + </table> + + <p> + Then change the version info in + doc/webserver/actions/index.php, line: + '$required_actions_file_version = "A.B";' + </p> + </li> + <li> + <p> + All documentation should be rebuild after the version bump. + Finished docs should be then be committed to CVS (for those + without the ability to build these). Some docs may require + rather obscure processing tools. <tt class= + "FILENAME">config</tt>, the man page (and the html version of + the man page), and the PDF docs fall in this category. REAMDE, + the man page, AUTHORS, and config should all also be committed + to CVS for other packagers. The formal docs should be uploaded + to the webserver. See the Section "Updating the webserver" in + this manual for details. + </p> + </li> + <li> + <p> + The <i class="CITETITLE">User Manual</i> is also used for + context sensitive help for the CGI editor. This is version + sensitive, so that the user will get appropriate help for + his/her release. So with each release a fresh version should be + uploaded to the webserver (this is in addition to the main <i + class="CITETITLE">User Manual</i> link from the main page since + we need to keep manuals for various versions available). The + CGI pages will link to something like <tt class= + "LITERAL">http://privoxy.org/$(VERSION)/user-manual/</tt>. This + will need to be updated for each new release. There is no + Makefile target for this at this time!!! It needs to be done + manually. + </p> + </li> + <li> + <p> + All developers should look at the <tt class= + "FILENAME">ChangeLog</tt> and make sure noteworthy changes are + referenced. + </p> + </li> + <li> + <p> + <span class="emphasis"><i class="EMPHASIS">Commit all files + that were changed in the above steps!</i></span> + </p> + </li> + <li> + <p> + Tag all files in CVS with the version number with <span class= + "QUOTE">"<b class="COMMAND">cvs tag v_X_Y_Z</b>"</span>. Don't + use vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work) etc. + </p> + </li> + <li> + <p> + If the release was in a development branch, increase the point + version from even to odd (X.Y.(Z+1)) again in <tt class= + "FILENAME">configure.in</tt> and commit your change. + </p> + </li> + <li> + <p> + On the webserver, copy the user manual to a new top-level + directory called <tt class="FILENAME">X.Y.Z</tt>. This ensures + that help links from the CGI pages, which have the version as a + prefix, will go into the right version of the manual. If this + is a development branch release, also symlink <tt class= + "FILENAME">X.Y.(Z-1)</tt> to <tt class="FILENAME">X.Y.Z</tt> + and <tt class="FILENAME">X.Y.(Z+1)</tt> to <tt class= + "FILENAME">.</tt> (i.e. dot). + </p> + </li> + </ul> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="THERELEASE">6.3. Building and Releasing the Packages</a> + </h2> + <p> + Now the individual packages can be built and released. Note that + for GPL reasons the first package to be released is always the + source tarball. + </p> + <p> + For <span class="emphasis"><i class="EMPHASIS">all</i></span> types + of packages, including the source tarball, <span class= + "emphasis"><i class="EMPHASIS">you must make sure that you build + from clean sources by exporting the right version from CVS into an + empty directory</i></span> (just press return when asked for a + password): + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + mkdir dist # delete or choose different name if it already exists cd dist cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login - cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current</PRE -></TD -></TR -></TABLE -> - </P -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Do NOT change</I -></SPAN -> a single bit, including, but not limited to - version information after export from CVS. This is to make sure that - all release packages, and with them, all future bug reports, are based - on exactly the same code. - </P -><DIV -CLASS="WARNING" -><P -></P -><TABLE -CLASS="WARNING" -BORDER="1" -WIDTH="100%" -><TR -><TD -ALIGN="CENTER" -><B ->Warning</B -></TD -></TR -><TR -><TD -ALIGN="LEFT" -><P -> Every significant release of Privoxy has included at least one - package that either had incorrect versions of files, missing files, - or incidental leftovers from a previous build process that gave - unknown numbers of users headaches to try to figure out what was - wrong. PLEASE, make sure you are using pristene sources, and are - following the prescribed process! - </P -></TD -></TR -></TABLE -></DIV -><P -> Please find additional instructions for the source tarball and the - individual platform dependent binary packages below. And details - on the Sourceforge release process below that. - </P -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="PACK-GUIDELINES" ->6.3.1. Note on Privoxy Packaging</A -></H3 -><P -> Please keep these general guidelines in mind when putting together - your package. These apply to <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> platforms! - </P -><P -> <P -></P -><UL -><LI -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->requires</I -></SPAN -> - write access to: all <TT -CLASS="FILENAME" ->*.action</TT -> files, all - logfiles, and the <TT -CLASS="FILENAME" ->trust</TT -> file. You will - need to determine the best way to do this for your platform. - </P -></LI -><LI -><P -> Please include up to date documentation. At a bare minimum: - </P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <TT -CLASS="FILENAME" ->LICENSE</TT -> (top-level directory) - </TD -></TR -></TBODY -></TABLE -><P -></P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <TT -CLASS="FILENAME" ->README</TT -> (top-level directory) - </TD -></TR -></TBODY -></TABLE -><P -></P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <TT -CLASS="FILENAME" ->AUTHORS</TT -> (top-level directory) - </TD -></TR -></TBODY -></TABLE -><P -></P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <TT -CLASS="FILENAME" ->man page</TT -> (top-level directory, Unix-like - platforms only) - </TD -></TR -></TBODY -></TABLE -><P -></P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <TT -CLASS="FILENAME" ->The User Manual</TT -> (doc/webserver/user-manual/) - </TD -></TR -></TBODY -></TABLE -><P -></P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <TT -CLASS="FILENAME" ->FAQ</TT -> (doc/webserver/faq/) - </TD -></TR -></TBODY -></TABLE -><P -></P -><P -> Also suggested: <TT -CLASS="FILENAME" ->Developer Manual</TT -> - (doc/webserver/developer-manual) and <TT -CLASS="FILENAME" ->ChangeLog</TT -> - (top-level directory). <TT -CLASS="FILENAME" ->FAQ</TT -> and the manuals are - HTML docs. There are also text versions in - <TT -CLASS="FILENAME" ->doc/text/</TT -> which could conceivably also be - included. - </P -><P -> The documentation has been designed such that the manuals are linked - to each other from parallel directories, and should be packaged - that way. <TT -CLASS="FILENAME" ->privoxy-index.html</TT -> can also be - included and can serve as a focal point for docs and other links of - interest (and possibly renamed to <TT -CLASS="FILENAME" ->index.html</TT ->). - This should be one level up from the manuals. There is a link also - on this page to an HTMLized version of the man page. To avoid 404 for - this, it is in CVS as - <TT -CLASS="FILENAME" ->doc/webserver/man-page/privoxy-man-page.html</TT ->, - and should be included along with the manuals. There is also a - css stylesheets that can be included for better presentation: - <TT -CLASS="FILENAME" ->p_doc.css</TT ->. This should be in the same directory - with <TT -CLASS="FILENAME" ->privoxy-index.html</TT ->, (i.e. one level up from - the manual directories). - </P -></LI -><LI -><P -> <TT -CLASS="FILENAME" ->user.action</TT -> and <TT -CLASS="FILENAME" ->user.filter</TT -> - are designed for local preferences. Make sure these do not get overwritten! - <TT -CLASS="FILENAME" ->config</TT -> should not be overwritten either. This - has especially important configuration data in it. - <TT -CLASS="FILENAME" ->trust</TT -> should be left in tact as well. - </P -></LI -><LI -><P -> Other configuration files (<TT -CLASS="FILENAME" ->default.action</TT -> and - <TT -CLASS="FILENAME" ->default.filter</TT ->) should be installed as the new - defaults, but all previously installed configuration files should be - preserved as backups. This is just good manners :-) These files are - likely to change between releases and contain important new features - and bug fixes. - </P -></LI -><LI -><P -> Please check platform specific notes in this doc, if you haven't - done <SPAN -CLASS="QUOTE" ->"Privoxy"</SPAN -> packaging before for other platform - specific issues. Conversely, please add any notes that you know - are important for your platform (or contact one of the doc - maintainers to do this if you can't). - </P -></LI -><LI -><P -> Packagers should do a <SPAN -CLASS="QUOTE" ->"clean"</SPAN -> install of their - package after building it. So any previous installs should be - removed first to ensure the integrity of the newly built package. - Then run the package for a while to make sure there are no - obvious problems, before uploading. - </P -></LI -></UL -> - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-TARBALL" ->6.3.2. Source Tarball</A -></H3 -><P -> First, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd current - autoheader && autoconf && ./configure</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then do: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> make tarball-dist</PRE -></TD -></TR -></TABLE -> - </P -><P -> To upload the package to Sourceforge, simply issue - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> make tarball-upload</PRE -></TD -></TR -></TABLE -> - </P -><P -> Go to the displayed URL and release the file publicly on Sourceforge. - For the change log field, use the relevant section of the - <TT -CLASS="FILENAME" ->ChangeLog</TT -> file. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-RPM" ->6.3.3. SuSE, Conectiva or Red Hat RPM</A -></H3 -><P -> In following text, replace <TT -CLASS="REPLACEABLE" -><I ->dist</I -></TT -> - with either <SPAN -CLASS="QUOTE" ->"rh"</SPAN -> for Red Hat or <SPAN -CLASS="QUOTE" ->"suse"</SPAN -> for SuSE. - </P -><P -> First, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). - </P -><P -> As the only exception to not changing anything after export from CVS, - now examine the file <TT -CLASS="FILENAME" ->privoxy-</TT -><TT -CLASS="REPLACEABLE" -><I ->dist</I -></TT -><TT -CLASS="FILENAME" ->.spec</TT -> - and make sure that the version information and the RPM release number are - correct. The RPM release numbers for each version start at one. Hence it must - be reset to one if this is the first RPM for - <TT -CLASS="REPLACEABLE" -><I ->dist</I -></TT -> which is built from version - X.Y.Z. Check the - <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->file - list</A -> if unsure. Else, it must be set to the highest already available RPM - release number for that version plus one. - </P -><P -> Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd current - autoheader && autoconf && ./configure</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then do - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> make <TT -CLASS="REPLACEABLE" -><I ->dist</I -></TT ->-dist</PRE -></TD -></TR -></TABLE -> - </P -><P -> To upload the package to Sourceforge, simply issue - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> make <TT -CLASS="REPLACEABLE" -><I ->dist</I -></TT ->-upload <TT -CLASS="REPLACEABLE" -><I ->rpm_packagerev</I -></TT -></PRE -></TD -></TR -></TABLE -> - </P -><P -> where <TT -CLASS="REPLACEABLE" -><I ->rpm_packagerev</I -></TT -> is the - RPM release number as determined above. - Go to the displayed URL and release the file publicly on Sourceforge. - Use the release notes and change log from the source tarball package. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-OS2" ->6.3.4. OS/2</A -></H3 -><P -> First, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then get the OS/2 Setup module: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co os2setup</PRE -></TD -></TR -></TABLE -> - </P -><P -> You will need a mix of development tools. - The main compilation takes place with IBM Visual Age C++. - Some ancillary work takes place with GNU tools, available from - various sources like hobbes.nmsu.edu. - Specificially, you will need <TT -CLASS="FILENAME" ->autoheader</TT ->, - <TT -CLASS="FILENAME" ->autoconf</TT -> and <TT -CLASS="FILENAME" ->sh</TT -> tools. - The packaging takes place with WarpIN, available from various sources, including - its home page: <A -HREF="http://www.xworkplace.org/" -TARGET="_top" ->xworkplace</A ->. - </P -><P -> Change directory to the <TT -CLASS="FILENAME" ->os2setup</TT -> directory. - Edit the os2build.cmd file to set the final executable filename. - For example, - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> installExeName='privoxyos2_setup_X.Y.Z.exe'</PRE -></TD -></TR -></TABLE -> - </P -><P -> Next, edit the <TT -CLASS="FILENAME" ->IJB.wis</TT -> file so the release number matches - in the <TT -CLASS="FILENAME" ->PACKAGEID</TT -> section: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"</PRE -></TD -></TR -></TABLE -> - </P -><P -> You're now ready to build. Run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> os2build</PRE -></TD -></TR -></TABLE -> - </P -><P -> You will find the WarpIN-installable executable in the - <TT -CLASS="FILENAME" ->./files</TT -> directory. Upload this anonymously to - <TT -CLASS="FILENAME" ->uploads.sourceforge.net/incoming</TT ->, create a release - for it, and you're done. Use the release notes and Change Log from the - source tarball package. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-SOLARIS" ->6.3.5. Solaris</A -></H3 -><P -> Login to Sourceforge's compilefarm via ssh: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> ssh cf.sourceforge.net</PRE -></TD -></TR -></TABLE -> - </P -><P -> Choose the right operating system (not the Debian one). - When logged in, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd current - autoheader && autoconf && ./configure</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then run - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> gmake solaris-dist</PRE -></TD -></TR -></TABLE -> - </P -><P -> which creates a gzip'ed tar archive. Sadly, you cannot use <B -CLASS="COMMAND" ->make - solaris-upload</B -> on the Sourceforge machine (no ncftpput). You now have - to manually upload the archive to Sourceforge's ftp server and release - the file publicly. Use the release notes and Change Log from the - source tarball package. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-WINDOWS" ->6.3.6. Windows</A -></H3 -><P -> You should ensure you have the latest version of Cygwin (from - <A -HREF="http://www.cygwin.com/" -TARGET="_top" ->http://www.cygwin.com/</A ->). - Run the following commands from within a Cygwin bash shell. - </P -><P -> First, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then get the Windows setup module: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co winsetup</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then you can build the package. This is fully automated, and is - controlled by <TT -CLASS="FILENAME" ->winsetup/GNUmakefile</TT ->. - All you need to do is: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd winsetup - make</PRE -></TD -></TR -></TABLE -> - </P -><P -> Now you can manually rename <TT -CLASS="FILENAME" ->privoxy_setup.exe</TT -> to - <TT -CLASS="FILENAME" ->privoxy_setup_X_Y_Z.exe</TT ->, and upload it to - SourceForge. When releasing the package on SourceForge, use the release notes - and Change Log from the source tarball package. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-DEBIAN" ->6.3.7. Debian</A -></H3 -><P -> First, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the - right version into an empty directory</I -></SPAN ->. (See - "Building and releasing packages" above). Then add a log - entry to <TT -CLASS="FILENAME" ->debian/changelog</TT ->, if it is not - already there, for example by running: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> debchange -v 3.0.18-UNRELEASED-1 "New upstream version"</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then, run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> dpkg-buildpackage -rfakeroot -us -uc -b</PRE -></TD -></TR -></TABLE -> - </P -><P -> This will create - <TT -CLASS="FILENAME" ->../privoxy_3.0.18-UNRELEASED-1_i386.deb</TT -> - which can be uploaded. To upload the package to Sourceforge, simply - issue - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> make debian-upload</PRE -></TD -></TR -></TABLE -> - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-MACOSX" ->6.3.8. Mac OS X</A -></H3 -><P -> First, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then get the Mac OS X setup module: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co osxsetup</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd osxsetup - build</PRE -></TD -></TR -></TABLE -> - </P -><P -> This will run <TT -CLASS="FILENAME" ->autoheader</TT ->, <TT -CLASS="FILENAME" ->autoconf</TT -> and - <TT -CLASS="FILENAME" ->configure</TT -> as well as <TT -CLASS="FILENAME" ->make</TT ->. - Finally, it will copy over the necessary files to the ./osxsetup/files directory - for further processing by <TT -CLASS="FILENAME" ->PackageMaker</TT ->. - </P -><P -> Bring up PackageMaker with the PrivoxyPackage.pmsp definition file, modify the package - name to match the release, and hit the "Create package" button. - If you specify ./Privoxy.pkg as the output package name, you can then create - the distributable zip file with the command: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg</PRE -></TD -></TR -></TABLE -> - </P -><P -> You can then upload <TT -CLASS="FILENAME" ->privoxyosx_setup_x.y.z.zip</TT -> anonymously to - <TT -CLASS="FILENAME" ->uploads.sourceforge.net/incoming</TT ->, - create a release for it, and you're done. Use the release notes - and Change Log from the source tarball package. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-FREEBSD" ->6.3.9. FreeBSD</A -></H3 -><P -> Login to Sourceforge's compile-farm via ssh: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> ssh cf.sourceforge.net</PRE -></TD -></TR -></TABLE -> - </P -><P -> Choose the right operating system. - When logged in, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd current - autoheader && autoconf && ./configure</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> gmake freebsd-dist</PRE -></TD -></TR -></TABLE -> - </P -><P -> which creates a gzip'ed tar archive. Sadly, you cannot use <B -CLASS="COMMAND" ->make - freebsd-upload</B -> on the Sourceforge machine (no ncftpput). You now have - to manually upload the archive to Sourceforge's ftp server and release - the file publicly. Use the release notes and Change Log from the - source tarball package. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-HPUX" ->6.3.10. HP-UX 11</A -></H3 -><P -> First, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd current - autoheader && autoconf && ./configure</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then do FIXME. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-AMIGA" ->6.3.11. Amiga OS</A -></H3 -><P -> First, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd current - autoheader && autoconf && ./configure</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then do FIXME. - </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="NEWRELEASE-AIX" ->6.3.12. AIX</A -></H3 -><P -> Login to Sourceforge's compilefarm via ssh: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> ssh cf.sourceforge.net</PRE -></TD -></TR -></TABLE -> - </P -><P -> Choose the right operating system. - When logged in, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->make sure that you have freshly exported the right - version into an empty directory</I -></SPAN ->. (See "Building and releasing - packages" above). Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> cd current - autoheader && autoconf && ./configure</PRE -></TD -></TR -></TABLE -> - </P -><P -> Then run: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> make aix-dist</PRE -></TD -></TR -></TABLE -> - </P -><P -> which creates a gzip'ed tar archive. Sadly, you cannot use <B -CLASS="COMMAND" ->make - aix-upload</B -> on the Sourceforge machine (no ncftpput). You now have - to manually upload the archive to Sourceforge's ftp server and release - the file publicly. Use the release notes and Change Log from the - source tarball package. - </P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="RELEASING" ->6.4. Uploading and Releasing Your Package</A -></H2 -><P -> After the package is ready, it is time to upload it - to SourceForge, and go through the release steps. The upload - is done via FTP: - </P -><P -> <P -></P -><UL -><LI -><P -> Upload to: <A -HREF="ftp://upload.sourceforge.net/incoming" -TARGET="_top" ->ftp://upload.sourceforge.net/incoming</A -> - </P -></LI -><LI -><P -> user: <TT -CLASS="LITERAL" ->anonymous</TT -> - </P -></LI -><LI -><P -> password: <TT -CLASS="LITERAL" ->ijbswa-developers@lists.sourceforge.net</TT -> - </P -></LI -></UL -> - </P -><P -> Or use the <B -CLASS="COMMAND" ->make</B -> targets as described above. - </P -><P -> Once this done go to <A -HREF="https://sourceforge.net/project/admin/editpackages.php?group_id=11118" -TARGET="_top" ->https://sourceforge.net/project/admin/editpackages.php?group_id=11118</A ->, - making sure you are logged in. Find your target platform in the - second column, and click <TT -CLASS="LITERAL" ->Add Release</TT ->. You will - then need to create a new release for your package, using the format - of <TT -CLASS="LITERAL" ->$VERSION ($CODE_STATUS)</TT ->, e.g. <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->3.0.18 - (beta)</I -></SPAN ->. - </P -><P -> Now just follow the prompts. Be sure to add any appropriate Release - notes. You should see your freshly uploaded packages in - <SPAN -CLASS="QUOTE" ->"Step 2. Add Files To This Release"</SPAN ->. Check the - appropriate box(es). Remember at each step to hit the - <SPAN -CLASS="QUOTE" ->"Refresh/Submit"</SPAN -> buttons! You should now see your - file(s) listed in Step 3. Fill out the forms with the appropriate - information for your platform, being sure to hit <SPAN -CLASS="QUOTE" ->"Update"</SPAN -> - for each file. If anyone is monitoring your platform, check the - <SPAN -CLASS="QUOTE" ->"email"</SPAN -> box at the very bottom to notify them of - the new package. This should do it! - </P -><P -> If you have made errors, or need to make changes, you can go through - essentially the same steps, but select <TT -CLASS="LITERAL" ->Edit Release</TT ->, - instead of <TT -CLASS="LITERAL" ->Add Release</TT ->. - </P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AFTERRELEASE" ->6.5. After the Release</A -></H2 -><P -> When all (or: most of the) packages have been uploaded and made available, - send an email to the <A -HREF="mailto:ijbswa-announce@lists.sourceforge.net" -TARGET="_top" ->announce - mailing list</A ->, Subject: "Version X.Y.Z available for download". Be sure to - include the - <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->download - location</A ->, the release notes and the Changelog. Also, post an - updated News item on the project page Sourceforge, and update the Home - page and docs linked from the Home page (see below). Other news sites - and release oriented sites, such as Freshmeat, should also be notified. - </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="testing.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="webserver-update.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Testing Guidelines</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Update the Webserver</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> + cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current +</pre> + </td> + </tr> + </table> + + <p> + <span class="emphasis"><i class="EMPHASIS">Do NOT change</i></span> + a single bit, including, but not limited to version information + after export from CVS. This is to make sure that all release + packages, and with them, all future bug reports, are based on + exactly the same code. + </p> + <div class="WARNING"> + <table class="WARNING" border="1" width="100%"> + <tr> + <td align="CENTER"> + <b>Warning</b> + </td> + </tr> + <tr> + <td align="LEFT"> + <p> + Every significant release of Privoxy has included at least + one package that either had incorrect versions of files, + missing files, or incidental leftovers from a previous + build process that gave unknown numbers of users headaches + to try to figure out what was wrong. PLEASE, make sure you + are using pristene sources, and are following the + prescribed process! + </p> + </td> + </tr> + </table> + </div> + <p> + Please find additional instructions for the source tarball and the + individual platform dependent binary packages below. And details on + the Sourceforge release process below that. + </p> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="PACK-GUIDELINES">6.3.1. Note on Privoxy Packaging</a> + </h3> + <p> + Please keep these general guidelines in mind when putting + together your package. These apply to <span class="emphasis"><i + class="EMPHASIS">all</i></span> platforms! + </p> + <p> + </p> + <ul> + <li> + <p> + <span class="APPLICATION">Privoxy</span> <span class= + "emphasis"><i class="EMPHASIS">requires</i></span> write + access to: all <tt class="FILENAME">*.action</tt> files, all + logfiles, and the <tt class="FILENAME">trust</tt> file. You + will need to determine the best way to do this for your + platform. + </p> + </li> + <li> + <p> + Please include up to date documentation. At a bare minimum: + </p> + <table border="0"> + <tbody> + <tr> + <td> + <tt class="FILENAME">LICENSE</tt> (top-level directory) + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <tt class="FILENAME">README</tt> (top-level directory) + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <tt class="FILENAME">AUTHORS</tt> (top-level directory) + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <tt class="FILENAME">man page</tt> (top-level + directory, Unix-like platforms only) + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <tt class="FILENAME">The User Manual</tt> + (doc/webserver/user-manual/) + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <tt class="FILENAME">FAQ</tt> (doc/webserver/faq/) + </td> + </tr> + </tbody> + </table> + <p> + Also suggested: <tt class="FILENAME">Developer Manual</tt> + (doc/webserver/developer-manual) and <tt class= + "FILENAME">ChangeLog</tt> (top-level directory). <tt class= + "FILENAME">FAQ</tt> and the manuals are HTML docs. There are + also text versions in <tt class="FILENAME">doc/text/</tt> + which could conceivably also be included. + </p> + <p> + The documentation has been designed such that the manuals are + linked to each other from parallel directories, and should be + packaged that way. <tt class= + "FILENAME">privoxy-index.html</tt> can also be included and + can serve as a focal point for docs and other links of + interest (and possibly renamed to <tt class= + "FILENAME">index.html</tt>). This should be one level up from + the manuals. There is a link also on this page to an HTMLized + version of the man page. To avoid 404 for this, it is in CVS + as <tt class= + "FILENAME">doc/webserver/man-page/privoxy-man-page.html</tt>, + and should be included along with the manuals. There is also + a css stylesheets that can be included for better + presentation: <tt class="FILENAME">p_doc.css</tt>. This + should be in the same directory with <tt class= + "FILENAME">privoxy-index.html</tt>, (i.e. one level up from + the manual directories). + </p> + </li> + <li> + <p> + <tt class="FILENAME">user.action</tt> and <tt class= + "FILENAME">user.filter</tt> are designed for local + preferences. Make sure these do not get overwritten! <tt + class="FILENAME">config</tt> should not be overwritten + either. This has especially important configuration data in + it. <tt class="FILENAME">trust</tt> should be left in tact as + well. + </p> + </li> + <li> + <p> + Other configuration files (<tt class= + "FILENAME">default.action</tt> and <tt class= + "FILENAME">default.filter</tt>) should be installed as the + new defaults, but all previously installed configuration + files should be preserved as backups. This is just good + manners :-) These files are likely to change between releases + and contain important new features and bug fixes. + </p> + </li> + <li> + <p> + Please check platform specific notes in this doc, if you + haven't done <span class="QUOTE">"Privoxy"</span> packaging + before for other platform specific issues. Conversely, please + add any notes that you know are important for your platform + (or contact one of the doc maintainers to do this if you + can't). + </p> + </li> + <li> + <p> + Packagers should do a <span class="QUOTE">"clean"</span> + install of their package after building it. So any previous + installs should be removed first to ensure the integrity of + the newly built package. Then run the package for a while to + make sure there are no obvious problems, before uploading. + </p> + </li> + </ul> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-TARBALL">6.3.2. Source Tarball</a> + </h3> + <p> + First, <span class="emphasis"><i class="EMPHASIS">make sure that + you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd current + autoheader && autoconf && ./configure +</pre> + </td> + </tr> + </table> + + <p> + Then do: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + make tarball-dist +</pre> + </td> + </tr> + </table> + + <p> + To upload the package to Sourceforge, simply issue + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + make tarball-upload +</pre> + </td> + </tr> + </table> + + <p> + Go to the displayed URL and release the file publicly on + Sourceforge. For the change log field, use the relevant section + of the <tt class="FILENAME">ChangeLog</tt> file. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-RPM">6.3.3. SuSE, Conectiva or Red Hat + RPM</a> + </h3> + <p> + In following text, replace <tt class= + "REPLACEABLE"><i>dist</i></tt> with either <span class= + "QUOTE">"rh"</span> for Red Hat or <span class= + "QUOTE">"suse"</span> for SuSE. + </p> + <p> + First, <span class="emphasis"><i class="EMPHASIS">make sure that + you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). + </p> + <p> + As the only exception to not changing anything after export from + CVS, now examine the file <tt class="FILENAME">privoxy-</tt><tt + class="REPLACEABLE"><i>dist</i></tt><tt class= + "FILENAME">.spec</tt> and make sure that the version information + and the RPM release number are correct. The RPM release numbers + for each version start at one. Hence it must be reset to one if + this is the first RPM for <tt class= + "REPLACEABLE"><i>dist</i></tt> which is built from version X.Y.Z. + Check the <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">file list</a> if unsure. Else, it must be set to + the highest already available RPM release number for that version + plus one. + </p> + <p> + Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd current + autoheader && autoconf && ./configure +</pre> + </td> + </tr> + </table> + + <p> + Then do + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + make <tt class="REPLACEABLE"><i>dist</i></tt>-dist +</pre> + </td> + </tr> + </table> + + <p> + To upload the package to Sourceforge, simply issue + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + make <tt class="REPLACEABLE"><i>dist</i></tt>-upload <tt class= +"REPLACEABLE"><i>rpm_packagerev</i></tt> +</pre> + </td> + </tr> + </table> + + <p> + where <tt class="REPLACEABLE"><i>rpm_packagerev</i></tt> is the + RPM release number as determined above. Go to the displayed URL + and release the file publicly on Sourceforge. Use the release + notes and change log from the source tarball package. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-OS2">6.3.4. OS/2</a> + </h3> + <p> + First, <span class="emphasis"><i class="EMPHASIS">make sure that + you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). Then get the OS/2 Setup module: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co os2setup +</pre> + </td> + </tr> + </table> + + <p> + You will need a mix of development tools. The main compilation + takes place with IBM Visual Age C++. Some ancillary work takes + place with GNU tools, available from various sources like + hobbes.nmsu.edu. Specificially, you will need <tt class= + "FILENAME">autoheader</tt>, <tt class="FILENAME">autoconf</tt> + and <tt class="FILENAME">sh</tt> tools. The packaging takes place + with WarpIN, available from various sources, including its home + page: <a href="http://www.xworkplace.org/" target= + "_top">xworkplace</a>. + </p> + <p> + Change directory to the <tt class="FILENAME">os2setup</tt> + directory. Edit the os2build.cmd file to set the final executable + filename. For example, + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + installExeName='privoxyos2_setup_X.Y.Z.exe' +</pre> + </td> + </tr> + </table> + + <p> + Next, edit the <tt class="FILENAME">IJB.wis</tt> file so the + release number matches in the <tt class="FILENAME">PACKAGEID</tt> + section: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z" +</pre> + </td> + </tr> + </table> + + <p> + You're now ready to build. Run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + os2build +</pre> + </td> + </tr> + </table> + + <p> + You will find the WarpIN-installable executable in the <tt class= + "FILENAME">./files</tt> directory. Upload this anonymously to <tt + class="FILENAME">uploads.sourceforge.net/incoming</tt>, create a + release for it, and you're done. Use the release notes and Change + Log from the source tarball package. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-SOLARIS">6.3.5. Solaris</a> + </h3> + <p> + Login to Sourceforge's compilefarm via ssh: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + ssh cf.sourceforge.net +</pre> + </td> + </tr> + </table> + + <p> + Choose the right operating system (not the Debian one). When + logged in, <span class="emphasis"><i class="EMPHASIS">make sure + that you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd current + autoheader && autoconf && ./configure +</pre> + </td> + </tr> + </table> + + <p> + Then run + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + gmake solaris-dist +</pre> + </td> + </tr> + </table> + + <p> + which creates a gzip'ed tar archive. Sadly, you cannot use <b + class="COMMAND">make solaris-upload</b> on the Sourceforge + machine (no ncftpput). You now have to manually upload the + archive to Sourceforge's ftp server and release the file + publicly. Use the release notes and Change Log from the source + tarball package. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-WINDOWS">6.3.6. Windows</a> + </h3> + <p> + You should ensure you have the latest version of Cygwin (from <a + href="http://www.cygwin.com/" target= + "_top">http://www.cygwin.com/</a>). Run the following commands + from within a Cygwin bash shell. + </p> + <p> + First, <span class="emphasis"><i class="EMPHASIS">make sure that + you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). Then get the Windows setup module: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co winsetup +</pre> + </td> + </tr> + </table> + + <p> + Then you can build the package. This is fully automated, and is + controlled by <tt class="FILENAME">winsetup/GNUmakefile</tt>. All + you need to do is: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd winsetup + make +</pre> + </td> + </tr> + </table> + + <p> + Now you can manually rename <tt class= + "FILENAME">privoxy_setup.exe</tt> to <tt class= + "FILENAME">privoxy_setup_X_Y_Z.exe</tt>, and upload it to + SourceForge. When releasing the package on SourceForge, use the + release notes and Change Log from the source tarball package. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-DEBIAN">6.3.7. Debian</a> + </h3> + <p> + First, <span class="emphasis"><i class="EMPHASIS">make sure that + you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). Then add a log entry to <tt class= + "FILENAME">debian/changelog</tt>, if it is not already there, for + example by running: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + debchange -v 3.0.18-UNRELEASED-1 "New upstream version" +</pre> + </td> + </tr> + </table> + + <p> + Then, run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + dpkg-buildpackage -rfakeroot -us -uc -b +</pre> + </td> + </tr> + </table> + + <p> + This will create <tt class= + "FILENAME">../privoxy_3.0.18-UNRELEASED-1_i386.deb</tt> which can + be uploaded. To upload the package to Sourceforge, simply issue + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + make debian-upload +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-MACOSX">6.3.8. Mac OS X</a> + </h3> + <p> + First, <span class="emphasis"><i class="EMPHASIS">make sure that + you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). Then get the Mac OS X setup module: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co osxsetup +</pre> + </td> + </tr> + </table> + + <p> + Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd osxsetup + build +</pre> + </td> + </tr> + </table> + + <p> + This will run <tt class="FILENAME">autoheader</tt>, <tt class= + "FILENAME">autoconf</tt> and <tt class="FILENAME">configure</tt> + as well as <tt class="FILENAME">make</tt>. Finally, it will copy + over the necessary files to the ./osxsetup/files directory for + further processing by <tt class="FILENAME">PackageMaker</tt>. + </p> + <p> + Bring up PackageMaker with the PrivoxyPackage.pmsp definition + file, modify the package name to match the release, and hit the + "Create package" button. If you specify ./Privoxy.pkg as the + output package name, you can then create the distributable zip + file with the command: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg +</pre> + </td> + </tr> + </table> + + <p> + You can then upload <tt class= + "FILENAME">privoxyosx_setup_x.y.z.zip</tt> anonymously to <tt + class="FILENAME">uploads.sourceforge.net/incoming</tt>, create a + release for it, and you're done. Use the release notes and Change + Log from the source tarball package. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-FREEBSD">6.3.9. FreeBSD</a> + </h3> + <p> + Login to Sourceforge's compile-farm via ssh: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + ssh cf.sourceforge.net +</pre> + </td> + </tr> + </table> + + <p> + Choose the right operating system. When logged in, <span class= + "emphasis"><i class="EMPHASIS">make sure that you have freshly + exported the right version into an empty directory</i></span>. + (See "Building and releasing packages" above). Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd current + autoheader && autoconf && ./configure +</pre> + </td> + </tr> + </table> + + <p> + Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + gmake freebsd-dist +</pre> + </td> + </tr> + </table> + + <p> + which creates a gzip'ed tar archive. Sadly, you cannot use <b + class="COMMAND">make freebsd-upload</b> on the Sourceforge + machine (no ncftpput). You now have to manually upload the + archive to Sourceforge's ftp server and release the file + publicly. Use the release notes and Change Log from the source + tarball package. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-HPUX">6.3.10. HP-UX 11</a> + </h3> + <p> + First, <span class="emphasis"><i class="EMPHASIS">make sure that + you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd current + autoheader && autoconf && ./configure +</pre> + </td> + </tr> + </table> + + <p> + Then do FIXME. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-AMIGA">6.3.11. Amiga OS</a> + </h3> + <p> + First, <span class="emphasis"><i class="EMPHASIS">make sure that + you have freshly exported the right version into an empty + directory</i></span>. (See "Building and releasing packages" + above). Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd current + autoheader && autoconf && ./configure +</pre> + </td> + </tr> + </table> + + <p> + Then do FIXME. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="NEWRELEASE-AIX">6.3.12. AIX</a> + </h3> + <p> + Login to Sourceforge's compilefarm via ssh: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + ssh cf.sourceforge.net +</pre> + </td> + </tr> + </table> + + <p> + Choose the right operating system. When logged in, <span class= + "emphasis"><i class="EMPHASIS">make sure that you have freshly + exported the right version into an empty directory</i></span>. + (See "Building and releasing packages" above). Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + cd current + autoheader && autoconf && ./configure +</pre> + </td> + </tr> + </table> + + <p> + Then run: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + make aix-dist +</pre> + </td> + </tr> + </table> + + <p> + which creates a gzip'ed tar archive. Sadly, you cannot use <b + class="COMMAND">make aix-upload</b> on the Sourceforge machine + (no ncftpput). You now have to manually upload the archive to + Sourceforge's ftp server and release the file publicly. Use the + release notes and Change Log from the source tarball package. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="RELEASING">6.4. Uploading and Releasing Your Package</a> + </h2> + <p> + After the package is ready, it is time to upload it to SourceForge, + and go through the release steps. The upload is done via FTP: + </p> + <p> + </p> + <ul> + <li> + <p> + Upload to: <a href="ftp://upload.sourceforge.net/incoming" + target="_top">ftp://upload.sourceforge.net/incoming</a> + </p> + </li> + <li> + <p> + user: <tt class="LITERAL">anonymous</tt> + </p> + </li> + <li> + <p> + password: <tt class= + "LITERAL">ijbswa-developers@lists.sourceforge.net</tt> + </p> + </li> + </ul> + + <p> + Or use the <b class="COMMAND">make</b> targets as described above. + </p> + <p> + Once this done go to <a href= + "https://sourceforge.net/project/admin/editpackages.php?group_id=11118" + target= + "_top">https://sourceforge.net/project/admin/editpackages.php?group_id=11118</a>, + making sure you are logged in. Find your target platform in the + second column, and click <tt class="LITERAL">Add Release</tt>. You + will then need to create a new release for your package, using the + format of <tt class="LITERAL">$VERSION ($CODE_STATUS)</tt>, e.g. + <span class="emphasis"><i class="EMPHASIS">3.0.18 + (beta)</i></span>. + </p> + <p> + Now just follow the prompts. Be sure to add any appropriate Release + notes. You should see your freshly uploaded packages in <span + class="QUOTE">"Step 2. Add Files To This Release"</span>. Check the + appropriate box(es). Remember at each step to hit the <span class= + "QUOTE">"Refresh/Submit"</span> buttons! You should now see your + file(s) listed in Step 3. Fill out the forms with the appropriate + information for your platform, being sure to hit <span class= + "QUOTE">"Update"</span> for each file. If anyone is monitoring your + platform, check the <span class="QUOTE">"email"</span> box at the + very bottom to notify them of the new package. This should do it! + </p> + <p> + If you have made errors, or need to make changes, you can go + through essentially the same steps, but select <tt class= + "LITERAL">Edit Release</tt>, instead of <tt class="LITERAL">Add + Release</tt>. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AFTERRELEASE">6.5. After the Release</a> + </h2> + <p> + When all (or: most of the) packages have been uploaded and made + available, send an email to the <a href= + "mailto:ijbswa-announce@lists.sourceforge.net" target= + "_top">announce mailing list</a>, Subject: "Version X.Y.Z available + for download". Be sure to include the <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">download location</a>, the release notes and the + Changelog. Also, post an updated News item on the project page + Sourceforge, and update the Home page and docs linked from the Home + page (see below). Other news sites and release oriented sites, such + as Freshmeat, should also be notified. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="testing.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="webserver-update.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Testing Guidelines + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Update the Webserver + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/seealso.html b/doc/webserver/developer-manual/seealso.html index 35ee27cb..3aba19ea 100644 --- a/doc/webserver/developer-manual/seealso.html +++ b/doc/webserver/developer-manual/seealso.html @@ -1,405 +1,224 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->See also</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Privoxy Copyright, License and History" -HREF="copyright.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="copyright.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -> </TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="SEEALSO" ->10. See also</A -></H1 -><P -> Other references and sites of interest to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - users:</P -><P -> <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->http://www.privoxy.org/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> Home page. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/faq/" -TARGET="_top" ->http://www.privoxy.org/faq/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> FAQ. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/developer-manual/" -TARGET="_top" ->http://www.privoxy.org/developer-manual/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> developer manual. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://sourceforge.net/projects/ijbswa/" -TARGET="_top" ->https://sourceforge.net/projects/ijbswa/</A ->, - the Project Page for <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on - <A -HREF="http://sourceforge.net" -TARGET="_top" ->SourceForge</A ->. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A ->, - the web-based user interface. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> must be - running for this to work. Shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A -> - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://sourceforge.net/tracker/?group_id=11118&atid=460288" -TARGET="_top" ->https://sourceforge.net/tracker/?group_id=11118&atid=460288</A ->, to submit <SPAN -CLASS="QUOTE" ->"misses"</SPAN -> and other - configuration related suggestions to the developers. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - - - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.junkbusters.com/ht/en/cookies.html" -TARGET="_top" ->http://www.junkbusters.com/ht/en/cookies.html</A ->, - an explanation how cookies are used to track web users. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.junkbusters.com/ijb.html" -TARGET="_top" ->http://www.junkbusters.com/ijb.html</A ->, - the original Internet Junkbuster. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.squid-cache.org/" -TARGET="_top" ->http://www.squid-cache.org/</A ->, a popular - caching proxy, which is often used together with <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.pps.jussieu.fr/~jch/software/polipo/" -TARGET="_top" ->http://www.pps.jussieu.fr/~jch/software/polipo/</A ->, - <SPAN -CLASS="APPLICATION" ->Polipo</SPAN -> is a caching proxy with advanced features - like pipelining, multiplexing and caching of partial instances. In many setups - it can be used as <SPAN -CLASS="APPLICATION" ->Squid</SPAN -> replacement. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://www.torproject.org/" -TARGET="_top" ->https://www.torproject.org/</A ->, - <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> can help anonymize web browsing, - web publishing, instant messaging, IRC, SSH, and other applications. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - </P -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="copyright.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -> </TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Privoxy Copyright, License and History</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -> </TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + See also + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="Privoxy Copyright, License and History" href= + "copyright.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="copyright.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="SEEALSO">10. See also</a> + </h1> + <p> + Other references and sites of interest to <span class= + "APPLICATION">Privoxy</span> users: + </p> + <p> + </p> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/" target= + "_top">http://www.privoxy.org/</a>, the <span class= + "APPLICATION">Privoxy</span> Home page. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/faq/" target= + "_top">http://www.privoxy.org/faq/</a>, the <span class= + "APPLICATION">Privoxy</span> FAQ. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/developer-manual/" target= + "_top">http://www.privoxy.org/developer-manual/</a>, the <span + class="APPLICATION">Privoxy</span> developer manual. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="https://sourceforge.net/projects/ijbswa/" target= + "_top">https://sourceforge.net/projects/ijbswa/</a>, the + Project Page for <span class="APPLICATION">Privoxy</span> on <a + href="http://sourceforge.net" target="_top">SourceForge</a>. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a>, the web-based user + interface. <span class="APPLICATION">Privoxy</span> must be + running for this to work. Shortcut: <a href="http://p.p/" + target="_top">http://p.p/</a> + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href= + "https://sourceforge.net/tracker/?group_id=11118&atid=460288" + target= + "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, + to submit <span class="QUOTE">"misses"</span> and other + configuration related suggestions to the developers. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.junkbusters.com/ht/en/cookies.html" target= + "_top">http://www.junkbusters.com/ht/en/cookies.html</a>, an + explanation how cookies are used to track web users. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.junkbusters.com/ijb.html" target= + "_top">http://www.junkbusters.com/ijb.html</a>, the original + Internet Junkbuster. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.squid-cache.org/" target= + "_top">http://www.squid-cache.org/</a>, a popular caching + proxy, which is often used together with <span class= + "APPLICATION">Privoxy</span>. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.pps.jussieu.fr/~jch/software/polipo/" + target= + "_top">http://www.pps.jussieu.fr/~jch/software/polipo/</a>, + <span class="APPLICATION">Polipo</span> is a caching proxy with + advanced features like pipelining, multiplexing and caching of + partial instances. In many setups it can be used as <span + class="APPLICATION">Squid</span> replacement. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="https://www.torproject.org/" target= + "_top">https://www.torproject.org/</a>, <span class= + "APPLICATION">Tor</span> can help anonymize web browsing, web + publishing, instant messaging, IRC, SSH, and other + applications. + </td> + </tr> + </tbody> + </table> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="copyright.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Privoxy Copyright, License and History + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/developer-manual/testing.html b/doc/webserver/developer-manual/testing.html index 80d3f292..bb607456 100644 --- a/doc/webserver/developer-manual/testing.html +++ b/doc/webserver/developer-manual/testing.html @@ -1,259 +1,189 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Testing Guidelines</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Coding Guidelines" -HREF="coding.html"><LINK -REL="NEXT" -TITLE="Releasing a New Version" -HREF="newrelease.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="coding.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="newrelease.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="TESTING" ->5. Testing Guidelines</A -></H1 -><P ->To be filled.</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="TESTING-PLAN" ->5.1. Testplan for releases</A -></H2 -><P -> Explain release numbers. major, minor. developer releases. etc. +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Testing Guidelines + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="Coding Guidelines" href="coding.html"> + <link rel="NEXT" title="Releasing a New Version" href="newrelease.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="coding.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="newrelease.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="TESTING">5. Testing Guidelines</a> + </h1> + <p> + To be filled. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="TESTING-PLAN">5.1. Testplan for releases</a> + </h2> + <p> + Explain release numbers. major, minor. developer releases. etc. + </p> + <ol type="1"> + <li> + <p> + Remove any existing rpm with rpm -e + </p> + </li> + <li> + <p> + Remove any file that was left over. This includes (but is not + limited to) + </p> + <ul> + <li> + <p> + /var/log/privoxy + </p> + </li> + <li> + <p> + /etc/privoxy + </p> + </li> + <li> + <p> + /usr/sbin/privoxy + </p> + </li> + <li> + <p> + /etc/init.d/privoxy + </p> + </li> + <li> + <p> + /usr/doc/privoxy* + </p> + </li> + </ul> + </li> + <li> + <p> + Install the rpm. Any error messages? + </p> + </li> + <li> + <p> + start,stop,status <span class="APPLICATION">Privoxy</span> with + the specific script (e.g. /etc/rc.d/init/privoxy stop). Reboot + your machine. Does autostart work? + </p> + </li> + <li> + <p> + Start browsing. Does <span class="APPLICATION">Privoxy</span> + work? Logfile written? + </p> + </li> + <li> + <p> + Remove the rpm. Any error messages? All files removed? + </p> + </li> + </ol> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="TESTING-REPORT">5.2. Test reports</a> + </h2> + <p> + Please submit test reports only with the <a href= + "http://sourceforge.net/tracker/?func=add&group_id=11118&atid=395005" + target="_top">test form</a> at sourceforge. Three simple steps: + </p> + <ul> + <li> + <p> + Select category: the distribution you test on. + </p> + </li> + <li> + <p> + Select group: the version of <span class= + "APPLICATION">Privoxy</span> that we are about to release. + </p> + </li> + <li> + <p> + Fill the Summary and Detailed Description with something + intelligent (keep it short and precise). + </p> + </li> + </ul> + Do not mail to the mailing list (we cannot keep track on issues + there).<br> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="coding.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="newrelease.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Coding Guidelines + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Releasing a New Version + </td> + </tr> + </table> + </div> + </body> +</html> -<P -></P -><OL -TYPE="1" -><LI -><P ->Remove any existing rpm with rpm -e</P -></LI -><LI -><P ->Remove any file that was left over. This includes (but is not limited to) - <P -></P -><UL -><LI -><P ->/var/log/privoxy</P -></LI -><LI -><P ->/etc/privoxy</P -></LI -><LI -><P ->/usr/sbin/privoxy</P -></LI -><LI -><P ->/etc/init.d/privoxy</P -></LI -><LI -><P ->/usr/doc/privoxy*</P -></LI -></UL -></P -></LI -><LI -><P ->Install the rpm. Any error messages?</P -></LI -><LI -><P ->start,stop,status <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with the specific script - (e.g. /etc/rc.d/init/privoxy stop). Reboot your machine. Does - autostart work?</P -></LI -><LI -><P ->Start browsing. Does <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> work? Logfile written?</P -></LI -><LI -><P ->Remove the rpm. Any error messages? All files removed?</P -></LI -></OL -></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="TESTING-REPORT" ->5.2. Test reports</A -></H2 -><P ->Please submit test reports only with the <A -HREF="http://sourceforge.net/tracker/?func=add&group_id=11118&atid=395005" -TARGET="_top" ->test form</A -> -at sourceforge. Three simple steps: - <P -></P -><UL -><LI -><P ->Select category: the distribution you test on.</P -></LI -><LI -><P ->Select group: the version of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> that we are about to release.</P -></LI -><LI -><P ->Fill the Summary and Detailed Description with something - intelligent (keep it short and precise).</P -></LI -></UL -> - Do not mail to the mailing list (we cannot keep track on issues there). - </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="coding.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="newrelease.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Coding Guidelines</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Releasing a New Version</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file diff --git a/doc/webserver/developer-manual/webserver-update.html b/doc/webserver/developer-manual/webserver-update.html index b54d6462..50985b83 100644 --- a/doc/webserver/developer-manual/webserver-update.html +++ b/doc/webserver/developer-manual/webserver-update.html @@ -1,260 +1,158 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Update the Webserver</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Developer Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Releasing a New Version" -HREF="newrelease.html"><LINK -REL="NEXT" -TITLE="Contacting the developers, Bug Reporting and Feature Requests" -HREF="contact.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Developer Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="newrelease.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="contact.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="WEBSERVER-UPDATE" ->7. Update the Webserver</A -></H1 -><P -> The webserver should be updated at least with each stable release. When - updating, please follow these steps to make sure that no broken links, - inconsistent contents or permission problems will occur (as it has many - times in the past!): - </P -><P -> If you have changed anything in the stable-branch documentation source - SGML files, do: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> make dok dok-pdf # (or 'make redhat-dok dok-pdf' if 'make dok' doesn't work for you)</PRE -></TD -></TR -></TABLE -> - </P -><P -> That will generate <TT -CLASS="FILENAME" ->doc/webserver/user-manual</TT ->, - <TT -CLASS="FILENAME" ->doc/webserver/developer-manual</TT ->, - <TT -CLASS="FILENAME" ->doc/webserver/faq</TT ->, - <TT -CLASS="FILENAME" ->doc/pdf/*.pdf</TT -> and - <TT -CLASS="FILENAME" ->doc/webserver/index.html</TT -> automatically. - </P -><P -> If you changed the manual page sources, generate - <TT -CLASS="FILENAME" ->doc/webserver/man-page/privoxy-man-page.html</TT -> - by running <SPAN -CLASS="QUOTE" ->"<B -CLASS="COMMAND" ->make man</B ->"</SPAN ->. (This is - a separate target due to dependencies on some obscure perl scripts - [now in CVS, but not well tested]. See comments in <TT -CLASS="FILENAME" ->GNUmakefile</TT ->.) - </P -><P -> If you want to add new files to the webserver, create them locally in - the <TT -CLASS="FILENAME" ->doc/webserver/*</TT -> directory (or - create new directories under <TT -CLASS="FILENAME" ->doc/webserver</TT ->). - </P -><P -> Next, commit any changes from the above steps to CVS. All set? - If these are docs in the stable branch, then do: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> make webserver</PRE -></TD -></TR -></TABLE -> - </P -><P -> This will do the upload to <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->the - webserver</A -> (www.privoxy.org) and ensure all files and directories - there are group writable. - </P -><P -> Please do <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->NOT</I -></SPAN -> use any other means of transferring - files to the webserver to avoid permission problems. Also, please do not - upload docs from development branches or versions. The publicly posted - docs should be in sync with the last official release. - </P -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="newrelease.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="contact.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Releasing a New Version</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Contacting the developers, Bug Reporting and Feature Requests</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Update the Webserver + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Developer Manual" href="index.html"> + <link rel="PREVIOUS" title="Releasing a New Version" href= + "newrelease.html"> + <link rel="NEXT" title= + "Contacting the developers, Bug Reporting and Feature Requests" href= + "contact.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Developer Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="newrelease.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="contact.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="WEBSERVER-UPDATE">7. Update the Webserver</a> + </h1> + <p> + The webserver should be updated at least with each stable release. + When updating, please follow these steps to make sure that no broken + links, inconsistent contents or permission problems will occur (as it + has many times in the past!): + </p> + <p> + If you have changed anything in the stable-branch documentation + source SGML files, do: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + make dok dok-pdf # (or 'make redhat-dok dok-pdf' if 'make dok' doesn't work for you) +</pre> + </td> + </tr> + </table> + + <p> + That will generate <tt class= + "FILENAME">doc/webserver/user-manual</tt>, <tt class= + "FILENAME">doc/webserver/developer-manual</tt>, <tt class= + "FILENAME">doc/webserver/faq</tt>, <tt class= + "FILENAME">doc/pdf/*.pdf</tt> and <tt class= + "FILENAME">doc/webserver/index.html</tt> automatically. + </p> + <p> + If you changed the manual page sources, generate <tt class= + "FILENAME">doc/webserver/man-page/privoxy-man-page.html</tt> by + running <span class="QUOTE">"<b class="COMMAND">make man</b>"</span>. + (This is a separate target due to dependencies on some obscure perl + scripts [now in CVS, but not well tested]. See comments in <tt class= + "FILENAME">GNUmakefile</tt>.) + </p> + <p> + If you want to add new files to the webserver, create them locally in + the <tt class="FILENAME">doc/webserver/*</tt> directory (or create + new directories under <tt class="FILENAME">doc/webserver</tt>). + </p> + <p> + Next, commit any changes from the above steps to CVS. All set? If + these are docs in the stable branch, then do: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + make webserver +</pre> + </td> + </tr> + </table> + + <p> + This will do the upload to <a href="http://www.privoxy.org/" target= + "_top">the webserver</a> (www.privoxy.org) and ensure all files and + directories there are group writable. + </p> + <p> + Please do <span class="emphasis"><i class="EMPHASIS">NOT</i></span> + use any other means of transferring files to the webserver to avoid + permission problems. Also, please do not upload docs from development + branches or versions. The publicly posted docs should be in sync with + the last official release. + </p> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="newrelease.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="contact.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Releasing a New Version + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Contacting the developers, Bug Reporting and Feature Requests + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/faq/configuration.html b/doc/webserver/faq/configuration.html index 77c28e0a..2c19d28e 100644 --- a/doc/webserver/faq/configuration.html +++ b/doc/webserver/faq/configuration.html @@ -1,1770 +1,1027 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Configuration</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Frequently Asked Questions" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Installation" -HREF="installation.html"><LINK -REL="NEXT" -TITLE="Miscellaneous" -HREF="misc.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Frequently Asked Questions</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="installation.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="misc.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="CONFIGURATION" ->3. Configuration</A -></H1 -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN360" ->3.1. What exactly is an <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> file?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> utilizes the concept of <SPAN -CLASS="QUOTE" ->" <A -HREF="../user-manual/actions-file.html#ACTIONS" -TARGET="_top" ->actions</A ->"</SPAN -> - that are used to manipulate and control web page data. - <A -HREF="../user-manual/actions-file.html" -TARGET="_top" ->Actions files</A -> - are where these <A -HREF="../user-manual/actions-file.html#ACTIONS" -TARGET="_top" ->actions</A -> - that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> could take while processing a certain - request, are configured. Typically, you would define a set of default actions - that apply globally to all URLs, then add exceptions to these defaults where needed. - There is a wide array of actions available that give the user a high degree - of control and flexibility on how to process each and every web page.</P -><P -> Actions can be defined on a <A -HREF="../user-manual/actions-file.html#AF-PATTERNS" -TARGET="_top" ->URL pattern</A -> basis, i.e. - for single URLs, whole web sites, groups or parts thereof etc. Actions can also be - grouped together and then applied to requests matching one or more patterns. - There are many possible actions that might apply to any given site. As an example, - if you are blocking <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->cookies</A -> - as one of your default actions, but need to accept cookies from a given site, - you would need to define an exception for this site in one of your actions - files, preferably in <TT -CLASS="FILENAME" ->user.action</TT ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="ACTIONSS" ->3.2. The <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> concept confuses me. Please list -some of these <SPAN -CLASS="QUOTE" ->"actions"</SPAN ->.</A -></H3 -><P -> For a comprehensive discussion of the actions concept, please refer - to the <A -HREF="../user-manual/actions-file.html" -TARGET="_top" ->actions file - chapter</A -> in the <A -HREF="../user-manual/index.html" -TARGET="_top" ->User - Manual</A ->. It includes a <A -HREF="../user-manual/actions-file.html#ACTIONS" -TARGET="_top" ->list of all actions</A -> - and an <A -HREF="../user-manual/actions-file.html#ACT-EXAMPLES" -TARGET="_top" ->actions - file tutorial</A -> to get you started.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN383" ->3.3. How are actions files configured? What is the easiest -way to do this?</A -></H3 -><P -> Actions files are just text files in a special syntax and can be edited - with a text editor. But probably the easiest way is to access - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s user interface with your web browser - at <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A -> - (Shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A ->) and then select - <SPAN -CLASS="QUOTE" ->"<A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->View & - change the current configuration</A ->"</SPAN -> from the menu. Note - that this feature must be explicitly enabled in the main config file - (see <A -HREF="../user-manual/config.html#ENABLE-EDIT-ACTIONS" -TARGET="_top" ->enable-edit-actions</A ->).</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN392" ->3.4. There are several different <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> files. What are -the differences?</A -></H3 -><P -> Please have a look at the <A -HREF="../user-manual/actions-file.html" -TARGET="_top" ->the actions chapter</A -> - in the <A -HREF="../user-manual/index.html" -TARGET="_top" ->User Manual</A -> for a detailed explanation.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="GETUPDATES" ->3.5. Where can I get updated Actions Files?</A -></H3 -><P -> Based on your feedback and the continuing development, updates of - <TT -CLASS="FILENAME" ->default.action</TT -> will be - made available from time to time on the <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->files section</A -> of - our <A -HREF="http://sf.net/projects/ijbswa/" -TARGET="_top" ->project page</A ->. - </P -><P -> If you wish to receive an email notification whenever we release updates of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> or the actions file, <A -HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-announce/" -TARGET="_top" ->subscribe - to our announce mailing list</A ->, ijbswa-announce@lists.sourceforge.net. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NEWCONFIG" ->3.6. Can I use my old config files?</A -></H3 -><P -> The syntax and purpose of configuration files has remained roughly the - same throughout the 3.x series, but backwards compatibility is not guaranteed. - Also each release contains updated, <SPAN -CLASS="QUOTE" ->"improved"</SPAN -> versions and it is - therefore strongly recommended to install the newer configuration files - and merge back your modifications. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DIFFICULT" ->3.7. Why is the configuration so complicated?</A -></H3 -><P -> <SPAN -CLASS="QUOTE" ->"Complicated"</SPAN -> is in the eye of the beholder. Those that are - familiar with some of the underlying concepts, such as regular expression - syntax, take to it like a fish takes to water. Also, software that tries - hard to be <SPAN -CLASS="QUOTE" ->"user friendly"</SPAN ->, often lacks sophistication and - flexibility. There is always that trade-off there between power vs. - easy-of-use. Furthermore, anyone is welcome to contribute ideas and - implementations to enhance <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="YAHOO" ->3.8. How can I make my Yahoo/Hotmail/Gmail account work?</A -></H3 -><P -> The default configuration shouldn't impact the usability of any of these services. - It may, however, make all <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->cookies</A -> - temporary, so that your browser will forget your - login credentials in between browser sessions. If you would like not to have to log - in manually each time you access those websites, simply turn off all cookie handling - for them in the <TT -CLASS="FILENAME" ->user.action</TT -> file. An example for yahoo might - look like: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Allow all cookies for Yahoo login: +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Configuration + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Frequently Asked Questions" href= + "index.html"> + <link rel="PREVIOUS" title="Installation" href="installation.html"> + <link rel="NEXT" title="Miscellaneous" href="misc.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Frequently Asked Questions + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="installation.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="misc.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="CONFIGURATION">3. Configuration</a> + </h1> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN360">3.1. What exactly is an <span class= + "QUOTE">"actions"</span> file?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> utilizes the concept of + <span class="QUOTE">" <a href= + "../user-manual/actions-file.html#ACTIONS" target= + "_top">actions</a>"</span> that are used to manipulate and control + web page data. <a href="../user-manual/actions-file.html" target= + "_top">Actions files</a> are where these <a href= + "../user-manual/actions-file.html#ACTIONS" target= + "_top">actions</a> that <span class="APPLICATION">Privoxy</span> + could take while processing a certain request, are configured. + Typically, you would define a set of default actions that apply + globally to all URLs, then add exceptions to these defaults where + needed. There is a wide array of actions available that give the + user a high degree of control and flexibility on how to process + each and every web page. + </p> + <p> + Actions can be defined on a <a href= + "../user-manual/actions-file.html#AF-PATTERNS" target="_top">URL + pattern</a> basis, i.e. for single URLs, whole web sites, groups or + parts thereof etc. Actions can also be grouped together and then + applied to requests matching one or more patterns. There are many + possible actions that might apply to any given site. As an example, + if you are blocking <a href= + "http://en.wikipedia.org/wiki/Browser_cookie" target= + "_top">cookies</a> as one of your default actions, but need to + accept cookies from a given site, you would need to define an + exception for this site in one of your actions files, preferably in + <tt class="FILENAME">user.action</tt>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="ACTIONSS">3.2. The <span class="QUOTE">"actions"</span> + concept confuses me. Please list some of these <span class= + "QUOTE">"actions"</span>.</a> + </h3> + <p> + For a comprehensive discussion of the actions concept, please refer + to the <a href="../user-manual/actions-file.html" target= + "_top">actions file chapter</a> in the <a href= + "../user-manual/index.html" target="_top">User Manual</a>. It + includes a <a href="../user-manual/actions-file.html#ACTIONS" + target="_top">list of all actions</a> and an <a href= + "../user-manual/actions-file.html#ACT-EXAMPLES" target= + "_top">actions file tutorial</a> to get you started. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN383">3.3. How are actions files configured? What is the + easiest way to do this?</a> + </h3> + <p> + Actions files are just text files in a special syntax and can be + edited with a text editor. But probably the easiest way is to + access <span class="APPLICATION">Privoxy</span>'s user interface + with your web browser at <a href="http://config.privoxy.org/" + target="_top">http://config.privoxy.org/</a> (Shortcut: <a href= + "http://p.p/" target="_top">http://p.p/</a>) and then select <span + class="QUOTE">"<a href="http://config.privoxy.org/show-status" + target="_top">View & change the current + configuration</a>"</span> from the menu. Note that this feature + must be explicitly enabled in the main config file (see <a href= + "../user-manual/config.html#ENABLE-EDIT-ACTIONS" target= + "_top">enable-edit-actions</a>). + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN392">3.4. There are several different <span class= + "QUOTE">"actions"</span> files. What are the differences?</a> + </h3> + <p> + Please have a look at the <a href= + "../user-manual/actions-file.html" target="_top">the actions + chapter</a> in the <a href="../user-manual/index.html" target= + "_top">User Manual</a> for a detailed explanation. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="GETUPDATES">3.5. Where can I get updated Actions + Files?</a> + </h3> + <p> + Based on your feedback and the continuing development, updates of + <tt class="FILENAME">default.action</tt> will be made available + from time to time on the <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">files section</a> of our <a href= + "http://sf.net/projects/ijbswa/" target="_top">project page</a>. + </p> + <p> + If you wish to receive an email notification whenever we release + updates of <span class="APPLICATION">Privoxy</span> or the actions + file, <a href= + "http://lists.sourceforge.net/lists/listinfo/ijbswa-announce/" + target="_top">subscribe to our announce mailing list</a>, + ijbswa-announce@lists.sourceforge.net. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NEWCONFIG">3.6. Can I use my old config files?</a> + </h3> + <p> + The syntax and purpose of configuration files has remained roughly + the same throughout the 3.x series, but backwards compatibility is + not guaranteed. Also each release contains updated, <span class= + "QUOTE">"improved"</span> versions and it is therefore strongly + recommended to install the newer configuration files and merge back + your modifications. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DIFFICULT">3.7. Why is the configuration so + complicated?</a> + </h3> + <p> + <span class="QUOTE">"Complicated"</span> is in the eye of the + beholder. Those that are familiar with some of the underlying + concepts, such as regular expression syntax, take to it like a fish + takes to water. Also, software that tries hard to be <span class= + "QUOTE">"user friendly"</span>, often lacks sophistication and + flexibility. There is always that trade-off there between power vs. + easy-of-use. Furthermore, anyone is welcome to contribute ideas and + implementations to enhance <span class= + "APPLICATION">Privoxy</span>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="YAHOO">3.8. How can I make my Yahoo/Hotmail/Gmail account + work?</a> + </h3> + <p> + The default configuration shouldn't impact the usability of any of + these services. It may, however, make all <a href= + "http://en.wikipedia.org/wiki/Browser_cookie" target= + "_top">cookies</a> temporary, so that your browser will forget your + login credentials in between browser sessions. If you would like + not to have to log in manually each time you access those websites, + simply turn off all cookie handling for them in the <tt class= + "FILENAME">user.action</tt> file. An example for yahoo might look + like: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Allow all cookies for Yahoo login: # -{ -<A -HREF="../user-manual/actions-file.html#CRUNCH-INCOMING-COOKIES" -TARGET="_top" ->crunch-incoming-cookies</A -> -<A -HREF="../user-manual/actions-file.html#CRUNCH-OUTGOING-COOKIES" -TARGET="_top" ->crunch-outgoing-cookies</A -> -<A -HREF="../user-manual/actions-file.html#SESSION-COOKIES-ONLY" -TARGET="_top" ->session-cookies-only</A -> } -.login.yahoo.com</PRE -></TD -></TR -></TABLE -> - </P -><P -> These kinds of sites are often quite complex and heavy with - <A -HREF="http://en.wikipedia.org/wiki/Javascript" -TARGET="_top" ->Javascript</A -> and - thus <SPAN -CLASS="QUOTE" ->"fragile"</SPAN ->. So if <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->still</I -></SPAN -> a problem, - we have an <A -HREF="../user-manual/actions-file.html#ALIASES" -TARGET="_top" ->alias</A -> just for such - sticky situations: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Gmail is a _fragile_ site: +{ -<a href="../user-manual/actions-file.html#CRUNCH-INCOMING-COOKIES" target= +"_top">crunch-incoming-cookies</a> -<a href= +"../user-manual/actions-file.html#CRUNCH-OUTGOING-COOKIES" target= +"_top">crunch-outgoing-cookies</a> -<a href= +"../user-manual/actions-file.html#SESSION-COOKIES-ONLY" target= +"_top">session-cookies-only</a> } +.login.yahoo.com +</pre> + </td> + </tr> + </table> + + <p> + These kinds of sites are often quite complex and heavy with <a + href="http://en.wikipedia.org/wiki/Javascript" target= + "_top">Javascript</a> and thus <span class= + "QUOTE">"fragile"</span>. So if <span class="emphasis"><i class= + "EMPHASIS">still</i></span> a problem, we have an <a href= + "../user-manual/actions-file.html#ALIASES" target="_top">alias</a> + just for such sticky situations: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Gmail is a _fragile_ site: # -{ <TT -CLASS="LITERAL" ->fragile</TT -> } +{ <tt class="LITERAL">fragile</tt> } # Gmail is ... - mail.google.com</PRE -></TD -></TR -></TABLE -> - </P -><P -> Be sure to flush your browser's caches whenever making these kinds of - changes, just to make sure the changes <SPAN -CLASS="QUOTE" ->"take"</SPAN ->. - </P -><P -> Make sure the domain, host and path are appropriate as well. Your browser can - tell you where you are specifically and you should use that information for - your configuration settings. Note that above it is not referenced as - <TT -CLASS="LITERAL" ->gmail.com</TT ->, which is a valid domain name. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="CONFIGFILES" ->3.9. What's the difference between the -<SPAN -CLASS="QUOTE" ->"Cautious"</SPAN ->, <SPAN -CLASS="QUOTE" ->"Medium"</SPAN -> and <SPAN -CLASS="QUOTE" ->"Advanced"</SPAN -> defaults?</A -></H3 -><P -> Configuring <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is not entirely trivial. To - help you get started, we provide you with three different default action - <SPAN -CLASS="QUOTE" ->"profiles"</SPAN -> in the web based actions file editor at <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A ->. - See the <A -HREF="../user-manual/actions-file.html" -TARGET="_top" -><I -CLASS="CITETITLE" ->User - Manual</I -></A -> for a list of actions, and how the default - profiles are set. - </P -><P -> Where the defaults are likely to break some sites, exceptions for - known popular <SPAN -CLASS="QUOTE" ->"problem"</SPAN -> sites are included, but in - general, the more aggressive your default settings are, the more exceptions - you will have to make later. New users are best to start off in - <SPAN -CLASS="QUOTE" ->"Cautious"</SPAN -> setting. This is safest and will have the fewest - problems. See the <A -HREF="../user-manual/index.html" -TARGET="_top" -><I -CLASS="CITETITLE" ->User Manual</I -></A -> - for a more detailed discussion.</P -><P -> It should be noted that the <SPAN -CLASS="QUOTE" ->"Advanced"</SPAN -> profile (formerly known - as the <SPAN -CLASS="QUOTE" ->"Adventuresome"</SPAN -> profile) is more - aggressive, and will make use of some of - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> advanced features. Use at your own risk!</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="BROWSECONFIG" ->3.10. Why can I change the configuration -with a browser? Does that not raise security issues?</A -></H3 -><P -> It may seem strange that regular users can edit the config files with their - browsers, although the whole <TT -CLASS="FILENAME" ->/etc/privoxy</TT -> hierarchy - belongs to the user <SPAN -CLASS="QUOTE" ->"privoxy"</SPAN ->, with only 644 permissions. - </P -><P -> When you use the browser-based editor, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - itself is writing to the config files. Because - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is running as the user <SPAN -CLASS="QUOTE" ->"privoxy"</SPAN ->, - it can update its own config files. - </P -><P -> If you run <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> for multiple untrusted users (e.g. in - a LAN) or aren't entirely in control of your own browser, you will probably want - to make sure that the web-based editor and remote toggle features are - <SPAN -CLASS="QUOTE" ->"off"</SPAN -> by setting <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" -><A -HREF="../user-manual/config.html#ENABLE-EDIT-ACTIONS" -TARGET="_top" ->enable-edit-actions</A -> - 0</TT ->"</SPAN -> and <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" -><A -HREF="../user-manual/config.html#ENABLE-REMOTE-TOGGLE" -TARGET="_top" ->enable-remote-toggle</A -> - 0</TT ->"</SPAN -> in the <A -HREF="../user-manual/config.html" -TARGET="_top" ->main configuration file</A ->. - </P -><P -> As of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.7 these options are disabled by default. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN480" ->3.11. What is the <TT -CLASS="FILENAME" ->default.filter</TT -> file? What is a <SPAN -CLASS="QUOTE" ->"filter"</SPAN ->?</A -></H3 -><P -> The <A -HREF="../user-manual/filter-file.html" -TARGET="_top" -><TT -CLASS="FILENAME" ->default.filter</TT -></A -> - file is where <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->filters</I -></SPAN -> as supplied by the developers are defined. - Filters are a special subset of actions that can be used to modify or - remove web page content or headers on the fly. Content filters can - be applied to <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->anything</I -></SPAN -> in the page source, - header filters can be applied to either server or client headers. - Regular expressions are used to accomplish this.</P -><P -> There are a number of pre-defined filters to deal with common annoyances. The - filters are only defined here, to invoke them, you need to use the - <A -HREF="../user-manual/actions-file.html#FILTER" -TARGET="_top" -><TT -CLASS="LITERAL" ->filter</TT -> - action</A -> in one of the actions files. Content filtering is automatically - disabled for inappropriate MIME types, but if you know better than Privoxy - what should or should not be filtered you can filter any content you like.</P -><P -> Filters should - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not</I -></SPAN -> be confused with <A -HREF="../user-manual/actions-file.html#BLOCK" -TARGET="_top" -><TT -CLASS="LITERAL" ->blocks</TT -></A ->, which - is a completely different action, and is more typically used to block ads and - unwanted sites.</P -><P -> If you are familiar with regular expressions, and HTML, you can look at - the provided <TT -CLASS="FILENAME" ->default.filter</TT -> with a text editor and define - your own filters. This is potentially a very powerful feature, but - requires some expertise in both regular expressions and HTML/HTTP. - You should - place any modifications to the default filters, or any new ones you create - in a separate file, such as <TT -CLASS="FILENAME" ->user.filter</TT ->, so they won't - be overwritten during upgrades. - The ability to define multiple filter files - in <TT -CLASS="FILENAME" ->config</TT -> is a new feature as of v. 3.0.5.</P -><P -> There is no GUI editor option for this part of the configuration, - but you can disable/enable the various pre-defined filters of the included - <TT -CLASS="FILENAME" ->default.filter</TT -> file with the <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->web-based actions file editor</A ->. - Note that the custom actions editor must be explicitly enabled in - the main config file (see <A -HREF="../user-manual/config.html#ENABLE-EDIT-ACTIONS" -TARGET="_top" ->enable-edit-actions</A ->).</P -><P -> If you intend to develop your own filters, you might want to have a look at - <A -HREF="http://www.fabiankeil.de/sourcecode/pft/" -TARGET="_top" ->Privoxy-Filter-Test</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="LANCONFIG" ->3.12. How can I set up Privoxy to act as a proxy for my - LAN?</A -></H3 -><P -> By default, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> only responds to requests - from <TT -CLASS="LITERAL" ->127.0.0.1</TT -> (localhost). To have it act as a server for - a network, this needs to be changed in the <A -HREF="../user-manual/config.html" -TARGET="_top" ->main configuration file</A ->. Look for - the <TT -CLASS="LITERAL" -><A -HREF="../user-manual/config.html#LISTEN-ADDRESS" -TARGET="_top" ->listen-address</A -></TT -> - option, which may be commented out with a <SPAN -CLASS="QUOTE" ->"#"</SPAN -> symbol. Make sure - it is uncommented, and assign it the address of the LAN gateway interface, - and port number to use. Assuming your LAN address is 192.168.1.1 and you - wish to run <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on port 8118, this line - should look like:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> listen-address 192.168.1.1:8118</PRE -></TD -></TR -></TABLE -></P -><P -> Save the file, and restart <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. Configure - all browsers on the network then to use this address and port number.</P -><P -> Alternately, you can have <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> listen on - all available interfaces:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> listen-address :8118</PRE -></TD -></TR -></TABLE -></P -><P -> And then use <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - <A -HREF="../user-manual/config.html#PERMIT-ACCESS" -TARGET="_top" ->permit-access</A -> - feature to limit connections. A firewall in this situation is recommended - as well.</P -><P -> The above steps should be the same for any TCP network, regardless of - operating system.</P -><P -> If you run <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on a LAN with untrusted users, - we recommend that you double-check the <A -HREF="../user-manual/config.html#ACCESS-CONTROL" -TARGET="_top" ->access control and security</A -> - options!</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN531" ->3.13. Instead of ads, now I get a checkerboard pattern. I don't want to see anything.</A -></H3 -><P -> The replacement for blocked images can be controlled with the <A -HREF="../user-manual/actions-file.html#SET-IMAGE-BLOCKER" -TARGET="_top" -><TT -CLASS="LITERAL" ->set-image-blocker</TT -> - action</A ->. You have the choice of a checkerboard pattern, a transparent 1x1 GIF - image (aka <SPAN -CLASS="QUOTE" ->"blank"</SPAN ->), or a redirect to a custom image of your choice. - Note that this choice only has effect for images which are blocked as images, i.e. - whose URLs match both a <TT -CLASS="LITERAL" -><A -HREF="../user-manual/actions-file.html#HANDLE-AS-IMAGE" -TARGET="_top" ->handle-as-image</A -></TT -> - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->and</I -></SPAN -> <TT -CLASS="LITERAL" -><A -HREF="../user-manual/actions-file.html#BLOCK" -TARGET="_top" ->block</A -></TT -> action.</P -><P -> If you want to see nothing, then change the <A -HREF="../user-manual/actions-file.html#SET-IMAGE-BLOCKER" -TARGET="_top" -><TT -CLASS="LITERAL" ->set-image-blocker</TT -> - action</A -> to <SPAN -CLASS="QUOTE" ->"blank"</SPAN ->. This can be done by editing the - <TT -CLASS="FILENAME" ->user.action</TT -> file, or through the <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->web-based actions file editor</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN548" ->3.14. Why would anybody want to see a checkerboard pattern?</A -></H3 -><P -> Remember that <A -HREF="general.html#WHATSANAD" ->telling which image is an ad and which - isn't</A ->, is an educated guess. While we hope that the standard configuration - is rather smart, it will make occasional mistakes. The checkerboard image is visually - decent, and it shows you where images have been blocked, which can be very - helpful in case some navigation aid or otherwise innocent image was - erroneously blocked. It is recommended for new users so they can - <SPAN -CLASS="QUOTE" ->"see"</SPAN -> what is happening. Some people might also enjoy seeing how - many banners they <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->don't</I -></SPAN -> have to see.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN554" ->3.15. I see some images being replaced with text -instead of the checkerboard image. Why and how do I get rid of this?</A -></H3 -><P -> This happens when the banners are not embedded in the HTML code of the - page itself, but in separate HTML (sub)documents that are loaded into (i)frames - or (i)layers, and these external HTML documents are blocked. Being non-images - they get replaced by a substitute HTML page rather than a substitute image, - which wouldn't work out technically, since the browser expects and accepts - only HTML when it has requested an HTML document. </P -><P -> The substitute page adapts to the available space and shows itself as a - miniature two-liner if loaded into small frames, or full-blown with a - large red "BLOCKED" banner if space allows.</P -><P -> If you prefer the banners to be blocked by images, you must see to it that - the HTML documents in which they are embedded are not blocked. Clicking - the <SPAN -CLASS="QUOTE" ->"See why"</SPAN -> link offered in the substitute page will show - you which rule blocked the page. After changing the rule and un-blocking - the HTML documents, the browser will try to load the actual banner images - and the usual image blocking will (hopefully!) kick in.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="SRVANY" ->3.16. Can Privoxy run as a service -on Win2K/NT/XP?</A -></H3 -><P -> Yes. Version 3.0.5 introduces full <SPAN -CLASS="APPLICATION" ->Windows</SPAN -> service - functionality. See <A -HREF="../user-manual/installation.html#installation-pack-win" -TARGET="_top" -> the <I -CLASS="CITETITLE" ->User Manual</I -></A -> for details on how to install and configure - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> as a service.</P -><P -> Earlier 3.x versions could run as a system service using <B -CLASS="COMMAND" ->srvany.exe</B ->. - See the discussion at <A -HREF="http://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id=11118" -TARGET="_top" ->http://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id=11118</A ->, - for details, and a sample configuration.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="OTHERPROXY" ->3.17. How can I make Privoxy work with other proxies?</A -></H3 -><P -> This can be done and is often useful to combine the benefits of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with those of a another proxy, - for example to cache content. - See the <A -HREF="../user-manual/config.html#FORWARDING" -TARGET="_top" ->forwarding chapter</A -> - in the <A -HREF="../user-manual/index.html" -TARGET="_top" ->User Manual</A -> which - describes how to do this. If you intend to use Privoxy with Tor, - please also have a look at - <A -HREF="misc.html#TOR" ->How do I use Privoxy together with Tor</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="PORT-80" ->3.18. Can I just set Privoxy to use port 80 -and thus avoid individual browser configuration?</A -></H3 -><P -> No, its more complicated than that. This only works with special kinds - of proxies known as <SPAN -CLASS="QUOTE" ->"intercepting"</SPAN -> proxies - (<A -HREF="configuration.html#INTERCEPTING" ->see below</A ->).</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="TRANSPARENT" ->3.19. Can Privoxy run as a <SPAN -CLASS="QUOTE" ->"transparent"</SPAN -> proxy?</A -></H3 -><P -> The whole idea of Privoxy is to modify client requests - and server responses in all sorts of ways and therefore - it's not a transparent proxy as described in - <A -HREF="http://tools.ietf.org/html/rfc2616" -TARGET="_top" ->RFC 2616</A ->.</P -><P -> However, some people say <SPAN -CLASS="QUOTE" ->"transparent proxy"</SPAN -> when they - mean <SPAN -CLASS="QUOTE" ->"intercepting proxy"</SPAN ->. If you are one of them, - please read the <A -HREF="configuration.html#INTERCEPTING" ->next entry</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="INTERCEPTING" ->3.20. Can Privoxy run as a <SPAN -CLASS="QUOTE" ->"intercepting"</SPAN -> proxy?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can't intercept traffic itself, - but it can handle requests that where intercepted and redirected - with a packet filter (like <SPAN -CLASS="APPLICATION" ->PF</SPAN -> or - <SPAN -CLASS="APPLICATION" ->iptables</SPAN ->), as long as the <TT -CLASS="LITERAL" ->Host</TT -> - header is present. - </P -><P -> As the <TT -CLASS="LITERAL" ->Host</TT -> header is required by HTTP/1.1 and as most - web sites rely on it anyway, this limitation shouldn't be a problem.</P -><P -> Please refer to your packet filter's documentation to learn how to - intercept and redirect traffic into <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - Afterward you just have to configure <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to - <A -HREF="../user-manual/config.html#ACCEPT-INTERCEPTED-REQUESTS" -TARGET="_top" ->accept - intercepted requests</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="OUTLOOK" ->3.21. How can I configure Privoxy for use with Outlook?</A -></H3 -><P -> Versions of <SPAN -CLASS="APPLICATION" ->Outlook</SPAN -> prior to Office 2007, use - <SPAN -CLASS="APPLICATION" ->Internet Explorer</SPAN -> components to both render HTML, - and fetch any HTTP requests that may be embedded in an HTML email. So however - you have <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> configured to work with IE, this - configuration should automatically be shared, at least with older version of - Internet Explorer.</P -><P -> Starting with Office 2007, Microsoft is instead using the MS-Word rendering - engine with Outlook. It is unknown whether this can be configured to use a - proxy. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="OUTLOOK-MORE" ->3.22. How can I have separate rules just for HTML mail?</A -></H3 -><P -> The short answer is, you can't. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has no way - of knowing which particular application makes a request, so there is no way to - distinguish between web pages and HTML mail. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> just blindly proxies all requests. In the - case of <SPAN -CLASS="APPLICATION" ->Outlook Express</SPAN -> (see above), OE uses - IE anyway, and there is no way for <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to ever - be able to distinguish between them (nor could any other proxy type application for - that matter).</P -><P -> For a good discussion of some of the issues involved (including privacy and - security issues), see - <A -HREF="http://sourceforge.net/tracker/?func=detail&atid=211118&aid=629518&group_id=11118" -TARGET="_top" ->http://sourceforge.net/tracker/?func=detail&atid=211118&aid=629518&group_id=11118</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="SNEAKY-COOKIES" ->3.23. I sometimes notice cookies sneaking through. How?</A -></H3 -><P -> <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->Cookies</A -> can be - set in several ways. The classic method is via the - <TT -CLASS="LITERAL" ->Set-Cookie</TT -> HTTP header. This is straightforward, and an - easy one to manipulate, such as the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> concept of - <A -HREF="../user-manual/actions-file.html#SESSION-COOKIES-ONLY" -TARGET="_top" ->session-cookies-only</A ->. - There is also the possibility of using - <A -HREF="http://en.wikipedia.org/wiki/Javascript" -TARGET="_top" ->Javascript</A -> to - set cookies (<SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> calls these <TT -CLASS="LITERAL" ->content-cookies</TT ->). This - is trickier because the syntax can vary widely, and thus requires a certain - amount of guesswork. It is not realistic to catch all of these short of - disabling Javascript, which would break many sites. And lastly, if the - cookies are embedded in a HTTPS/SSL secure session via Javascript, they are beyond - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> reach.</P -><P -> All in all, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can help manage cookies in general, can help minimize - the loss of privacy posed by cookies, but can't realistically stop all - cookies.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="EVIL-COOKIES" ->3.24. Are all cookies bad? Why?</A -></H3 -><P -> No, in fact there are many beneficial uses of - <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->cookies</A ->. Cookies are just a - method that browsers can use to store data between pages, or between browser - sessions. Sometimes there is a good reason for this, and the user's life is a - bit easier as a result. But there is a long history of some websites taking - advantage of this layer of trust, and using the data they glean from you and - your browsing habits for their own purposes, and maybe to your potential - detriment. Such sites are using you and storing their data on your system. - That is why the privacy conscious watch from whom those cookies come, and why - they really <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->need</I -></SPAN -> to be there.</P -><P -> See the - <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->Wikipedia cookie - definition</A -> for more.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="ALLOW-COOKIES" ->3.25. How can I allow permanent cookies for my trusted sites?</A -></H3 -><P -> There are several actions that relate to cookies. The default behavior is to - allow only <SPAN -CLASS="QUOTE" ->"session cookies"</SPAN ->, which means the cookies only last - for the current browser session. This eliminates most kinds of abuse related - to cookies. But there may be cases where you want cookies to last.</P -><P -> To disable all cookie actions, so that cookies are allowed unrestricted, - both in and out, for <TT -CLASS="LITERAL" ->example.com</TT ->: </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { -crunch-incoming-cookies -crunch-outgoing-cookies -session-cookies-only -filter{content-cookies} } - .example.com</PRE -></TD -></TR -></TABLE -></P -><P -> Place the above in <TT -CLASS="FILENAME" ->user.action</TT ->. Note that some of these may - be off by default anyway, so this might be redundant, but there is no harm - being explicit in what you want to happen. <TT -CLASS="FILENAME" ->user.action</TT -> - includes an alias for this situation, called - <TT -CLASS="LITERAL" ->allow-all-cookies</TT ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="MULTIPLES" ->3.26. Can I have separate configurations for different users?</A -></H3 -><P -> Each instance of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has its own - configuration, including such attributes as the TCP port that it listens on. - What you can do is run multiple instances of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, each with - a unique - <A -HREF="../user-manual/config.html#LISTEN-ADDRESS" -TARGET="_top" ->listen-address</A -> - configuration setting, and configuration path, and then - each of these can have their own configurations. Think of it as per-port - configuration.</P -><P -> - Simple enough for a few users, but for large installations, consider having - groups of users that might share like configurations.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="WHITELISTS" ->3.27. Can I set-up Privoxy as a whitelist of -<SPAN -CLASS="QUOTE" ->"good"</SPAN -> sites?</A -></H3 -><P -> Sure. There are a couple of things you can do for simple white-listing. - Here's one real easy one:</P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> ############################################################ + mail.google.com +</pre> + </td> + </tr> + </table> + + <p> + Be sure to flush your browser's caches whenever making these kinds + of changes, just to make sure the changes <span class= + "QUOTE">"take"</span>. + </p> + <p> + Make sure the domain, host and path are appropriate as well. Your + browser can tell you where you are specifically and you should use + that information for your configuration settings. Note that above + it is not referenced as <tt class="LITERAL">gmail.com</tt>, which + is a valid domain name. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="CONFIGFILES">3.9. What's the difference between the <span + class="QUOTE">"Cautious"</span>, <span class= + "QUOTE">"Medium"</span> and <span class="QUOTE">"Advanced"</span> + defaults?</a> + </h3> + <p> + Configuring <span class="APPLICATION">Privoxy</span> is not + entirely trivial. To help you get started, we provide you with + three different default action <span class= + "QUOTE">"profiles"</span> in the web based actions file editor at + <a href="http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a>. See the <a href= + "../user-manual/actions-file.html" target="_top"><i class= + "CITETITLE">User Manual</i></a> for a list of actions, and how the + default profiles are set. + </p> + <p> + Where the defaults are likely to break some sites, exceptions for + known popular <span class="QUOTE">"problem"</span> sites are + included, but in general, the more aggressive your default settings + are, the more exceptions you will have to make later. New users are + best to start off in <span class="QUOTE">"Cautious"</span> setting. + This is safest and will have the fewest problems. See the <a href= + "../user-manual/index.html" target="_top"><i class="CITETITLE">User + Manual</i></a> for a more detailed discussion. + </p> + <p> + It should be noted that the <span class="QUOTE">"Advanced"</span> + profile (formerly known as the <span class= + "QUOTE">"Adventuresome"</span> profile) is more aggressive, and + will make use of some of <span class="APPLICATION">Privoxy's</span> + advanced features. Use at your own risk! + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="BROWSECONFIG">3.10. Why can I change the configuration + with a browser? Does that not raise security issues?</a> + </h3> + <p> + It may seem strange that regular users can edit the config files + with their browsers, although the whole <tt class= + "FILENAME">/etc/privoxy</tt> hierarchy belongs to the user <span + class="QUOTE">"privoxy"</span>, with only 644 permissions. + </p> + <p> + When you use the browser-based editor, <span class= + "APPLICATION">Privoxy</span> itself is writing to the config files. + Because <span class="APPLICATION">Privoxy</span> is running as the + user <span class="QUOTE">"privoxy"</span>, it can update its own + config files. + </p> + <p> + If you run <span class="APPLICATION">Privoxy</span> for multiple + untrusted users (e.g. in a LAN) or aren't entirely in control of + your own browser, you will probably want to make sure that the + web-based editor and remote toggle features are <span class= + "QUOTE">"off"</span> by setting <span class="QUOTE">"<tt class= + "LITERAL"><a href="../user-manual/config.html#ENABLE-EDIT-ACTIONS" + target="_top">enable-edit-actions</a> 0</tt>"</span> and <span + class="QUOTE">"<tt class="LITERAL"><a href= + "../user-manual/config.html#ENABLE-REMOTE-TOGGLE" target= + "_top">enable-remote-toggle</a> 0</tt>"</span> in the <a href= + "../user-manual/config.html" target="_top">main configuration + file</a>. + </p> + <p> + As of <span class="APPLICATION">Privoxy</span> 3.0.7 these options + are disabled by default. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN480">3.11. What is the <tt class= + "FILENAME">default.filter</tt> file? What is a <span class= + "QUOTE">"filter"</span>?</a> + </h3> + <p> + The <a href="../user-manual/filter-file.html" target="_top"><tt + class="FILENAME">default.filter</tt></a> file is where <span class= + "emphasis"><i class="EMPHASIS">filters</i></span> as supplied by + the developers are defined. Filters are a special subset of actions + that can be used to modify or remove web page content or headers on + the fly. Content filters can be applied to <span class= + "emphasis"><i class="EMPHASIS">anything</i></span> in the page + source, header filters can be applied to either server or client + headers. Regular expressions are used to accomplish this. + </p> + <p> + There are a number of pre-defined filters to deal with common + annoyances. The filters are only defined here, to invoke them, you + need to use the <a href="../user-manual/actions-file.html#FILTER" + target="_top"><tt class="LITERAL">filter</tt> action</a> in one of + the actions files. Content filtering is automatically disabled for + inappropriate MIME types, but if you know better than Privoxy what + should or should not be filtered you can filter any content you + like. + </p> + <p> + Filters should <span class="emphasis"><i class= + "EMPHASIS">not</i></span> be confused with <a href= + "../user-manual/actions-file.html#BLOCK" target="_top"><tt class= + "LITERAL">blocks</tt></a>, which is a completely different action, + and is more typically used to block ads and unwanted sites. + </p> + <p> + If you are familiar with regular expressions, and HTML, you can + look at the provided <tt class="FILENAME">default.filter</tt> with + a text editor and define your own filters. This is potentially a + very powerful feature, but requires some expertise in both regular + expressions and HTML/HTTP. You should place any modifications to + the default filters, or any new ones you create in a separate file, + such as <tt class="FILENAME">user.filter</tt>, so they won't be + overwritten during upgrades. The ability to define multiple filter + files in <tt class="FILENAME">config</tt> is a new feature as of v. + 3.0.5. + </p> + <p> + There is no GUI editor option for this part of the configuration, + but you can disable/enable the various pre-defined filters of the + included <tt class="FILENAME">default.filter</tt> file with the <a + href="http://config.privoxy.org/show-status" target= + "_top">web-based actions file editor</a>. Note that the custom + actions editor must be explicitly enabled in the main config file + (see <a href="../user-manual/config.html#ENABLE-EDIT-ACTIONS" + target="_top">enable-edit-actions</a>). + </p> + <p> + If you intend to develop your own filters, you might want to have a + look at <a href="http://www.fabiankeil.de/sourcecode/pft/" target= + "_top">Privoxy-Filter-Test</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="LANCONFIG">3.12. How can I set up Privoxy to act as a + proxy for my LAN?</a> + </h3> + <p> + By default, <span class="APPLICATION">Privoxy</span> only responds + to requests from <tt class="LITERAL">127.0.0.1</tt> (localhost). To + have it act as a server for a network, this needs to be changed in + the <a href="../user-manual/config.html" target="_top">main + configuration file</a>. Look for the <tt class="LITERAL"><a href= + "../user-manual/config.html#LISTEN-ADDRESS" target= + "_top">listen-address</a></tt> option, which may be commented out + with a <span class="QUOTE">"#"</span> symbol. Make sure it is + uncommented, and assign it the address of the LAN gateway + interface, and port number to use. Assuming your LAN address is + 192.168.1.1 and you wish to run <span class= + "APPLICATION">Privoxy</span> on port 8118, this line should look + like: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + listen-address 192.168.1.1:8118 +</pre> + </td> + </tr> + </table> + + <p> + Save the file, and restart <span class= + "APPLICATION">Privoxy</span>. Configure all browsers on the network + then to use this address and port number. + </p> + <p> + Alternately, you can have <span class="APPLICATION">Privoxy</span> + listen on all available interfaces: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + listen-address :8118 +</pre> + </td> + </tr> + </table> + + <p> + And then use <span class="APPLICATION">Privoxy's</span> <a href= + "../user-manual/config.html#PERMIT-ACCESS" target= + "_top">permit-access</a> feature to limit connections. A firewall + in this situation is recommended as well. + </p> + <p> + The above steps should be the same for any TCP network, regardless + of operating system. + </p> + <p> + If you run <span class="APPLICATION">Privoxy</span> on a LAN with + untrusted users, we recommend that you double-check the <a href= + "../user-manual/config.html#ACCESS-CONTROL" target="_top">access + control and security</a> options! + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN531">3.13. Instead of ads, now I get a checkerboard + pattern. I don't want to see anything.</a> + </h3> + <p> + The replacement for blocked images can be controlled with the <a + href="../user-manual/actions-file.html#SET-IMAGE-BLOCKER" target= + "_top"><tt class="LITERAL">set-image-blocker</tt> action</a>. You + have the choice of a checkerboard pattern, a transparent 1x1 GIF + image (aka <span class="QUOTE">"blank"</span>), or a redirect to a + custom image of your choice. Note that this choice only has effect + for images which are blocked as images, i.e. whose URLs match both + a <tt class="LITERAL"><a href= + "../user-manual/actions-file.html#HANDLE-AS-IMAGE" target= + "_top">handle-as-image</a></tt> <span class="emphasis"><i class= + "EMPHASIS">and</i></span> <tt class="LITERAL"><a href= + "../user-manual/actions-file.html#BLOCK" target= + "_top">block</a></tt> action. + </p> + <p> + If you want to see nothing, then change the <a href= + "../user-manual/actions-file.html#SET-IMAGE-BLOCKER" target= + "_top"><tt class="LITERAL">set-image-blocker</tt> action</a> to + <span class="QUOTE">"blank"</span>. This can be done by editing the + <tt class="FILENAME">user.action</tt> file, or through the <a href= + "http://config.privoxy.org/show-status" target="_top">web-based + actions file editor</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN548">3.14. Why would anybody want to see a checkerboard + pattern?</a> + </h3> + <p> + Remember that <a href="general.html#WHATSANAD">telling which image + is an ad and which isn't</a>, is an educated guess. While we hope + that the standard configuration is rather smart, it will make + occasional mistakes. The checkerboard image is visually decent, and + it shows you where images have been blocked, which can be very + helpful in case some navigation aid or otherwise innocent image was + erroneously blocked. It is recommended for new users so they can + <span class="QUOTE">"see"</span> what is happening. Some people + might also enjoy seeing how many banners they <span class= + "emphasis"><i class="EMPHASIS">don't</i></span> have to see. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN554">3.15. I see some images being replaced with text + instead of the checkerboard image. Why and how do I get rid of + this?</a> + </h3> + <p> + This happens when the banners are not embedded in the HTML code of + the page itself, but in separate HTML (sub)documents that are + loaded into (i)frames or (i)layers, and these external HTML + documents are blocked. Being non-images they get replaced by a + substitute HTML page rather than a substitute image, which wouldn't + work out technically, since the browser expects and accepts only + HTML when it has requested an HTML document. + </p> + <p> + The substitute page adapts to the available space and shows itself + as a miniature two-liner if loaded into small frames, or full-blown + with a large red "BLOCKED" banner if space allows. + </p> + <p> + If you prefer the banners to be blocked by images, you must see to + it that the HTML documents in which they are embedded are not + blocked. Clicking the <span class="QUOTE">"See why"</span> link + offered in the substitute page will show you which rule blocked the + page. After changing the rule and un-blocking the HTML documents, + the browser will try to load the actual banner images and the usual + image blocking will (hopefully!) kick in. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="SRVANY">3.16. Can Privoxy run as a service on + Win2K/NT/XP?</a> + </h3> + <p> + Yes. Version 3.0.5 introduces full <span class= + "APPLICATION">Windows</span> service functionality. See <a href= + "../user-manual/installation.html#installation-pack-win" target= + "_top">the <i class="CITETITLE">User Manual</i></a> for details on + how to install and configure <span class= + "APPLICATION">Privoxy</span> as a service. + </p> + <p> + Earlier 3.x versions could run as a system service using <b class= + "COMMAND">srvany.exe</b>. See the discussion at <a href= + "http://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id=11118" + target= + "_top">http://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id=11118</a>, + for details, and a sample configuration. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="OTHERPROXY">3.17. How can I make Privoxy work with other + proxies?</a> + </h3> + <p> + This can be done and is often useful to combine the benefits of + <span class="APPLICATION">Privoxy</span> with those of a another + proxy, for example to cache content. See the <a href= + "../user-manual/config.html#FORWARDING" target="_top">forwarding + chapter</a> in the <a href="../user-manual/index.html" target= + "_top">User Manual</a> which describes how to do this. If you + intend to use Privoxy with Tor, please also have a look at <a href= + "misc.html#TOR">How do I use Privoxy together with Tor</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="PORT-80">3.18. Can I just set Privoxy to use port 80 and + thus avoid individual browser configuration?</a> + </h3> + <p> + No, its more complicated than that. This only works with special + kinds of proxies known as <span class="QUOTE">"intercepting"</span> + proxies (<a href="configuration.html#INTERCEPTING">see below</a>). + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="TRANSPARENT">3.19. Can Privoxy run as a <span class= + "QUOTE">"transparent"</span> proxy?</a> + </h3> + <p> + The whole idea of Privoxy is to modify client requests and server + responses in all sorts of ways and therefore it's not a transparent + proxy as described in <a href="http://tools.ietf.org/html/rfc2616" + target="_top">RFC 2616</a>. + </p> + <p> + However, some people say <span class="QUOTE">"transparent + proxy"</span> when they mean <span class="QUOTE">"intercepting + proxy"</span>. If you are one of them, please read the <a href= + "configuration.html#INTERCEPTING">next entry</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="INTERCEPTING">3.20. Can Privoxy run as a <span class= + "QUOTE">"intercepting"</span> proxy?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> can't intercept traffic + itself, but it can handle requests that where intercepted and + redirected with a packet filter (like <span class= + "APPLICATION">PF</span> or <span class= + "APPLICATION">iptables</span>), as long as the <tt class= + "LITERAL">Host</tt> header is present. + </p> + <p> + As the <tt class="LITERAL">Host</tt> header is required by HTTP/1.1 + and as most web sites rely on it anyway, this limitation shouldn't + be a problem. + </p> + <p> + Please refer to your packet filter's documentation to learn how to + intercept and redirect traffic into <span class= + "APPLICATION">Privoxy</span>. Afterward you just have to configure + <span class="APPLICATION">Privoxy</span> to <a href= + "../user-manual/config.html#ACCEPT-INTERCEPTED-REQUESTS" target= + "_top">accept intercepted requests</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="OUTLOOK">3.21. How can I configure Privoxy for use with + Outlook?</a> + </h3> + <p> + Versions of <span class="APPLICATION">Outlook</span> prior to + Office 2007, use <span class="APPLICATION">Internet Explorer</span> + components to both render HTML, and fetch any HTTP requests that + may be embedded in an HTML email. So however you have <span class= + "APPLICATION">Privoxy</span> configured to work with IE, this + configuration should automatically be shared, at least with older + version of Internet Explorer. + </p> + <p> + Starting with Office 2007, Microsoft is instead using the MS-Word + rendering engine with Outlook. It is unknown whether this can be + configured to use a proxy. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="OUTLOOK-MORE">3.22. How can I have separate rules just for + HTML mail?</a> + </h3> + <p> + The short answer is, you can't. <span class= + "APPLICATION">Privoxy</span> has no way of knowing which particular + application makes a request, so there is no way to distinguish + between web pages and HTML mail. <span class= + "APPLICATION">Privoxy</span> just blindly proxies all requests. In + the case of <span class="APPLICATION">Outlook Express</span> (see + above), OE uses IE anyway, and there is no way for <span class= + "APPLICATION">Privoxy</span> to ever be able to distinguish between + them (nor could any other proxy type application for that matter). + </p> + <p> + For a good discussion of some of the issues involved (including + privacy and security issues), see <a href= + "http://sourceforge.net/tracker/?func=detail&atid=211118&aid=629518&group_id=11118" + target= + "_top">http://sourceforge.net/tracker/?func=detail&atid=211118&aid=629518&group_id=11118</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="SNEAKY-COOKIES">3.23. I sometimes notice cookies sneaking + through. How?</a> + </h3> + <p> + <a href="http://en.wikipedia.org/wiki/Browser_cookie" target= + "_top">Cookies</a> can be set in several ways. The classic method + is via the <tt class="LITERAL">Set-Cookie</tt> HTTP header. This is + straightforward, and an easy one to manipulate, such as the <span + class="APPLICATION">Privoxy</span> concept of <a href= + "../user-manual/actions-file.html#SESSION-COOKIES-ONLY" target= + "_top">session-cookies-only</a>. There is also the possibility of + using <a href="http://en.wikipedia.org/wiki/Javascript" target= + "_top">Javascript</a> to set cookies (<span class= + "APPLICATION">Privoxy</span> calls these <tt class= + "LITERAL">content-cookies</tt>). This is trickier because the + syntax can vary widely, and thus requires a certain amount of + guesswork. It is not realistic to catch all of these short of + disabling Javascript, which would break many sites. And lastly, if + the cookies are embedded in a HTTPS/SSL secure session via + Javascript, they are beyond <span class= + "APPLICATION">Privoxy's</span> reach. + </p> + <p> + All in all, <span class="APPLICATION">Privoxy</span> can help + manage cookies in general, can help minimize the loss of privacy + posed by cookies, but can't realistically stop all cookies. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="EVIL-COOKIES">3.24. Are all cookies bad? Why?</a> + </h3> + <p> + No, in fact there are many beneficial uses of <a href= + "http://en.wikipedia.org/wiki/Browser_cookie" target= + "_top">cookies</a>. Cookies are just a method that browsers can use + to store data between pages, or between browser sessions. Sometimes + there is a good reason for this, and the user's life is a bit + easier as a result. But there is a long history of some websites + taking advantage of this layer of trust, and using the data they + glean from you and your browsing habits for their own purposes, and + maybe to your potential detriment. Such sites are using you and + storing their data on your system. That is why the privacy + conscious watch from whom those cookies come, and why they really + <span class="emphasis"><i class="EMPHASIS">need</i></span> to be + there. + </p> + <p> + See the <a href="http://en.wikipedia.org/wiki/Browser_cookie" + target="_top">Wikipedia cookie definition</a> for more. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="ALLOW-COOKIES">3.25. How can I allow permanent cookies for + my trusted sites?</a> + </h3> + <p> + There are several actions that relate to cookies. The default + behavior is to allow only <span class="QUOTE">"session + cookies"</span>, which means the cookies only last for the current + browser session. This eliminates most kinds of abuse related to + cookies. But there may be cases where you want cookies to last. + </p> + <p> + To disable all cookie actions, so that cookies are allowed + unrestricted, both in and out, for <tt class= + "LITERAL">example.com</tt>: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { -crunch-incoming-cookies -crunch-outgoing-cookies -session-cookies-only -filter{content-cookies} } + .example.com +</pre> + </td> + </tr> + </table> + + <p> + Place the above in <tt class="FILENAME">user.action</tt>. Note that + some of these may be off by default anyway, so this might be + redundant, but there is no harm being explicit in what you want to + happen. <tt class="FILENAME">user.action</tt> includes an alias for + this situation, called <tt class="LITERAL">allow-all-cookies</tt>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="MULTIPLES">3.26. Can I have separate configurations for + different users?</a> + </h3> + <p> + Each instance of <span class="APPLICATION">Privoxy</span> has its + own configuration, including such attributes as the TCP port that + it listens on. What you can do is run multiple instances of <span + class="APPLICATION">Privoxy</span>, each with a unique <a href= + "../user-manual/config.html#LISTEN-ADDRESS" target= + "_top">listen-address</a> configuration setting, and configuration + path, and then each of these can have their own configurations. + Think of it as per-port configuration. + </p> + <p> + Simple enough for a few users, but for large installations, + consider having groups of users that might share like + configurations. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="WHITELISTS">3.27. Can I set-up Privoxy as a whitelist of + <span class="QUOTE">"good"</span> sites?</a> + </h3> + <p> + Sure. There are a couple of things you can do for simple + white-listing. Here's one real easy one: + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + ############################################################ # Blacklist ############################################################ - { <A -HREF="../user-manual/actions-file.html#BLOCK" -TARGET="_top" ->+block</A -> } + { <a href="../user-manual/actions-file.html#BLOCK" target= +"_top">+block</a> } / # Block *all* URLs - + ############################################################ # Whitelist ############################################################ - { <A -HREF="../user-manual/actions-file.html#BLOCK" -TARGET="_top" ->-block</A -> } + { <a href="../user-manual/actions-file.html#BLOCK" target= +"_top">-block</a> } kids.example.com toys.example.com - games.example.com</PRE -></TD -></TR -></TABLE -><P -> This allows access to only those three sites by first blocking all URLs, and - then subsequently allowing three specific exceptions.</P -><P -> Another approach is <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - <TT -CLASS="LITERAL" ->trustfile</TT -> concept, which incorporates the notion of - <SPAN -CLASS="QUOTE" ->"trusted referrers"</SPAN ->. See the <A -HREF="../user-manual/config.html#TRUSTFILE" -TARGET="_top" ->Trust documentation</A -> - for details.</P -><P -> These are fairly simple approaches and are not completely foolproof. There - are various other configuration options that should be disabled (described - elsewhere here and in <A -HREF="../user-manual/" -TARGET="_top" ->the User Manual</A ->) - so that users can't modify their own configuration and easily circumvent the - whitelist.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NO-ADBLOCK" ->3.28. How can I turn off ad-blocking?</A -></H3 -><P -> Ad blocking is achieved through a complex application of various <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - <A -HREF="../user-manual/actions-file.html" -TARGET="_top" ->actions</A ->. These - actions are deployed against simple images, banners, flash animations, - text pages, JavaScript, pop-ups and pop-unders, etc., so its not as simple as - just turning one or two actions off. The various actions that make up - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> ad blocking are hard-coded into the default configuration files. It - has been assumed that everyone using <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is interested in this - particular feature. - </P -><P -> If you want to do without this, there are several approaches you can take: - You can manually undo the many block rules in - <TT -CLASS="FILENAME" ->default.action</TT ->. Or even easier, just create your own - <TT -CLASS="FILENAME" ->default.action</TT -> file from scratch without the many ad - blocking rules, and corresponding exceptions. Or lastly, if you are not - concerned about the additional blocks that are done for privacy reasons, you - can very easily over-ride <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> blocking with the - following very simple rule in your <TT -CLASS="FILENAME" ->user.action</TT ->: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # Unblock everybody, everywhere - { <A -HREF="../user-manual/actions-file.html#BLOCK" -TARGET="_top" ->-block</A -> } - / # UN-Block *all* URLs</PRE -></TD -></TR -></TABLE -></P -><P -> - Or even a more comprehensive reversing of various ad related actions:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # Unblock everybody, everywhere, and turn off appropriate filtering, etc - { <A -HREF="../user-manual/actions-file.html#BLOCK" -TARGET="_top" ->-block</A -> \ - <A -HREF="../user-manual/actions-file.html#FILTER-BANNERS-BY-SIZE" -TARGET="_top" ->-filter{banners-by-size}</A -> \ - <A -HREF="../user-manual/actions-file.html#FILTER-BANNERS-BY-LINK" -TARGET="_top" ->-filter{banners-by-link}</A -> \ - <TT -CLASS="LITERAL" ->allow-popups</TT -> \ + games.example.com +</pre> + </td> + </tr> + </table> + <p> + This allows access to only those three sites by first blocking all + URLs, and then subsequently allowing three specific exceptions. + </p> + <p> + Another approach is <span class="APPLICATION">Privoxy's</span> <tt + class="LITERAL">trustfile</tt> concept, which incorporates the + notion of <span class="QUOTE">"trusted referrers"</span>. See the + <a href="../user-manual/config.html#TRUSTFILE" target="_top">Trust + documentation</a> for details. + </p> + <p> + These are fairly simple approaches and are not completely + foolproof. There are various other configuration options that + should be disabled (described elsewhere here and in <a href= + "../user-manual/" target="_top">the User Manual</a>) so that users + can't modify their own configuration and easily circumvent the + whitelist. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NO-ADBLOCK">3.28. How can I turn off ad-blocking?</a> + </h3> + <p> + Ad blocking is achieved through a complex application of various + <span class="APPLICATION">Privoxy</span> <a href= + "../user-manual/actions-file.html" target="_top">actions</a>. These + actions are deployed against simple images, banners, flash + animations, text pages, JavaScript, pop-ups and pop-unders, etc., + so its not as simple as just turning one or two actions off. The + various actions that make up <span class= + "APPLICATION">Privoxy</span> ad blocking are hard-coded into the + default configuration files. It has been assumed that everyone + using <span class="APPLICATION">Privoxy</span> is interested in + this particular feature. + </p> + <p> + If you want to do without this, there are several approaches you + can take: You can manually undo the many block rules in <tt class= + "FILENAME">default.action</tt>. Or even easier, just create your + own <tt class="FILENAME">default.action</tt> file from scratch + without the many ad blocking rules, and corresponding exceptions. + Or lastly, if you are not concerned about the additional blocks + that are done for privacy reasons, you can very easily over-ride + <span class="emphasis"><i class="EMPHASIS">all</i></span> blocking + with the following very simple rule in your <tt class= + "FILENAME">user.action</tt>: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # Unblock everybody, everywhere + { <a href="../user-manual/actions-file.html#BLOCK" target= +"_top">-block</a> } + / # UN-Block *all* URLs +</pre> + </td> + </tr> + </table> + + <p> + Or even a more comprehensive reversing of various ad related + actions: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # Unblock everybody, everywhere, and turn off appropriate filtering, etc + { <a href="../user-manual/actions-file.html#BLOCK" target= +"_top">-block</a> \ + <a href="../user-manual/actions-file.html#FILTER-BANNERS-BY-SIZE" target= +"_top">-filter{banners-by-size}</a> \ + <a href="../user-manual/actions-file.html#FILTER-BANNERS-BY-LINK" target= +"_top">-filter{banners-by-link}</a> \ + <tt class="LITERAL">allow-popups</tt> \ } - / # UN-Block *all* URLs and allow ads</PRE -></TD -></TR -></TABLE -></P -><P -> This last <SPAN -CLASS="QUOTE" ->"action"</SPAN -> in this compound statement, - <TT -CLASS="LITERAL" ->allow-popups</TT ->, is an <A -HREF="../user-manual/actions-file.html#ALIASES" -TARGET="_top" ->alias</A -> that disables - various pop-up blocking features.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="TEMPLATES" ->3.29. How can I have custom template pages, like the -<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->BLOCKED</I -></SPAN -> page?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> <SPAN -CLASS="QUOTE" ->"templates"</SPAN -> are specialized text files utilized by - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> for various purposes and can easily be modified using any text - editor. All the template pages are installed in a sub-directory appropriately - named: <TT -CLASS="FILENAME" ->templates</TT ->. Knowing something about HTML syntax - will of course be helpful.</P -><P -> Be forewarned that the default templates are subject to being overwritten - during upgrades. You can, however, create completely new templates, - place them in another directory and specify the alternate path in the main - <TT -CLASS="FILENAME" ->config</TT ->. For details, have a look at the <A -HREF="../user-manual/config.html#templdir" -TARGET="_top" ->templdir</A -> option. </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="BLOCKALL" ->3.30. How can I remove the <SPAN -CLASS="QUOTE" ->"Go There Anyway"</SPAN -> link from -the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->BLOCKED</I -></SPAN -> page?</A -></H3 -><P -> There is more than one way to do it (although Perl is not involved).</P -><P -> Editing the BLOCKED template page (see above) may dissuade some users, but - this method is easily circumvented. Where you need this level of control, you - might want to build <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> from source, and disable various features that are - available as compile-time options. You should - <B -CLASS="COMMAND" ->configure</B -> the sources as follows:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> ./configure --disable-toggle --disable-editor --disable-force</PRE -></TD -></TR -></TABLE -></P -><P -> This will create an executable with hard-coded security features so that - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> does not allow easy bypassing of blocked sites, or changing the - current configuration via any connected user's web browser.</P -><P -> Finally, all of these features can also be toggled on/off via options in - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> main <A -HREF="../user-manual/config.html#ACCESS-CONTROL" -TARGET="_top" ->config</A -> file which - means you don't have to recompile anything.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="installation.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="misc.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Installation</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Miscellaneous</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file + / # UN-Block *all* URLs and allow ads +</pre> + </td> + </tr> + </table> + + <p> + This last <span class="QUOTE">"action"</span> in this compound + statement, <tt class="LITERAL">allow-popups</tt>, is an <a href= + "../user-manual/actions-file.html#ALIASES" target="_top">alias</a> + that disables various pop-up blocking features. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="TEMPLATES">3.29. How can I have custom template pages, + like the <span class="emphasis"><i class= + "EMPHASIS">BLOCKED</i></span> page?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> <span class= + "QUOTE">"templates"</span> are specialized text files utilized by + <span class="APPLICATION">Privoxy</span> for various purposes and + can easily be modified using any text editor. All the template + pages are installed in a sub-directory appropriately named: <tt + class="FILENAME">templates</tt>. Knowing something about HTML + syntax will of course be helpful. + </p> + <p> + Be forewarned that the default templates are subject to being + overwritten during upgrades. You can, however, create completely + new templates, place them in another directory and specify the + alternate path in the main <tt class="FILENAME">config</tt>. For + details, have a look at the <a href= + "../user-manual/config.html#templdir" target="_top">templdir</a> + option. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="BLOCKALL">3.30. How can I remove the <span class= + "QUOTE">"Go There Anyway"</span> link from the <span class= + "emphasis"><i class="EMPHASIS">BLOCKED</i></span> page?</a> + </h3> + <p> + There is more than one way to do it (although Perl is not + involved). + </p> + <p> + Editing the BLOCKED template page (see above) may dissuade some + users, but this method is easily circumvented. Where you need this + level of control, you might want to build <span class= + "APPLICATION">Privoxy</span> from source, and disable various + features that are available as compile-time options. You should <b + class="COMMAND">configure</b> the sources as follows: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + ./configure --disable-toggle --disable-editor --disable-force +</pre> + </td> + </tr> + </table> + + <p> + This will create an executable with hard-coded security features so + that <span class="APPLICATION">Privoxy</span> does not allow easy + bypassing of blocked sites, or changing the current configuration + via any connected user's web browser. + </p> + <p> + Finally, all of these features can also be toggled on/off via + options in <span class="APPLICATION">Privoxy's</span> main <a href= + "../user-manual/config.html#ACCESS-CONTROL" target= + "_top">config</a> file which means you don't have to recompile + anything. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="installation.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="misc.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Installation + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Miscellaneous + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/faq/contact.html b/doc/webserver/faq/contact.html index 87bf155c..5ae45f29 100644 --- a/doc/webserver/faq/contact.html +++ b/doc/webserver/faq/contact.html @@ -1,563 +1,406 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Contacting the developers, Bug Reporting and Feature Requests</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Frequently Asked Questions" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Troubleshooting" -HREF="trouble.html"><LINK -REL="NEXT" -TITLE="Privoxy Copyright, License and History" -HREF="copyright.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Frequently Asked Questions</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="trouble.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="copyright.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="CONTACT" ->6. Contacting the developers, Bug Reporting and Feature Requests</A -></H1 -><P -> We value your feedback. In fact, we rely on it to improve - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and its configuration. - However, please note the following hints, so we can - provide you with the best support:</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CONTACT-SUPPORT" ->6.1. Get Support</A -></H2 -><P -> For casual users, our - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118" -TARGET="_top" ->support forum at SourceForge</A -> - is probably best suited: - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118" -TARGET="_top" ->http://sourceforge.net/tracker/?group_id=11118&atid=211118</A -></P -><P -> All users are of course welcome to discuss their issues on the <A -HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-users" -TARGET="_top" ->users - mailing list</A ->, where the developers also hang around.</P -><P -> Please don't sent private support requests to individual Privoxy - developers, either use the mailing lists or the support trackers.</P -><P -> If you have to contact a Privoxy developer directly for other reasons, - please send a real mail and do not bother with SourceForge's messaging - system. Answers to SourceForge messages are usually bounced by SourceForge's - mail server in which case the developer wasted time writing a response you - don't get. From your point of view it will look like your message has - been completely ignored, so this is frustrating for all parties involved.</P -><P -> Note that the Privoxy mailing lists are moderated. Posts from unsubscribed - addresses have to be accepted manually by a moderator. This may cause a - delay of several days and if you use a subject that doesn't clearly - mention Privoxy or one of its features, your message may be accidentally - discarded as spam.</P -><P -> If you aren't subscribed, you should therefore spend a few seconds - to come up with a proper subject. Additionally you should make it clear - that you want to get CC'd. Otherwise some responses will be directed to - the mailing list only, and you won't see them.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="REPORTING" ->6.2. Reporting Problems</A -></H2 -><P -><SPAN -CLASS="QUOTE" ->"Problems"</SPAN -> for our purposes, come in two forms:</P -><P -></P -><UL -><LI -><P -> Configuration issues, such as ads that slip through, or sites that - don't function properly due to one <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - <SPAN -CLASS="QUOTE" ->"action"</SPAN -> or another being turned <SPAN -CLASS="QUOTE" ->"on"</SPAN ->. - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"Bugs"</SPAN -> in the programming code that makes up - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, such as that might cause a crash. - </P -></LI -></UL -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="CONTACT-ADS" ->6.2.1. Reporting Ads or Other Configuration Problems</A -></H3 -><P -> Please send feedback on ads that slipped through, innocent images that were - blocked, sites that don't work properly, and other configuration related problem of - <TT -CLASS="FILENAME" ->default.action</TT -> file, to - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=460288" -TARGET="_top" -> http://sourceforge.net/tracker/?group_id=11118&atid=460288</A ->, - the Actions File Tracker.</P -><P -> New, improved <TT -CLASS="FILENAME" ->default.action</TT -> files may occasionally be made - available based on your feedback. These will be announced on the <A -HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-announce" -TARGET="_top" ->ijbswa-announce</A -> - list and available from our the <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->files section</A -> of - our <A -HREF="http://sf.net/projects/ijbswa/" -TARGET="_top" ->project page</A ->.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="CONTACT-BUGS" ->6.2.2. Reporting Bugs</A -></H3 -><P -> Please report all bugs through our bug tracker: - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=111118" -TARGET="_top" ->http://sourceforge.net/tracker/?group_id=11118&atid=111118</A ->. </P -><P -> Before doing so, please make sure that the bug has <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not already been submitted</I -></SPAN -> - and observe the additional hints at the top of the <A -HREF="http://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118" -TARGET="_top" ->submit - form</A ->. If already submitted, please feel free to add any info to the - original report that might help to solve the issue.</P -><P -> Please try to verify that it is a <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> bug, - and not a browser or site bug or documented behaviour that just happens - to be different than what you expected. If unsure, - try <A -HREF="http://config.privoxy.org/toggle?set=disable" -TARGET="_top" ->toggling - off</A -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, and see if the problem persists.</P -><P -> If you are using your own custom configuration, please try - the stock configs to see if the problem is configuration related. - If you're having problems with a feature that is disabled by default, - please ask around on the mailing list if others can reproduce the problem.</P -><P -> If you aren't using the latest Privoxy version, the bug may have been found - and fixed in the meantime. We would appreciate if you could take the time - to <A -HREF="http://www.privoxy.org/user-manual/installation.html" -TARGET="_top" ->upgrade - to the latest version</A -> (or even the latest CVS snapshot) and verify - that your bug still exists.</P -><P ->Please be sure to provide the following information:</P -><P -> <P -></P -><UL -><LI -><P -> The exact <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version you are using - (if you got the source from CVS, please also provide the source code revisions - as shown in <A -HREF="http://config.privoxy.org/show-version" -TARGET="_top" ->http://config.privoxy.org/show-version</A ->). - </P -></LI -><LI -><P -> The operating system and versions you run - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on, (e.g. <SPAN -CLASS="APPLICATION" ->Windows - XP SP2</SPAN ->), if you are using a Unix flavor, - sending the output of <SPAN -CLASS="QUOTE" ->"uname -a"</SPAN -> should do, - in case of GNU/Linux, please also name the distribution. - </P -></LI -><LI -><P -> The name, platform, and version of the <SPAN -CLASS="APPLICATION" ->browser</SPAN -> - you were using (e.g. <SPAN -CLASS="APPLICATION" ->Internet Explorer v5.5</SPAN -> for Mac). - </P -></LI -><LI -><P -> The URL where the problem occurred, or some way for us to duplicate the - problem (e.g. <TT -CLASS="LITERAL" ->http://somesite.example.com/?somethingelse=123</TT ->). - </P -></LI -><LI -><P -> Whether your version of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is one supplied - by the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> developers via SourceForge, - or if you got your copy somewhere else. - </P -></LI -><LI -><P -> Whether you are using <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in tandem with - another proxy such as <SPAN -CLASS="APPLICATION" ->Tor</SPAN ->. If so, please - temporary disable the other proxy to see if the symptoms change. - </P -></LI -><LI -><P -> Whether you are using a personal firewall product. If so, does - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> work without it? - </P -></LI -><LI -><P -> Any other pertinent information to help identify the problem such as config - or log file excerpts (yes, you should have log file entries for each - action taken). To get a meaningful logfile, please make sure that the - <A -HREF="../user-manual/config.html#LOGFILE" -TARGET="_top" ->logfile directive</A -> - is being used and the following <A -HREF="../user-manual/config.html#DEBUG" -TARGET="_top" ->debug options</A -> are enabled: - <P -CLASS="LITERALLAYOUT" ->debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.<br> -debug 2 # show each connection status<br> -debug 4 # show I/O status<br> -debug 8 # show header parsing<br> -debug 128 # debug redirects<br> -debug 256 # debug GIF de-animation<br> -debug 512 # Common Log Format<br> -debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.<br> -debug 4096 # Startup banner and warnings.<br> -debug 8192 # Non-fatal errors</P -> - If you are having trouble with a filter, please additionally enable - <P -CLASS="LITERALLAYOUT" ->debug 64 # debug regular expression filters</P -> - If you are using Privoxy 3.0.17 or later and suspect that it interprets the - request or the response incorrectly, please enable - <P -CLASS="LITERALLAYOUT" ->debug 32768 # log all data read from the network</P -> - Note that Privoxy log files may contain sensitive information so please don't - submit any logfiles you didn't read first. You can mask sensitive information - as long as it's clear that you removed something. - </P -></LI -></UL -></P -><P -> You don't have to tell us your actual name when filing a problem - report, but if you don't, please use a nickname so we can differentiate - between your messages and the ones entered by other "anonymous" users that - may respond to your request if they have the same problem or already - found a solution. Note that due to spam the trackers may not always - allow to post without being logged into SourceForge. If that's the - case, you are still free to create a login that isn't directly linked - to your name, though.</P -><P -> Please also check the status of your request a few days after submitting - it, as we may request additional information. If you use a SF id, - you should automatically get a mail when someone responds to your request. - Please don't bother to add an email address when using the tracker. - If you prefer to communicate through email, just use one of the mailing - lists directly.</P -><P -> The <A -HREF="http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" -TARGET="_top" ->appendix - of the Privoxy User Manual</A -> also has helpful information - on understanding <TT -CLASS="LITERAL" ->actions</TT ->, and <TT -CLASS="LITERAL" ->action</TT -> debugging. </P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CONTACT-FEATURE" ->6.3. Request New Features</A -></H2 -><P -> You are welcome to submit ideas on new features or other proposals - for improvement through our feature request tracker at - <A -HREF="http://sourceforge.net/tracker/?atid=361118&group_id=11118" -TARGET="_top" ->http://sourceforge.net/tracker/?atid=361118&group_id=11118</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="MAILING-LISTS" ->6.4. Mailing Lists</A -></H2 -><P ->If you prefer to communicate through email, instead of using a web interface, -feel free to use one of the mailing lists. -To discuss issues that haven't been completely diagnosed yet, please use the Privoxy -users list. Technically interested users and people who wish to contribute to -the project are always welcome on the developers list. -You can find an overview of all <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->-related mailing lists, -including list archives, at: -<A -HREF="http://sourceforge.net/mail/?group_id=11118" -TARGET="_top" ->http://sourceforge.net/mail/?group_id=11118</A ->.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="trouble.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="copyright.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Troubleshooting</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Privoxy Copyright, License and History</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Contacting the developers, Bug Reporting and Feature Requests + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Frequently Asked Questions" href= + "index.html"> + <link rel="PREVIOUS" title="Troubleshooting" href="trouble.html"> + <link rel="NEXT" title="Privoxy Copyright, License and History" href= + "copyright.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Frequently Asked Questions + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="trouble.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="copyright.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="CONTACT">6. Contacting the developers, Bug Reporting and + Feature Requests</a> + </h1> + <p> + We value your feedback. In fact, we rely on it to improve <span + class="APPLICATION">Privoxy</span> and its configuration. However, + please note the following hints, so we can provide you with the best + support: + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CONTACT-SUPPORT">6.1. Get Support</a> + </h2> + <p> + For casual users, our <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=211118" + target="_top">support forum at SourceForge</a> is probably best + suited: <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=211118" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=211118</a> + </p> + <p> + All users are of course welcome to discuss their issues on the <a + href="http://lists.sourceforge.net/lists/listinfo/ijbswa-users" + target="_top">users mailing list</a>, where the developers also + hang around. + </p> + <p> + Please don't sent private support requests to individual Privoxy + developers, either use the mailing lists or the support trackers. + </p> + <p> + If you have to contact a Privoxy developer directly for other + reasons, please send a real mail and do not bother with + SourceForge's messaging system. Answers to SourceForge messages are + usually bounced by SourceForge's mail server in which case the + developer wasted time writing a response you don't get. From your + point of view it will look like your message has been completely + ignored, so this is frustrating for all parties involved. + </p> + <p> + Note that the Privoxy mailing lists are moderated. Posts from + unsubscribed addresses have to be accepted manually by a moderator. + This may cause a delay of several days and if you use a subject + that doesn't clearly mention Privoxy or one of its features, your + message may be accidentally discarded as spam. + </p> + <p> + If you aren't subscribed, you should therefore spend a few seconds + to come up with a proper subject. Additionally you should make it + clear that you want to get CC'd. Otherwise some responses will be + directed to the mailing list only, and you won't see them. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="REPORTING">6.2. Reporting Problems</a> + </h2> + <p> + <span class="QUOTE">"Problems"</span> for our purposes, come in two + forms: + </p> + <ul> + <li> + <p> + Configuration issues, such as ads that slip through, or sites + that don't function properly due to one <span class= + "APPLICATION">Privoxy</span> <span class= + "QUOTE">"action"</span> or another being turned <span class= + "QUOTE">"on"</span>. + </p> + </li> + <li> + <p> + <span class="QUOTE">"Bugs"</span> in the programming code that + makes up <span class="APPLICATION">Privoxy</span>, such as that + might cause a crash. + </p> + </li> + </ul> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="CONTACT-ADS">6.2.1. Reporting Ads or Other Configuration + Problems</a> + </h3> + <p> + Please send feedback on ads that slipped through, innocent images + that were blocked, sites that don't work properly, and other + configuration related problem of <tt class= + "FILENAME">default.action</tt> file, to <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=460288" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, + the Actions File Tracker. + </p> + <p> + New, improved <tt class="FILENAME">default.action</tt> files may + occasionally be made available based on your feedback. These will + be announced on the <a href= + "http://lists.sourceforge.net/lists/listinfo/ijbswa-announce" + target="_top">ijbswa-announce</a> list and available from our the + <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">files section</a> of our <a href= + "http://sf.net/projects/ijbswa/" target="_top">project page</a>. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="CONTACT-BUGS">6.2.2. Reporting Bugs</a> + </h3> + <p> + Please report all bugs through our bug tracker: <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=111118" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=111118</a>. + </p> + <p> + Before doing so, please make sure that the bug has <span class= + "emphasis"><i class="EMPHASIS">not already been + submitted</i></span> and observe the additional hints at the top + of the <a href= + "http://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118" + target="_top">submit form</a>. If already submitted, please feel + free to add any info to the original report that might help to + solve the issue. + </p> + <p> + Please try to verify that it is a <span class= + "APPLICATION">Privoxy</span> bug, and not a browser or site bug + or documented behaviour that just happens to be different than + what you expected. If unsure, try <a href= + "http://config.privoxy.org/toggle?set=disable" target= + "_top">toggling off</a> <span class="APPLICATION">Privoxy</span>, + and see if the problem persists. + </p> + <p> + If you are using your own custom configuration, please try the + stock configs to see if the problem is configuration related. If + you're having problems with a feature that is disabled by + default, please ask around on the mailing list if others can + reproduce the problem. + </p> + <p> + If you aren't using the latest Privoxy version, the bug may have + been found and fixed in the meantime. We would appreciate if you + could take the time to <a href= + "http://www.privoxy.org/user-manual/installation.html" target= + "_top">upgrade to the latest version</a> (or even the latest CVS + snapshot) and verify that your bug still exists. + </p> + <p> + Please be sure to provide the following information: + </p> + <p> + </p> + <ul> + <li> + <p> + The exact <span class="APPLICATION">Privoxy</span> version + you are using (if you got the source from CVS, please also + provide the source code revisions as shown in <a href= + "http://config.privoxy.org/show-version" target= + "_top">http://config.privoxy.org/show-version</a>). + </p> + </li> + <li> + <p> + The operating system and versions you run <span class= + "APPLICATION">Privoxy</span> on, (e.g. <span class= + "APPLICATION">Windows XP SP2</span>), if you are using a Unix + flavor, sending the output of <span class="QUOTE">"uname + -a"</span> should do, in case of GNU/Linux, please also name + the distribution. + </p> + </li> + <li> + <p> + The name, platform, and version of the <span class= + "APPLICATION">browser</span> you were using (e.g. <span + class="APPLICATION">Internet Explorer v5.5</span> for Mac). + </p> + </li> + <li> + <p> + The URL where the problem occurred, or some way for us to + duplicate the problem (e.g. <tt class= + "LITERAL">http://somesite.example.com/?somethingelse=123</tt>). + </p> + </li> + <li> + <p> + Whether your version of <span class= + "APPLICATION">Privoxy</span> is one supplied by the <span + class="APPLICATION">Privoxy</span> developers via + SourceForge, or if you got your copy somewhere else. + </p> + </li> + <li> + <p> + Whether you are using <span class= + "APPLICATION">Privoxy</span> in tandem with another proxy + such as <span class="APPLICATION">Tor</span>. If so, please + temporary disable the other proxy to see if the symptoms + change. + </p> + </li> + <li> + <p> + Whether you are using a personal firewall product. If so, + does <span class="APPLICATION">Privoxy</span> work without + it? + </p> + </li> + <li> + <p> + Any other pertinent information to help identify the problem + such as config or log file excerpts (yes, you should have log + file entries for each action taken). To get a meaningful + logfile, please make sure that the <a href= + "../user-manual/config.html#LOGFILE" target="_top">logfile + directive</a> is being used and the following <a href= + "../user-manual/config.html#DEBUG" target="_top">debug + options</a> are enabled: + </p> + <p class="LITERALLAYOUT"> + debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.<br> + + debug 2 # show each connection status<br> + + debug 4 # show I/O status<br> + + debug 8 # show header parsing<br> + + debug 128 # debug redirects<br> + + debug 256 # debug GIF de-animation<br> + + debug 512 # Common Log Format<br> + + debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.<br> + + debug 4096 # Startup banner and warnings.<br> + + debug 8192 # Non-fatal errors + </p> + If you are having trouble with a filter, please additionally + enable + <p class="LITERALLAYOUT"> + debug 64 # debug regular expression filters + </p> + If you are using Privoxy 3.0.17 or later and suspect that it + interprets the request or the response incorrectly, please + enable + <p class="LITERALLAYOUT"> + debug 32768 # log all data read from the network + </p> + Note that Privoxy log files may contain sensitive information + so please don't submit any logfiles you didn't read first. You + can mask sensitive information as long as it's clear that you + removed something.<br> + </li> + </ul> + + <p> + You don't have to tell us your actual name when filing a problem + report, but if you don't, please use a nickname so we can + differentiate between your messages and the ones entered by other + "anonymous" users that may respond to your request if they have + the same problem or already found a solution. Note that due to + spam the trackers may not always allow to post without being + logged into SourceForge. If that's the case, you are still free + to create a login that isn't directly linked to your name, + though. + </p> + <p> + Please also check the status of your request a few days after + submitting it, as we may request additional information. If you + use a SF id, you should automatically get a mail when someone + responds to your request. Please don't bother to add an email + address when using the tracker. If you prefer to communicate + through email, just use one of the mailing lists directly. + </p> + <p> + The <a href= + "http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" + target="_top">appendix of the Privoxy User Manual</a> also has + helpful information on understanding <tt class= + "LITERAL">actions</tt>, and <tt class="LITERAL">action</tt> + debugging. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CONTACT-FEATURE">6.3. Request New Features</a> + </h2> + <p> + You are welcome to submit ideas on new features or other proposals + for improvement through our feature request tracker at <a href= + "http://sourceforge.net/tracker/?atid=361118&group_id=11118" + target= + "_top">http://sourceforge.net/tracker/?atid=361118&group_id=11118</a>. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="MAILING-LISTS">6.4. Mailing Lists</a> + </h2> + <p> + If you prefer to communicate through email, instead of using a web + interface, feel free to use one of the mailing lists. To discuss + issues that haven't been completely diagnosed yet, please use the + Privoxy users list. Technically interested users and people who + wish to contribute to the project are always welcome on the + developers list. You can find an overview of all <span class= + "APPLICATION">Privoxy</span>-related mailing lists, including list + archives, at: <a href="http://sourceforge.net/mail/?group_id=11118" + target="_top">http://sourceforge.net/mail/?group_id=11118</a>. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="trouble.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="copyright.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Troubleshooting + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Privoxy Copyright, License and History + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/faq/copyright.html b/doc/webserver/faq/copyright.html index 009c3136..c0710630 100644 --- a/doc/webserver/faq/copyright.html +++ b/doc/webserver/faq/copyright.html @@ -1,301 +1,182 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy Copyright, License and History</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Frequently Asked Questions" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Contacting the developers, Bug Reporting and Feature Requests" -HREF="contact.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Frequently Asked Questions</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="contact.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -> </TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="COPYRIGHT" ->7. Privoxy Copyright, License and History</A -></H1 -><P -> Copyright © 2001-2011 by Privoxy Developers <CODE -CLASS="EMAIL" -><<A -HREF="mailto:ijbswa-developers@lists.sourceforge.net" ->ijbswa-developers@lists.sourceforge.net</A ->></CODE -></P -><P -> Some source code is based on code Copyright © 1997 by Anonymous Coders - and Junkbusters, Inc. and licensed under the <I -CLASS="CITETITLE" ->GNU General Public - License</I ->.</P -><P -> Portions of this document are <SPAN -CLASS="QUOTE" ->"borrowed"</SPAN -> from the original - <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN -> (tm) FAQ, and modified as - appropriate for <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - </P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN1464" ->7.1. License</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is free software; you can - redistribute it and/or modify it under the terms of the - <I -CLASS="CITETITLE" ->GNU General Public License</I ->, version 2, - as published by the Free Software Foundation.</P -><P -> 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 <A -HREF="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" -TARGET="_top" -> <I -CLASS="CITETITLE" ->GNU General Public License</I -></A -> for details.</P -><P -> You should have received a copy of the <I -CLASS="CITETITLE" ->GNU GPL</I -> - along with this program; if not, write to the <P -CLASS="ADDRESS" -> Free Software<br> - Foundation, Inc. <SPAN -CLASS="STREET" ->51 Franklin Street, Fifth Floor</SPAN -><br> - <SPAN -CLASS="CITY" ->Boston</SPAN ->, <SPAN -CLASS="STATE" ->MA</SPAN -> <SPAN -CLASS="POSTCODE" ->02110-1301</SPAN -><br> - <SPAN -CLASS="COUNTRY" ->USA</SPAN -> </P -></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN1480" ->7.2. History</A -></H2 -><P -> A long time ago, there was the - <A -HREF="http://www.junkbusters.com/ijb.html" -TARGET="_top" -><SPAN -CLASS="APPLICATION" ->Internet Junkbuster</SPAN -></A ->, - by Anonymous Coders and <A -HREF="http://www.junkbusters.com/" -TARGET="_top" ->Junkbusters - Corporation</A ->. This saved many users a lot of pain in the early days of - web advertising and user tracking.</P -><P -> But the web, its protocols and standards, and with it, the techniques for - forcing ads on users, give up autonomy over their browsing, and - for tracking them, keeps evolving. Unfortunately, the <SPAN -CLASS="APPLICATION" ->Internet - Junkbuster</SPAN -> did not. Version 2.0.2, published in 1998, was - (and is) the last official - <A -HREF="http://www.junkbusters.com/ijbdist.html#release" -TARGET="_top" ->release</A -> - available from <A -HREF="http://www.junkbusters.com" -TARGET="_top" ->Junkbusters Corporation</A ->. - Fortunately, it had been released under the GNU - <A -HREF="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" -TARGET="_top" ->GPL</A ->, - which allowed further development by others.</P -><P -> So Stefan Waldherr started maintaining an improved version of the - software, to which eventually a number of people contributed patches. - It could already replace banners with a transparent image, and had a first - version of pop-up killing, but it was still very closely based on the - original, with all its limitations, such as the lack of HTTP/1.1 support, - flexible per-site configuration, or content modification. The last release - from this effort was version 2.0.2-10, published in 2000.</P -><P -> Then, some - <A -HREF="http://www.privoxy.org/user-manual/copyright.html#AUTHORS" -TARGET="_top" ->developers</A -> - picked up the thread, and started turning the software inside out, upside down, - and then reassembled it, adding many - <A -HREF="http://www.privoxy.org/user-manual/introduction.html#FEATURES" -TARGET="_top" ->new - features</A -> along the way.</P -><P -> The result of this is <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, whose first - stable version, 3.0, was released August, 2002. - </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="contact.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -> </TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Contacting the developers, Bug Reporting and Feature Requests</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -> </TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy Copyright, License and History + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Frequently Asked Questions" href= + "index.html"> + <link rel="PREVIOUS" title= + "Contacting the developers, Bug Reporting and Feature Requests" href= + "contact.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Frequently Asked Questions + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="contact.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="COPYRIGHT">7. Privoxy Copyright, License and History</a> + </h1> + <p> + Copyright © 2001-2011 by Privoxy Developers <code class= + "EMAIL"><<a href= + "mailto:ijbswa-developers@lists.sourceforge.net">ijbswa-developers@lists.sourceforge.net</a>></code> + </p> + <p> + Some source code is based on code Copyright © 1997 by Anonymous + Coders and Junkbusters, Inc. and licensed under the <i class= + "CITETITLE">GNU General Public License</i>. + </p> + <p> + Portions of this document are <span class="QUOTE">"borrowed"</span> + from the original <span class="APPLICATION">Junkbuster</span> (tm) + FAQ, and modified as appropriate for <span class= + "APPLICATION">Privoxy</span>. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN1464">7.1. License</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span> is free software; you can + redistribute it and/or modify it under the terms of the <i class= + "CITETITLE">GNU General Public License</i>, version 2, as published + by the Free Software Foundation. + </p> + <p> + 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 <a + href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + target="_top"><i class="CITETITLE">GNU General Public + License</i></a> for details. + </p> + <p> + You should have received a copy of the <i class="CITETITLE">GNU + GPL</i> along with this program; if not, write to the + </p> + <p class="ADDRESS"> + Free Software<br> + Foundation, Inc. <span class="STREET">51 Franklin + Street, Fifth Floor</span><br> + <span class="CITY">Boston</span>, <span class= + "STATE">MA</span> <span class="POSTCODE">02110-1301</span><br> + <span class="COUNTRY">USA</span> + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN1480">7.2. History</a> + </h2> + <p> + A long time ago, there was the <a href= + "http://www.junkbusters.com/ijb.html" target="_top"><span class= + "APPLICATION">Internet Junkbuster</span></a>, by Anonymous Coders + and <a href="http://www.junkbusters.com/" target="_top">Junkbusters + Corporation</a>. This saved many users a lot of pain in the early + days of web advertising and user tracking. + </p> + <p> + But the web, its protocols and standards, and with it, the + techniques for forcing ads on users, give up autonomy over their + browsing, and for tracking them, keeps evolving. Unfortunately, the + <span class="APPLICATION">Internet Junkbuster</span> did not. + Version 2.0.2, published in 1998, was (and is) the last official <a + href="http://www.junkbusters.com/ijbdist.html#release" target= + "_top">release</a> available from <a href= + "http://www.junkbusters.com" target="_top">Junkbusters + Corporation</a>. Fortunately, it had been released under the GNU <a + href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + target="_top">GPL</a>, which allowed further development by others. + </p> + <p> + So Stefan Waldherr started maintaining an improved version of the + software, to which eventually a number of people contributed + patches. It could already replace banners with a transparent image, + and had a first version of pop-up killing, but it was still very + closely based on the original, with all its limitations, such as + the lack of HTTP/1.1 support, flexible per-site configuration, or + content modification. The last release from this effort was version + 2.0.2-10, published in 2000. + </p> + <p> + Then, some <a href= + "http://www.privoxy.org/user-manual/copyright.html#AUTHORS" target= + "_top">developers</a> picked up the thread, and started turning the + software inside out, upside down, and then reassembled it, adding + many <a href= + "http://www.privoxy.org/user-manual/introduction.html#FEATURES" + target="_top">new features</a> along the way. + </p> + <p> + The result of this is <span class="APPLICATION">Privoxy</span>, + whose first stable version, 3.0, was released August, 2002. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="contact.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Contacting the developers, Bug Reporting and Feature Requests + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/faq/general.html b/doc/webserver/faq/general.html index baaf5d43..24a54427 100644 --- a/doc/webserver/faq/general.html +++ b/doc/webserver/faq/general.html @@ -1,1080 +1,685 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->General Information</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Frequently Asked Questions" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Privoxy Frequently Asked Questions" -HREF="index.html"><LINK -REL="NEXT" -TITLE="Installation" -HREF="installation.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Frequently Asked Questions</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="index.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="installation.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="GENERAL" ->1. General Information</A -></H1 -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="WHO-USES" ->1.1. Who should give <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> a try?</A -></H3 -><P -> Anyone who is interested in security, privacy, or in - finer-grained control over their web and Internet experience. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="BESTCHOICE" ->1.2. Is Privoxy the best choice for -me?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is certainly a good choice, especially for those who want more - control and security. Those with the willingness to read the documentation - and the ability to fine-tune their installation will benefit the most. - </P -><P -> One of <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - strengths is that it is highly configurable giving you the ability to - completely personalize your installation. Being familiar with, or at least - having an interest in learning about <A -HREF="http://en.wikipedia.org/wiki/Http" -TARGET="_top" ->HTTP</A -> and other networking - protocols, <A -HREF="http://en.wikipedia.org/wiki/Html" -TARGET="_top" ->HTML</A ->, and - <A -HREF="http://en.wikipedia.org/wiki/Regular_expressions" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"Regular - Expressions"</SPAN -></A -> - will be a big plus and will help you get the most out of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - A new installation just includes a very basic configuration. The user - should take this as a starting point only, and enhance it as he or she - sees fit. In fact, the user is encouraged, and expected to, fine-tune the - configuration. - </P -><P -> Much of <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> configuration can be done - with a <A -HREF="http://en.wikipedia.org/wiki/Web_browser" -TARGET="_top" ->Web browser</A ->. - But there are areas where configuration is done using a - <A -HREF="http://en.wikipedia.org/wiki/Text_editors" -TARGET="_top" ->text editor</A -> - to edit configuration files. Also note that the web-based action editor - doesn't use authentication and should only be enabled in environments - where all clients with access to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> listening port can be trusted. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="PROXYMORON" ->1.3. What is a <SPAN -CLASS="QUOTE" ->"proxy"</SPAN ->? How does -Privoxy work?</A -></H3 -><P -> A <A -HREF="http://en.wikipedia.org/wiki/Proxy_server" -TARGET="_top" ->web proxy</A -> - is a service, based on a software such as <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, that clients - (i.e. browsers) can use instead of connecting to web servers directly. - The clients then ask the proxy to request objects (web pages, images, movies etc) - on their behalf and to forward the data to the clients. - It is a <SPAN -CLASS="QUOTE" ->"go-between"</SPAN ->. For details, see - <A -HREF="http://en.wikipedia.org/wiki/Proxy_server" -TARGET="_top" ->Wikipedia's proxy definition</A ->. - </P -><P -> There are many reasons to use web proxies, such as security (firewalling), - efficiency (caching) and others, and there are any number of proxies - to accommodate those needs. - </P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is a proxy that is primarily focused on - privacy enhancement, ad and junk elimination and freeing the user from - restrictions placed on his activities. Sitting between your browser(s) and the Internet, - it is in a perfect position to filter outbound personal information that your - browser is leaking, as well as inbound junk. It uses a variety of techniques to do - this, all of which are under your complete control via the various configuration - files and options. Being a proxy also makes it easier to share - configurations among multiple browsers and/or users. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="OTHERSTUFF" ->1.4. Does Privoxy do anything more than ad blocking?</A -></H3 -><P -> - Yes, ad blocking is but one possible use. There are many, many ways <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - can be used to sanitize and customize web browsing. </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NEWJB" ->1.5. What is this new version of -<SPAN -CLASS="QUOTE" ->"Junkbuster"</SPAN ->?</A -></H3 -><P -> A long time ago, there was the - <A -HREF="http://www.junkbusters.com/ijb.html" -TARGET="_top" -><SPAN -CLASS="APPLICATION" ->Internet Junkbuster</SPAN -></A ->, - by Anonymous Coders and <A -HREF="http://www.junkbusters.com/" -TARGET="_top" ->Junkbusters - Corporation</A ->. This saved many users a lot of pain in the early days of - web advertising and user tracking.</P -><P -> But the web, its protocols and standards, and with it, the techniques for - forcing ads on users, give up autonomy over their browsing, and - for tracking them, keeps evolving. Unfortunately, the <SPAN -CLASS="APPLICATION" ->Internet - Junkbuster</SPAN -> did not. Version 2.0.2, published in 1998, was - (and is) the last official - <A -HREF="http://www.junkbusters.com/ijbdist.html#release" -TARGET="_top" ->release</A -> - available from <A -HREF="http://www.junkbusters.com" -TARGET="_top" ->Junkbusters Corporation</A ->. - Fortunately, it had been released under the GNU - <A -HREF="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" -TARGET="_top" ->GPL</A ->, - which allowed further development by others.</P -><P -> So Stefan Waldherr started maintaining an improved version of the - software, to which eventually a number of people contributed patches. - It could already replace banners with a transparent image, and had a first - version of pop-up killing, but it was still very closely based on the - original, with all its limitations, such as the lack of HTTP/1.1 support, - flexible per-site configuration, or content modification. The last release - from this effort was version 2.0.2-10, published in 2000.</P -><P -> Then, some - <A -HREF="http://www.privoxy.org/user-manual/copyright.html#AUTHORS" -TARGET="_top" ->developers</A -> - picked up the thread, and started turning the software inside out, upside down, - and then reassembled it, adding many - <A -HREF="http://www.privoxy.org/user-manual/introduction.html#FEATURES" -TARGET="_top" ->new - features</A -> along the way.</P -><P -> The result of this is <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, whose first - stable version, 3.0, was released August, 2002. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN85" ->1.6. Why <SPAN -CLASS="QUOTE" ->"Privoxy"</SPAN ->? Why change the name from -Junkbuster at all?</A -></H3 -><P -> Though outdated, <A -HREF="http://junkbusters.com/" -TARGET="_top" ->Junkbusters Corporation</A -> - continues to offer their original version of the <SPAN -CLASS="APPLICATION" ->Internet - Junkbuster</SPAN ->, so publishing our - <SPAN -CLASS="APPLICATION" -> Junkbuster</SPAN ->-derived software under the same name - led to confusion.</P -><P -> There are also potential legal complications from our use of the - <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN -> name, which is a registered trademark of - <A -HREF="http://junkbusters.com/" -TARGET="_top" ->Junkbusters Corporation</A ->. - There are, however, no objections from Junkbusters Corporation to the - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> project itself, and they, in fact, still - share our ideals and goals.</P -><P -> The developers also believed that there are so many improvements over the original - code, that it was time to make a clean break from the past and make - a name in their own right.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is the - <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Privacy Enhancing Proxy</I -></SPAN ->"</SPAN ->. Also, its content - modification and junk suppression gives <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->you</I -></SPAN ->, the user, more - control, more freedom, and allows you to browse your personal and - <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->private</I -></SPAN -> edition"</SPAN -> of the web.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DIFFERS" ->1.7. How does Privoxy differ -from the old Junkbuster?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> picks up where - <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN -> left off. - The new <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> still blocks ads and banners, - still manages <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->cookies</A ->, and still - helps protect your privacy. But, most of these features have been enhanced, - and many new ones have been added, all in the same vein. - </P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s new features include:</P -><P -> <P -></P -><UL -><LI -><P -> Supports "Connection: keep-alive". Outgoing connections can - be kept alive independently from the client. - </P -></LI -><LI -><P -> Supports IPv6, provided the operating system does so too, - and the configure script detects it. - </P -></LI -><LI -><P -> Supports tagging which allows to change the behaviour - based on client and server headers. - </P -></LI -><LI -><P -> Can be run as an "intercepting" proxy, which obviates the need to - configure browsers individually. - </P -></LI -><LI -><P -> Sophisticated actions and filters for manipulating both server and client - headers. - </P -></LI -><LI -><P -> Can be chained with other proxies. - </P -></LI -><LI -><P -> Integrated browser-based configuration and control utility at <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A -> - (shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A ->). Browser-based - tracing of rule and filter effects. Remote toggling. - </P -></LI -><LI -><P -> Web page filtering (text replacements, removes banners based on size, - invisible <SPAN -CLASS="QUOTE" ->"web-bugs"</SPAN -> and HTML annoyances, etc.) - </P -></LI -><LI -><P -> Modularized configuration that allows for standard settings and - user settings to reside in separate files, so that installing updated - actions files won't overwrite individual user settings. - </P -></LI -><LI -><P -> Support for Perl Compatible Regular Expressions in the configuration files, and - a more sophisticated and flexible configuration syntax. - </P -></LI -><LI -><P -> GIF de-animation. - </P -></LI -><LI -><P -> Bypass many click-tracking scripts (avoids script redirection). - </P -></LI -><LI -><P -> User-customizable HTML templates for most proxy-generated pages (e.g. "blocked" page). - </P -></LI -><LI -><P -> Auto-detection and re-reading of config file changes. - </P -></LI -><LI -><P -> Most features are controllable on a per-site or per-location basis. - </P -></LI -><LI -><P -> Many smaller new features added, limitations and bugs removed. - </P -></LI -></UL -></P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="WHATSANAD" ->1.8. How does Privoxy know what is -an ad, and what is not?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s approach to blocking ads is twofold:</P -><P -> First, there are certain patterns in the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->locations</I -></SPAN -> (URLs) - of banner images. This applies to both the path (you wouldn't guess how many - web sites serve their banners from a directory called <SPAN -CLASS="QUOTE" ->"banners"</SPAN ->!) - and the host (blocking the big banner hosting services like doublecklick.net - already helps a lot). <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> takes advantage of this - fact by using <A -HREF="../user-manual/actions-file.html#AF-PATTERNS" -TARGET="_top" ->URL - patterns</A -> to sort out and block the requests for things that sound - like they would be ads or banners.</P -><P -> Second, banners tend to come in certain <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->sizes</I -></SPAN ->. But you - can't tell the size of an image by its URL without downloading it, and if you - do, it's too late to save bandwidth. Therefore, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - also inspects the HTML sources of web pages while they are loaded, and replaces - references to images with standard banner sizes by dummy references, so that - your browser doesn't request them anymore in the first place.</P -><P -> Both of this involves a certain amount of guesswork and is, of course, freely - and readily configurable.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN163" ->1.9. Can Privoxy make mistakes? -This does not sound very scientific.</A -></H3 -><P -> Actually, it's a black art ;-) And yes, it is always possible to have a broad - rule accidentally block or change something by mistake. You will almost surely - run into such situations at some point. It is tricky writing rules to - cover every conceivable possibility, and not occasionally get false positives.</P -><P -> But this should not be a big concern since the - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> configuration is very flexible, and - includes tools to help identify these types of situations so they can be - addressed as needed, allowing you to customize your installation. - (<A -HREF="trouble.html#BADSITE" ->See the Troubleshooting section below</A ->.)</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN169" ->1.10. Will I have to configure Privoxy - before I can use it?</A -></H3 -><P -> That depends on your expectations. - The default installation should give you a good starting - point, and block <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->most</I -></SPAN -> ads and unwanted content, - but many of the more advanced features are off by default, and require - you to activate them. </P -><P -> You do have to set up your browser to use - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> (see the <A -HREF="installation.html#FIRSTSTEP" ->Installation section below</A ->). </P -><P -> And you will certainly run into situations where there are false positives, - or ads not being blocked that you may not want to see. In these cases, you - would certainly benefit by customizing <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - configuration to more closely match your individual situation. And we - encourage you to do this. This is where the real power of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> lies!</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="LAN" ->1.11. Can Privoxy run as a server on a network?</A -></H3 -><P -> - Yes, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> runs as a server already, and can easily be configured to - <SPAN -CLASS="QUOTE" ->"serve"</SPAN -> more than one client. See <A -HREF="configuration.html#LANCONFIG" -> How can I set up Privoxy to act as a proxy for my LAN</A -> below.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="BROWSERS2" ->1.12. My browser does the same things as -Privoxy. Why should I use Privoxy at all?</A -></H3 -><P -> Modern browsers do indeed have <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->some</I -></SPAN -> of the same - functionality as <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. Maybe this is - adequate for you. But <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is very - versatile and powerful, and can probably do a number of things - your browser just can't. - </P -><P -> In addition, a proxy is good choice if you use multiple browsers, or - have a LAN with multiple computers since <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can run as a server - application. This way all the configuration is in one place, and you don't - have to maintain a similar configuration for possibly many browsers or - users. - </P -><P -> Note, however, that it's recommended to leverage both your browser's - and <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> privacy enhancing features - at the same time. While your browser probably lacks some features - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> offers, it should also be able to do some things more - reliable, for example restricting and suppressing JavaScript. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="WHYTRUST" ->1.13. Why should I trust Privoxy?</A -></H3 -><P -> The most important reason is because you have access to - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->everything</I -></SPAN ->, and you can control everything. You can - check every line of every configuration file yourself. You can check every - last bit of source code should you desire. And even if you can't read code, - there should be some comfort in knowing that other people can, - and do read it. You can build the software from scratch, if you want, - so that you know the executable is clean, and that it is - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->yours</I -></SPAN ->. In fact, we encourage this level of scrutiny. It - is one reason we use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> ourselves. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="LICENSE" ->1.14. Is there is a license or fee? What about a -warranty? Registration?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is free software and licensed under the <A -HREF="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" -TARGET="_top" ->GNU General Public License (GPL) version 2</A ->. - It is free to use, copy, modify or distribute as you wish under the terms of this - license. Please see the <A -HREF="copyright.html" ->Copyright</A -> section for more - information on the license and copyright. Or the <TT -CLASS="FILENAME" ->LICENSE</TT -> file - that should be included. - </P -><P -> There is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->no warranty</I -></SPAN -> of any kind, expressed, implied or otherwise. - That is something that would cost real money ;-) There is no registration either. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="SPYWARE" ->1.15. Can Privoxy remove spyware? Adware? Viruses?</A -></H3 -><P -> No, at least not reliably enough to trust it. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is not designed to be - a malware removal tool and the default configuration doesn't even try to - filter out any malware.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> could help prevent contact from (known) sites that use such - tactics with appropriate configuration rules, and thus could conceivably - prevent contamination from such sites. However, keeping such a configuration - up to date would require a lot of time and effort that would be better spend - on keeping your software itself up to date so it doesn't have known - vulnerabilities.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="OTHERADS" ->1.16. Can I use Privoxy with other ad-blocking software?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> should work fine with other proxies and other software in general.</P -><P -> But it is probably not necessary to use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in conjunction with other - ad-blocking products, and this could conceivably cause undesirable results. - It might be better to choose one software or the other and work a little to - tweak its configuration to your liking.</P -><P -> Note that this is an advice specific to ad blocking.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="HELP-THE-DEVELOPERS" ->1.17. I would like to help you, what can I do?</A -></H3 -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="PARTICIPATE" ->1.17.1. Would you like to participate?</A -></H4 -><P -> Well, we <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->always</I -></SPAN -> need help. There is something for - everybody who wants to help us. We welcome new developers, packagers, - testers, documentation writers or really anyone with a desire to help in - any way. You <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->DO NOT</I -></SPAN -> need to be a - <SPAN -CLASS="QUOTE" ->"programmer"</SPAN ->. There are many other tasks available. In fact, - the programmers often can't spend as much time programming because of some - of the other, more mundane things that need to be done, like checking the - Tracker feedback sections or responding to user questions on the mailing - lists. - </P -><P -> So first thing, subscribe to the <A -HREF="https://lists.sourceforge.net/lists/listinfo/ijbswa-users" -TARGET="_top" ->Privoxy Users</A -> - or the <A -HREF="https://lists.sourceforge.net/lists/listinfo/ijbswa-developers" -TARGET="_top" ->Privoxy - Developers</A -> mailing list, join the discussion, help out other users, provide general - feedback or report problems you noticed. - </P -><P -> If you intend to help out with the trackers, you also might want to <A -HREF="https://sourceforge.net/account/register.php" -TARGET="_top" ->get an account on SourceForge.net</A -> - so we don't confuse you with the other name-less users. - </P -><P -> We also have a <A -HREF="../developer-manual/index.html" -TARGET="_top" ->Developer's Manual</A ->. - While it is partly out of date, it's still worth reading.</P -><P -> Our <A -HREF="http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/current/TODO?view=markup" -TARGET="_top" ->TODO list</A -> - may be of interest to you as well. - Please let us know if you want to work on one of the items listed.</P -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="DONATE" ->1.17.2. Would you like to donate?</A -></H4 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is developed by unpaid volunteers - and thus our current running costs are pretty low. Nevertheless, we - have plans that will cost money in the future. We would like to get - this money through donations made by our users.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has therefore become an associated - project of <A -HREF="http://www.spi-inc.org/about-spi/about-spi" -TARGET="_top" ->Software - in the Public Interest (SPI)</A ->, which allows us to receive tax-deductible - donations in most western countries.</P -><P -> We intend to use the donations to pay for our domain after transferring - it to SPI. Our goal is to make sure there's no single point of failure - and the bill gets paid and the site keeps running even if a some of - the currently active developers were to suddenly disappear for a while.</P -><P -> We would also like to spend some money on more reliable hosting, - on hardware to help make sure <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - keeps running on platforms the developers currently can't test on, - and on technical books to educate our developers about said platforms - or to improve their knowledge in general.</P -><P -> If you enjoy our software and feel like helping out with a donation, - please have a look at - <A -HREF="http://www.spi-inc.org/donations" -TARGET="_top" ->SPI's donation page</A -> - to see what the options are.</P -></DIV -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="installation.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Privoxy Frequently Asked Questions</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Installation</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + General Information + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Frequently Asked Questions" href= + "index.html"> + <link rel="PREVIOUS" title="Privoxy Frequently Asked Questions" href= + "index.html"> + <link rel="NEXT" title="Installation" href="installation.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Frequently Asked Questions + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="index.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="installation.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="GENERAL">1. General Information</a> + </h1> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="WHO-USES">1.1. Who should give <span class= + "APPLICATION">Privoxy</span> a try?</a> + </h3> + <p> + Anyone who is interested in security, privacy, or in finer-grained + control over their web and Internet experience. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="BESTCHOICE">1.2. Is Privoxy the best choice for me?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> is certainly a good + choice, especially for those who want more control and security. + Those with the willingness to read the documentation and the + ability to fine-tune their installation will benefit the most. + </p> + <p> + One of <span class="APPLICATION">Privoxy's</span> strengths is that + it is highly configurable giving you the ability to completely + personalize your installation. Being familiar with, or at least + having an interest in learning about <a href= + "http://en.wikipedia.org/wiki/Http" target="_top">HTTP</a> and + other networking protocols, <a href= + "http://en.wikipedia.org/wiki/Html" target="_top">HTML</a>, and <a + href="http://en.wikipedia.org/wiki/Regular_expressions" target= + "_top"><span class="QUOTE">"Regular Expressions"</span></a> will be + a big plus and will help you get the most out of <span class= + "APPLICATION">Privoxy</span>. A new installation just includes a + very basic configuration. The user should take this as a starting + point only, and enhance it as he or she sees fit. In fact, the user + is encouraged, and expected to, fine-tune the configuration. + </p> + <p> + Much of <span class="APPLICATION">Privoxy's</span> configuration + can be done with a <a href= + "http://en.wikipedia.org/wiki/Web_browser" target="_top">Web + browser</a>. But there are areas where configuration is done using + a <a href="http://en.wikipedia.org/wiki/Text_editors" target= + "_top">text editor</a> to edit configuration files. Also note that + the web-based action editor doesn't use authentication and should + only be enabled in environments where all clients with access to + <span class="APPLICATION">Privoxy</span> listening port can be + trusted. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="PROXYMORON">1.3. What is a <span class= + "QUOTE">"proxy"</span>? How does Privoxy work?</a> + </h3> + <p> + A <a href="http://en.wikipedia.org/wiki/Proxy_server" target= + "_top">web proxy</a> is a service, based on a software such as + <span class="APPLICATION">Privoxy</span>, that clients (i.e. + browsers) can use instead of connecting to web servers directly. + The clients then ask the proxy to request objects (web pages, + images, movies etc) on their behalf and to forward the data to the + clients. It is a <span class="QUOTE">"go-between"</span>. For + details, see <a href="http://en.wikipedia.org/wiki/Proxy_server" + target="_top">Wikipedia's proxy definition</a>. + </p> + <p> + There are many reasons to use web proxies, such as security + (firewalling), efficiency (caching) and others, and there are any + number of proxies to accommodate those needs. + </p> + <p> + <span class="APPLICATION">Privoxy</span> is a proxy that is + primarily focused on privacy enhancement, ad and junk elimination + and freeing the user from restrictions placed on his activities. + Sitting between your browser(s) and the Internet, it is in a + perfect position to filter outbound personal information that your + browser is leaking, as well as inbound junk. It uses a variety of + techniques to do this, all of which are under your complete control + via the various configuration files and options. Being a proxy also + makes it easier to share configurations among multiple browsers + and/or users. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="OTHERSTUFF">1.4. Does Privoxy do anything more than ad + blocking?</a> + </h3> + <p> + Yes, ad blocking is but one possible use. There are many, many ways + <span class="APPLICATION">Privoxy</span> can be used to sanitize + and customize web browsing. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NEWJB">1.5. What is this new version of <span class= + "QUOTE">"Junkbuster"</span>?</a> + </h3> + <p> + A long time ago, there was the <a href= + "http://www.junkbusters.com/ijb.html" target="_top"><span class= + "APPLICATION">Internet Junkbuster</span></a>, by Anonymous Coders + and <a href="http://www.junkbusters.com/" target="_top">Junkbusters + Corporation</a>. This saved many users a lot of pain in the early + days of web advertising and user tracking. + </p> + <p> + But the web, its protocols and standards, and with it, the + techniques for forcing ads on users, give up autonomy over their + browsing, and for tracking them, keeps evolving. Unfortunately, the + <span class="APPLICATION">Internet Junkbuster</span> did not. + Version 2.0.2, published in 1998, was (and is) the last official <a + href="http://www.junkbusters.com/ijbdist.html#release" target= + "_top">release</a> available from <a href= + "http://www.junkbusters.com" target="_top">Junkbusters + Corporation</a>. Fortunately, it had been released under the GNU <a + href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + target="_top">GPL</a>, which allowed further development by others. + </p> + <p> + So Stefan Waldherr started maintaining an improved version of the + software, to which eventually a number of people contributed + patches. It could already replace banners with a transparent image, + and had a first version of pop-up killing, but it was still very + closely based on the original, with all its limitations, such as + the lack of HTTP/1.1 support, flexible per-site configuration, or + content modification. The last release from this effort was version + 2.0.2-10, published in 2000. + </p> + <p> + Then, some <a href= + "http://www.privoxy.org/user-manual/copyright.html#AUTHORS" target= + "_top">developers</a> picked up the thread, and started turning the + software inside out, upside down, and then reassembled it, adding + many <a href= + "http://www.privoxy.org/user-manual/introduction.html#FEATURES" + target="_top">new features</a> along the way. + </p> + <p> + The result of this is <span class="APPLICATION">Privoxy</span>, + whose first stable version, 3.0, was released August, 2002. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN85">1.6. Why <span class="QUOTE">"Privoxy"</span>? Why + change the name from Junkbuster at all?</a> + </h3> + <p> + Though outdated, <a href="http://junkbusters.com/" target= + "_top">Junkbusters Corporation</a> continues to offer their + original version of the <span class="APPLICATION">Internet + Junkbuster</span>, so publishing our <span class= + "APPLICATION">Junkbuster</span>-derived software under the same + name led to confusion. + </p> + <p> + There are also potential legal complications from our use of the + <span class="APPLICATION">Junkbuster</span> name, which is a + registered trademark of <a href="http://junkbusters.com/" target= + "_top">Junkbusters Corporation</a>. There are, however, no + objections from Junkbusters Corporation to the <span class= + "APPLICATION">Privoxy</span> project itself, and they, in fact, + still share our ideals and goals. + </p> + <p> + The developers also believed that there are so many improvements + over the original code, that it was time to make a clean break from + the past and make a name in their own right. + </p> + <p> + <span class="APPLICATION">Privoxy</span> is the <span class= + "QUOTE">"<span class="emphasis"><i class="EMPHASIS">Privacy + Enhancing Proxy</i></span>"</span>. Also, its content modification + and junk suppression gives <span class="emphasis"><i class= + "EMPHASIS">you</i></span>, the user, more control, more freedom, + and allows you to browse your personal and <span class= + "QUOTE">"<span class="emphasis"><i class= + "EMPHASIS">private</i></span> edition"</span> of the web. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DIFFERS">1.7. How does Privoxy differ from the old + Junkbuster?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> picks up where <span + class="APPLICATION">Junkbuster</span> left off. The new <span + class="APPLICATION">Privoxy</span> still blocks ads and banners, + still manages <a href="http://en.wikipedia.org/wiki/Browser_cookie" + target="_top">cookies</a>, and still helps protect your privacy. + But, most of these features have been enhanced, and many new ones + have been added, all in the same vein. + </p> + <p> + <span class="APPLICATION">Privoxy</span>'s new features include: + </p> + <p> + </p> + <ul> + <li> + <p> + Supports "Connection: keep-alive". Outgoing connections can be + kept alive independently from the client. + </p> + </li> + <li> + <p> + Supports IPv6, provided the operating system does so too, and + the configure script detects it. + </p> + </li> + <li> + <p> + Supports tagging which allows to change the behaviour based on + client and server headers. + </p> + </li> + <li> + <p> + Can be run as an "intercepting" proxy, which obviates the need + to configure browsers individually. + </p> + </li> + <li> + <p> + Sophisticated actions and filters for manipulating both server + and client headers. + </p> + </li> + <li> + <p> + Can be chained with other proxies. + </p> + </li> + <li> + <p> + Integrated browser-based configuration and control utility at + <a href="http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a> (shortcut: <a href= + "http://p.p/" target="_top">http://p.p/</a>). Browser-based + tracing of rule and filter effects. Remote toggling. + </p> + </li> + <li> + <p> + Web page filtering (text replacements, removes banners based on + size, invisible <span class="QUOTE">"web-bugs"</span> and HTML + annoyances, etc.) + </p> + </li> + <li> + <p> + Modularized configuration that allows for standard settings and + user settings to reside in separate files, so that installing + updated actions files won't overwrite individual user settings. + </p> + </li> + <li> + <p> + Support for Perl Compatible Regular Expressions in the + configuration files, and a more sophisticated and flexible + configuration syntax. + </p> + </li> + <li> + <p> + GIF de-animation. + </p> + </li> + <li> + <p> + Bypass many click-tracking scripts (avoids script redirection). + </p> + </li> + <li> + <p> + User-customizable HTML templates for most proxy-generated pages + (e.g. "blocked" page). + </p> + </li> + <li> + <p> + Auto-detection and re-reading of config file changes. + </p> + </li> + <li> + <p> + Most features are controllable on a per-site or per-location + basis. + </p> + </li> + <li> + <p> + Many smaller new features added, limitations and bugs removed. + </p> + </li> + </ul> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="WHATSANAD">1.8. How does Privoxy know what is an ad, and + what is not?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span>'s approach to blocking ads + is twofold: + </p> + <p> + First, there are certain patterns in the <span class="emphasis"><i + class="EMPHASIS">locations</i></span> (URLs) of banner images. This + applies to both the path (you wouldn't guess how many web sites + serve their banners from a directory called <span class= + "QUOTE">"banners"</span>!) and the host (blocking the big banner + hosting services like doublecklick.net already helps a lot). <span + class="APPLICATION">Privoxy</span> takes advantage of this fact by + using <a href="../user-manual/actions-file.html#AF-PATTERNS" + target="_top">URL patterns</a> to sort out and block the requests + for things that sound like they would be ads or banners. + </p> + <p> + Second, banners tend to come in certain <span class="emphasis"><i + class="EMPHASIS">sizes</i></span>. But you can't tell the size of + an image by its URL without downloading it, and if you do, it's too + late to save bandwidth. Therefore, <span class= + "APPLICATION">Privoxy</span> also inspects the HTML sources of web + pages while they are loaded, and replaces references to images with + standard banner sizes by dummy references, so that your browser + doesn't request them anymore in the first place. + </p> + <p> + Both of this involves a certain amount of guesswork and is, of + course, freely and readily configurable. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN163">1.9. Can Privoxy make mistakes? This does not + sound very scientific.</a> + </h3> + <p> + Actually, it's a black art ;-) And yes, it is always possible to + have a broad rule accidentally block or change something by + mistake. You will almost surely run into such situations at some + point. It is tricky writing rules to cover every conceivable + possibility, and not occasionally get false positives. + </p> + <p> + But this should not be a big concern since the <span class= + "APPLICATION">Privoxy</span> configuration is very flexible, and + includes tools to help identify these types of situations so they + can be addressed as needed, allowing you to customize your + installation. (<a href="trouble.html#BADSITE">See the + Troubleshooting section below</a>.) + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN169">1.10. Will I have to configure Privoxy before I + can use it?</a> + </h3> + <p> + That depends on your expectations. The default installation should + give you a good starting point, and block <span class="emphasis"><i + class="EMPHASIS">most</i></span> ads and unwanted content, but many + of the more advanced features are off by default, and require you + to activate them. + </p> + <p> + You do have to set up your browser to use <span class= + "APPLICATION">Privoxy</span> (see the <a href= + "installation.html#FIRSTSTEP">Installation section below</a>). + </p> + <p> + And you will certainly run into situations where there are false + positives, or ads not being blocked that you may not want to see. + In these cases, you would certainly benefit by customizing <span + class="APPLICATION">Privoxy's</span> configuration to more closely + match your individual situation. And we encourage you to do this. + This is where the real power of <span class= + "APPLICATION">Privoxy</span> lies! + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="LAN">1.11. Can Privoxy run as a server on a network?</a> + </h3> + <p> + Yes, <span class="APPLICATION">Privoxy</span> runs as a server + already, and can easily be configured to <span class= + "QUOTE">"serve"</span> more than one client. See <a href= + "configuration.html#LANCONFIG">How can I set up Privoxy to act as a + proxy for my LAN</a> below. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="BROWSERS2">1.12. My browser does the same things as + Privoxy. Why should I use Privoxy at all?</a> + </h3> + <p> + Modern browsers do indeed have <span class="emphasis"><i class= + "EMPHASIS">some</i></span> of the same functionality as <span + class="APPLICATION">Privoxy</span>. Maybe this is adequate for you. + But <span class="APPLICATION">Privoxy</span> is very versatile and + powerful, and can probably do a number of things your browser just + can't. + </p> + <p> + In addition, a proxy is good choice if you use multiple browsers, + or have a LAN with multiple computers since <span class= + "APPLICATION">Privoxy</span> can run as a server application. This + way all the configuration is in one place, and you don't have to + maintain a similar configuration for possibly many browsers or + users. + </p> + <p> + Note, however, that it's recommended to leverage both your + browser's and <span class="APPLICATION">Privoxy's</span> privacy + enhancing features at the same time. While your browser probably + lacks some features <span class="APPLICATION">Privoxy</span> + offers, it should also be able to do some things more reliable, for + example restricting and suppressing JavaScript. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="WHYTRUST">1.13. Why should I trust Privoxy?</a> + </h3> + <p> + The most important reason is because you have access to <span + class="emphasis"><i class="EMPHASIS">everything</i></span>, and you + can control everything. You can check every line of every + configuration file yourself. You can check every last bit of source + code should you desire. And even if you can't read code, there + should be some comfort in knowing that other people can, and do + read it. You can build the software from scratch, if you want, so + that you know the executable is clean, and that it is <span class= + "emphasis"><i class="EMPHASIS">yours</i></span>. In fact, we + encourage this level of scrutiny. It is one reason we use <span + class="APPLICATION">Privoxy</span> ourselves. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="LICENSE">1.14. Is there is a license or fee? What about a + warranty? Registration?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> is free software and + licensed under the <a href= + "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" target= + "_top">GNU General Public License (GPL) version 2</a>. It is free + to use, copy, modify or distribute as you wish under the terms of + this license. Please see the <a href="copyright.html">Copyright</a> + section for more information on the license and copyright. Or the + <tt class="FILENAME">LICENSE</tt> file that should be included. + </p> + <p> + There is <span class="emphasis"><i class="EMPHASIS">no + warranty</i></span> of any kind, expressed, implied or otherwise. + That is something that would cost real money ;-) There is no + registration either. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="SPYWARE">1.15. Can Privoxy remove spyware? Adware? + Viruses?</a> + </h3> + <p> + No, at least not reliably enough to trust it. <span class= + "APPLICATION">Privoxy</span> is not designed to be a malware + removal tool and the default configuration doesn't even try to + filter out any malware. + </p> + <p> + <span class="APPLICATION">Privoxy</span> could help prevent contact + from (known) sites that use such tactics with appropriate + configuration rules, and thus could conceivably prevent + contamination from such sites. However, keeping such a + configuration up to date would require a lot of time and effort + that would be better spend on keeping your software itself up to + date so it doesn't have known vulnerabilities. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="OTHERADS">1.16. Can I use Privoxy with other ad-blocking + software?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> should work fine with + other proxies and other software in general. + </p> + <p> + But it is probably not necessary to use <span class= + "APPLICATION">Privoxy</span> in conjunction with other ad-blocking + products, and this could conceivably cause undesirable results. It + might be better to choose one software or the other and work a + little to tweak its configuration to your liking. + </p> + <p> + Note that this is an advice specific to ad blocking. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="HELP-THE-DEVELOPERS">1.17. I would like to help you, what + can I do?</a> + </h3> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="PARTICIPATE">1.17.1. Would you like to participate?</a> + </h4> + <p> + Well, we <span class="emphasis"><i class= + "EMPHASIS">always</i></span> need help. There is something for + everybody who wants to help us. We welcome new developers, + packagers, testers, documentation writers or really anyone with a + desire to help in any way. You <span class="emphasis"><i class= + "EMPHASIS">DO NOT</i></span> need to be a <span class= + "QUOTE">"programmer"</span>. There are many other tasks + available. In fact, the programmers often can't spend as much + time programming because of some of the other, more mundane + things that need to be done, like checking the Tracker feedback + sections or responding to user questions on the mailing lists. + </p> + <p> + So first thing, subscribe to the <a href= + "https://lists.sourceforge.net/lists/listinfo/ijbswa-users" + target="_top">Privoxy Users</a> or the <a href= + "https://lists.sourceforge.net/lists/listinfo/ijbswa-developers" + target="_top">Privoxy Developers</a> mailing list, join the + discussion, help out other users, provide general feedback or + report problems you noticed. + </p> + <p> + If you intend to help out with the trackers, you also might want + to <a href="https://sourceforge.net/account/register.php" target= + "_top">get an account on SourceForge.net</a> so we don't confuse + you with the other name-less users. + </p> + <p> + We also have a <a href="../developer-manual/index.html" target= + "_top">Developer's Manual</a>. While it is partly out of date, + it's still worth reading. + </p> + <p> + Our <a href= + "http://ijbswa.cvs.sourceforge.net/viewvc/ijbswa/current/TODO?view=markup" + target="_top">TODO list</a> may be of interest to you as well. + Please let us know if you want to work on one of the items + listed. + </p> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="DONATE">1.17.2. Would you like to donate?</a> + </h4> + <p> + <span class="APPLICATION">Privoxy</span> is developed by unpaid + volunteers and thus our current running costs are pretty low. + Nevertheless, we have plans that will cost money in the future. + We would like to get this money through donations made by our + users. + </p> + <p> + <span class="APPLICATION">Privoxy</span> has therefore become an + associated project of <a href= + "http://www.spi-inc.org/about-spi/about-spi" target= + "_top">Software in the Public Interest (SPI)</a>, which allows us + to receive tax-deductible donations in most western countries. + </p> + <p> + We intend to use the donations to pay for our domain after + transferring it to SPI. Our goal is to make sure there's no + single point of failure and the bill gets paid and the site keeps + running even if a some of the currently active developers were to + suddenly disappear for a while. + </p> + <p> + We would also like to spend some money on more reliable hosting, + on hardware to help make sure <span class= + "APPLICATION">Privoxy</span> keeps running on platforms the + developers currently can't test on, and on technical books to + educate our developers about said platforms or to improve their + knowledge in general. + </p> + <p> + If you enjoy our software and feel like helping out with a + donation, please have a look at <a href= + "http://www.spi-inc.org/donations" target="_top">SPI's donation + page</a> to see what the options are. + </p> + </div> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="index.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="installation.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Privoxy Frequently Asked Questions + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Installation + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/faq/index.html b/doc/webserver/faq/index.html index 7e049eba..d73498c9 100644 --- a/doc/webserver/faq/index.html +++ b/doc/webserver/faq/index.html @@ -1,1023 +1,686 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy Frequently Asked Questions</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="NEXT" -TITLE="General Information" -HREF="general.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="ARTICLE" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="ARTICLE" -><DIV -CLASS="TITLEPAGE" -><H1 -CLASS="TITLE" -><A -NAME="AEN2" ->Privoxy Frequently Asked Questions</A -></H1 -><P -CLASS="PUBDATE" -> <SUB -> <A -HREF="copyright.html" ->Copyright</A -> © 2001-2011 by - <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->Privoxy Developers</A -> - </SUB -><BR></P -><P -CLASS="PUBDATE" ->$Id: faq.sgml,v 2.80 2011/08/18 11:42:50 fabiankeil Exp $<BR></P -><DIV -><DIV -CLASS="ABSTRACT" -><P -></P -><A -NAME="AEN9" -></A -><P -> This FAQ gives quick answers to frequently asked questions about - <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->Privoxy</A ->. - It is not a substitute for the - <A -HREF="../user-manual/index.html" -TARGET="_top" -><I -CLASS="CITETITLE" ->Privoxy User Manual</I -></A ->. - - </P -><P ->What is Privoxy?</P -><P -> Privoxy is a non-caching web proxy with advanced filtering capabilities - for enhancing privacy, modifying web page data and HTTP headers, controlling - access, and removing ads and other obnoxious Internet junk. Privoxy has a - flexible configuration and can be customized to suit individual needs and tastes. - It has application for both stand-alone systems and multi-user networks.</P -><P -> Privoxy is Free Software and licensed under the GNU GPLv2.</P -><P -> Privoxy is an associated project of Software in the Public Interest (SPI).</P -><P -> Helping hands and donations are welcome: - <P -></P -><UL -><LI -><P -> <A -HREF="http://www.privoxy.org/faq/general.html#PARTICIPATE" -TARGET="_top" ->http://www.privoxy.org/faq/general.html#PARTICIPATE</A -> - </P -></LI -><LI -><P -> <A -HREF="http://www.privoxy.org/faq/general.html#DONATE" -TARGET="_top" ->http://www.privoxy.org/faq/general.html#DONATE</A -> - </P -></LI -></UL -></P -><P -> Please note that this document is a work in progress. This copy represents - the state at the release of version 3.0.18. - You can find the latest version of the document at <A -HREF="http://www.privoxy.org/faq/" -TARGET="_top" ->http://www.privoxy.org/faq/</A ->. - Please see the <A -HREF="contact.html" ->Contact section</A -> if you want to - contact the developers. - </P -><P -></P -></DIV -></DIV -><HR></DIV -><DIV -CLASS="TOC" -><DL -><DT -><B ->Table of Contents</B -></DT -><DT ->1. <A -HREF="general.html" ->General Information</A -></DT -><DD -><DL -><DT ->1.1. <A -HREF="general.html#WHO-USES" ->Who should give <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> a try?</A -></DT -><DT ->1.2. <A -HREF="general.html#BESTCHOICE" ->Is Privoxy the best choice for -me?</A -></DT -><DT ->1.3. <A -HREF="general.html#PROXYMORON" ->What is a <SPAN -CLASS="QUOTE" ->"proxy"</SPAN ->? How does -Privoxy work?</A -></DT -><DT ->1.4. <A -HREF="general.html#OTHERSTUFF" ->Does Privoxy do anything more than ad blocking?</A -></DT -><DT ->1.5. <A -HREF="general.html#NEWJB" ->What is this new version of -<SPAN -CLASS="QUOTE" ->"Junkbuster"</SPAN ->?</A -></DT -><DT ->1.6. <A -HREF="general.html#AEN85" ->Why <SPAN -CLASS="QUOTE" ->"Privoxy"</SPAN ->? Why change the name from -Junkbuster at all?</A -></DT -><DT ->1.7. <A -HREF="general.html#DIFFERS" ->How does Privoxy differ -from the old Junkbuster?</A -></DT -><DT ->1.8. <A -HREF="general.html#WHATSANAD" ->How does Privoxy know what is -an ad, and what is not?</A -></DT -><DT ->1.9. <A -HREF="general.html#AEN163" ->Can Privoxy make mistakes? -This does not sound very scientific.</A -></DT -><DT ->1.10. <A -HREF="general.html#AEN169" ->Will I have to configure Privoxy - before I can use it?</A -></DT -><DT ->1.11. <A -HREF="general.html#LAN" ->Can Privoxy run as a server on a network?</A -></DT -><DT ->1.12. <A -HREF="general.html#BROWSERS2" ->My browser does the same things as -Privoxy. Why should I use Privoxy at all?</A -></DT -><DT ->1.13. <A -HREF="general.html#WHYTRUST" ->Why should I trust Privoxy?</A -></DT -><DT ->1.14. <A -HREF="general.html#LICENSE" ->Is there is a license or fee? What about a -warranty? Registration?</A -></DT -><DT ->1.15. <A -HREF="general.html#SPYWARE" ->Can Privoxy remove spyware? Adware? Viruses?</A -></DT -><DT ->1.16. <A -HREF="general.html#OTHERADS" ->Can I use Privoxy with other ad-blocking software?</A -></DT -><DT ->1.17. <A -HREF="general.html#HELP-THE-DEVELOPERS" ->I would like to help you, what can I do?</A -></DT -><DD -><DL -><DT ->1.17.1. <A -HREF="general.html#PARTICIPATE" ->Would you like to participate?</A -></DT -><DT ->1.17.2. <A -HREF="general.html#DONATE" ->Would you like to donate?</A -></DT -></DL -></DD -></DL -></DD -><DT ->2. <A -HREF="installation.html" ->Installation</A -></DT -><DD -><DL -><DT ->2.1. <A -HREF="installation.html#WHICHBROWSERS" ->Which browsers are supported by Privoxy?</A -></DT -><DT ->2.2. <A -HREF="installation.html#WHICHOS" ->Which operating systems are supported?</A -></DT -><DT ->2.3. <A -HREF="installation.html#EMAIL-CLIENT" ->Can I use Privoxy with my email client?</A -></DT -><DT ->2.4. <A -HREF="installation.html#FIRSTSTEP" ->I just installed Privoxy. Is there anything -special I have to do now?</A -></DT -><DT ->2.5. <A -HREF="installation.html#LOCALHOST" ->What is the proxy address of Privoxy?</A -></DT -><DT ->2.6. <A -HREF="installation.html#NOTHING" ->I just installed Privoxy, and nothing is happening. -All the ads are there. What's wrong?</A -></DT -><DT ->2.7. <A -HREF="installation.html#NOTUSED" ->I get a <SPAN -CLASS="QUOTE" ->"Privoxy is not being used"</SPAN -> dummy page although -Privoxy is running and being used.</A -></DT -></DL -></DD -><DT ->3. <A -HREF="configuration.html" ->Configuration</A -></DT -><DD -><DL -><DT ->3.1. <A -HREF="configuration.html#AEN360" ->What exactly is an <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> file?</A -></DT -><DT ->3.2. <A -HREF="configuration.html#ACTIONSS" ->The <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> concept confuses me. Please list -some of these <SPAN -CLASS="QUOTE" ->"actions"</SPAN ->.</A -></DT -><DT ->3.3. <A -HREF="configuration.html#AEN383" ->How are actions files configured? What is the easiest -way to do this?</A -></DT -><DT ->3.4. <A -HREF="configuration.html#AEN392" ->There are several different <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> files. What are -the differences?</A -></DT -><DT ->3.5. <A -HREF="configuration.html#GETUPDATES" ->Where can I get updated Actions Files?</A -></DT -><DT ->3.6. <A -HREF="configuration.html#NEWCONFIG" ->Can I use my old config files?</A -></DT -><DT ->3.7. <A -HREF="configuration.html#DIFFICULT" ->Why is the configuration so complicated?</A -></DT -><DT ->3.8. <A -HREF="configuration.html#YAHOO" ->How can I make my Yahoo/Hotmail/Gmail account work?</A -></DT -><DT ->3.9. <A -HREF="configuration.html#CONFIGFILES" ->What's the difference between the -<SPAN -CLASS="QUOTE" ->"Cautious"</SPAN ->, <SPAN -CLASS="QUOTE" ->"Medium"</SPAN -> and <SPAN -CLASS="QUOTE" ->"Advanced"</SPAN -> defaults?</A -></DT -><DT ->3.10. <A -HREF="configuration.html#BROWSECONFIG" ->Why can I change the configuration -with a browser? Does that not raise security issues?</A -></DT -><DT ->3.11. <A -HREF="configuration.html#AEN480" ->What is the <TT -CLASS="FILENAME" ->default.filter</TT -> file? What is a <SPAN -CLASS="QUOTE" ->"filter"</SPAN ->?</A -></DT -><DT ->3.12. <A -HREF="configuration.html#LANCONFIG" ->How can I set up Privoxy to act as a proxy for my - LAN?</A -></DT -><DT ->3.13. <A -HREF="configuration.html#AEN531" ->Instead of ads, now I get a checkerboard pattern. I don't want to see anything.</A -></DT -><DT ->3.14. <A -HREF="configuration.html#AEN548" ->Why would anybody want to see a checkerboard pattern?</A -></DT -><DT ->3.15. <A -HREF="configuration.html#AEN554" ->I see some images being replaced with text -instead of the checkerboard image. Why and how do I get rid of this?</A -></DT -><DT ->3.16. <A -HREF="configuration.html#SRVANY" ->Can Privoxy run as a service -on Win2K/NT/XP?</A -></DT -><DT ->3.17. <A -HREF="configuration.html#OTHERPROXY" ->How can I make Privoxy work with other proxies?</A -></DT -><DT ->3.18. <A -HREF="configuration.html#PORT-80" ->Can I just set Privoxy to use port 80 -and thus avoid individual browser configuration?</A -></DT -><DT ->3.19. <A -HREF="configuration.html#TRANSPARENT" ->Can Privoxy run as a <SPAN -CLASS="QUOTE" ->"transparent"</SPAN -> proxy?</A -></DT -><DT ->3.20. <A -HREF="configuration.html#INTERCEPTING" ->Can Privoxy run as a <SPAN -CLASS="QUOTE" ->"intercepting"</SPAN -> proxy?</A -></DT -><DT ->3.21. <A -HREF="configuration.html#OUTLOOK" ->How can I configure Privoxy for use with Outlook?</A -></DT -><DT ->3.22. <A -HREF="configuration.html#OUTLOOK-MORE" ->How can I have separate rules just for HTML mail?</A -></DT -><DT ->3.23. <A -HREF="configuration.html#SNEAKY-COOKIES" ->I sometimes notice cookies sneaking through. How?</A -></DT -><DT ->3.24. <A -HREF="configuration.html#EVIL-COOKIES" ->Are all cookies bad? Why?</A -></DT -><DT ->3.25. <A -HREF="configuration.html#ALLOW-COOKIES" ->How can I allow permanent cookies for my trusted sites?</A -></DT -><DT ->3.26. <A -HREF="configuration.html#MULTIPLES" ->Can I have separate configurations for different users?</A -></DT -><DT ->3.27. <A -HREF="configuration.html#WHITELISTS" ->Can I set-up Privoxy as a whitelist of -<SPAN -CLASS="QUOTE" ->"good"</SPAN -> sites?</A -></DT -><DT ->3.28. <A -HREF="configuration.html#NO-ADBLOCK" ->How can I turn off ad-blocking?</A -></DT -><DT ->3.29. <A -HREF="configuration.html#TEMPLATES" ->How can I have custom template pages, like the -<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->BLOCKED</I -></SPAN -> page?</A -></DT -><DT ->3.30. <A -HREF="configuration.html#BLOCKALL" ->How can I remove the <SPAN -CLASS="QUOTE" ->"Go There Anyway"</SPAN -> link from -the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->BLOCKED</I -></SPAN -> page?</A -></DT -></DL -></DD -><DT ->4. <A -HREF="misc.html" ->Miscellaneous</A -></DT -><DD -><DL -><DT ->4.1. <A -HREF="misc.html#AEN729" ->How much does Privoxy slow my browsing down? This -has to add extra time to browsing.</A -></DT -><DT ->4.2. <A -HREF="misc.html#LOADINGTIMES" ->I notice considerable -delays in page requests. What's wrong?</A -></DT -><DT ->4.3. <A -HREF="misc.html#CONFIGURL" ->What are "http://config.privoxy.org/" and -"http://p.p/"?</A -></DT -><DT ->4.4. <A -HREF="misc.html#NEWADS" ->How can I submit new ads, or report -problems?</A -></DT -><DT ->4.5. <A -HREF="misc.html#NEWADS2" ->If I do submit missed ads, will -they be included in future updates?</A -></DT -><DT ->4.6. <A -HREF="misc.html#NOONECARES" ->Why doesn't anyone answer my support -request?</A -></DT -><DT ->4.7. <A -HREF="misc.html#IP" ->How can I hide my IP address?</A -></DT -><DT ->4.8. <A -HREF="misc.html#AEN794" ->Can Privoxy guarantee I am anonymous?</A -></DT -><DT ->4.9. <A -HREF="misc.html#AEN812" ->A test site says I am not using a Proxy.</A -></DT -><DT ->4.10. <A -HREF="misc.html#TOR" ->How do I use Privoxy - together with Tor?</A -></DT -><DT ->4.11. <A -HREF="misc.html#AEN868" ->Might some things break because header information or -content is being altered?</A -></DT -><DT ->4.12. <A -HREF="misc.html#AEN882" ->Can Privoxy act as a <SPAN -CLASS="QUOTE" ->"caching"</SPAN -> proxy to -speed up web browsing?</A -></DT -><DT ->4.13. <A -HREF="misc.html#AEN892" ->What about as a firewall? Can Privoxy protect me?</A -></DT -><DT ->4.14. <A -HREF="misc.html#AEN897" ->I have large empty spaces / a checkerboard pattern now where -ads used to be. Why?</A -></DT -><DT ->4.15. <A -HREF="misc.html#AEN905" ->How can Privoxy filter Secure (HTTPS) URLs?</A -></DT -><DT ->4.16. <A -HREF="misc.html#AEN919" ->Privoxy runs as a <SPAN -CLASS="QUOTE" ->"server"</SPAN ->. How -secure is it? Do I need to take any special precautions?</A -></DT -><DT ->4.17. <A -HREF="misc.html#TURNOFF" ->Can I temporarily disable Privoxy?</A -></DT -><DT ->4.18. <A -HREF="misc.html#REALLYOFF" ->When <SPAN -CLASS="QUOTE" ->"disabled"</SPAN -> is Privoxy totally -out of the picture?</A -></DT -><DT ->4.19. <A -HREF="misc.html#TURNOFF2" ->How can I tell Privoxy to totally ignore certain sites?</A -></DT -><DT ->4.20. <A -HREF="misc.html#CRUNCH" ->My logs show Privoxy <SPAN -CLASS="QUOTE" ->"crunches"</SPAN -> -ads, but also its own internal CGI pages. What is a <SPAN -CLASS="QUOTE" ->"crunch"</SPAN ->?</A -></DT -><DT ->4.21. <A -HREF="misc.html#DOWNLOADS" ->Can Privoxy effect files that I download -from a webserver? FTP server?</A -></DT -><DT ->4.22. <A -HREF="misc.html#DOWNLOADS2" ->I just downloaded a Perl script, and Privoxy -altered it! Yikes, what is wrong!</A -></DT -><DT ->4.23. <A -HREF="misc.html#HOSTSFILE" ->Should I continue to use a <SPAN -CLASS="QUOTE" ->"HOSTS"</SPAN -> file for ad-blocking?</A -></DT -><DT ->4.24. <A -HREF="misc.html#SEEALSO" ->Where can I find more information about Privoxy -and related issues?</A -></DT -><DT ->4.25. <A -HREF="misc.html#MICROSUCK" ->I've noticed that Privoxy changes <SPAN -CLASS="QUOTE" ->"Microsoft"</SPAN -> to -<SPAN -CLASS="QUOTE" ->"MicroSuck"</SPAN ->! Why are you manipulating my browsing?</A -></DT -><DT ->4.26. <A -HREF="misc.html#VALID" ->Does Privoxy produce <SPAN -CLASS="QUOTE" ->"valid"</SPAN -> HTML (or XHTML)?</A -></DT -><DT ->4.27. <A -HREF="misc.html#SURPRISE-PRIVOXY" ->How did you manage to get Privoxy on my computer without my consent?</A -></DT -></DL -></DD -><DT ->5. <A -HREF="trouble.html" ->Troubleshooting</A -></DT -><DD -><DL -><DT ->5.1. <A -HREF="trouble.html#AEN1091" ->I cannot connect to any websites. Or, I am getting -<SPAN -CLASS="QUOTE" ->"connection refused"</SPAN -> message with every web page. Why?</A -></DT -><DT ->5.2. <A -HREF="trouble.html#ERROR503" ->Why am I getting a 503 Error (WSAECONNREFUSED) on every page?</A -></DT -><DT ->5.3. <A -HREF="trouble.html#AEN1114" ->I just added a new rule, but the steenkin ad is -still getting through. How?</A -></DT -><DT ->5.4. <A -HREF="trouble.html#BADSITE" ->One of my favorite sites does not work with Privoxy. -What can I do?</A -></DT -><DT ->5.5. <A -HREF="trouble.html#DUN" ->After installing Privoxy, I have to log in -every time I start IE. What gives?</A -></DT -><DT ->5.6. <A -HREF="trouble.html#FTP" ->I cannot connect to any FTP sites. Privoxy - is blocking me.</A -></DT -><DT ->5.7. <A -HREF="trouble.html#MACOSXIE" ->In Mac OS X, I can't configure Microsoft Internet Explorer to use - Privoxy as the HTTP proxy.</A -></DT -><DT ->5.8. <A -HREF="trouble.html#MACOSXUNINSTALL" ->In Mac OS X, I dragged the Privoxy folder to the trash in order to - uninstall it. Now the finder tells me I don't have sufficient privileges to - empty the trash.</A -></DT -><DT ->5.9. <A -HREF="trouble.html#MACOSXIMAGES" ->In Mac OS X Panther (10.3), images often fail to load and/or I - experience random delays in page loading. I'm using - <TT -CLASS="LITERAL" ->localhost</TT -> as my browser's proxy setting.</A -></DT -><DT ->5.10. <A -HREF="trouble.html#BLANKPAGE" ->I get a completely blank page at one site. <SPAN -CLASS="QUOTE" ->"View Source"</SPAN -> - shows only: <SPAN -CLASS="MARKUP" -><html><body></body></html></SPAN ->. Without - Privoxy the page loads fine.</A -></DT -><DT ->5.11. <A -HREF="trouble.html#NOHOSTNAME" ->My logs show many <SPAN -CLASS="QUOTE" ->"Unable to get my own hostname"</SPAN -> lines. -Why?</A -></DT -><DT ->5.12. <A -HREF="trouble.html#INUSE" ->When I try to launch Privoxy, I get an -error message <SPAN -CLASS="QUOTE" ->"port 8118 is already in use"</SPAN -> (or similar wording). -Why?</A -></DT -><DT ->5.13. <A -HREF="trouble.html#DEMORONIZER" ->Pages with UTF-8 fonts are garbled.</A -></DT -><DT ->5.14. <A -HREF="trouble.html#DEMORONIZER2" ->Why are binary files (such as images) corrupted when Privoxy - is used?</A -></DT -><DT ->5.15. <A -HREF="trouble.html#DEMORONIZER3" ->What is the <SPAN -CLASS="QUOTE" ->"demoronizer"</SPAN -> and why is it there?</A -></DT -><DT ->5.16. <A -HREF="trouble.html#WINDOWOPEN" ->Why do I keep seeing <SPAN -CLASS="QUOTE" ->"PrivoxyWindowOpen()"</SPAN -> in raw source code?</A -></DT -><DT ->5.17. <A -HREF="trouble.html#DNSERRORS" ->I am getting too many DNS errors like <SPAN -CLASS="QUOTE" ->"404 No Such Domain"</SPAN ->. Why - can't Privoxy do this better?</A -></DT -><DT ->5.18. <A -HREF="trouble.html#ALLCPU" ->At one site Privoxy just hangs, and starts taking - all CPU. Why is this?</A -></DT -><DT ->5.19. <A -HREF="trouble.html#SLOWCRAWL" ->I just installed Privoxy, and all my -browsing has slowed to a crawl. What gives?</A -></DT -><DT ->5.20. <A -HREF="trouble.html#PREVENTCOMP" ->Why do my filters work on some sites but not on others?</A -></DT -><DT ->5.21. <A -HREF="trouble.html#SSL-WARNINGS" ->On some HTTPS sites my browser warns me about unauthenticated content, - the URL bar doesn't get highlighted and the lock symbol appears to be broken. - What's going on?</A -></DT -><DT ->5.22. <A -HREF="trouble.html#SE-LINUX" ->I get selinux error messages. How can I fix this?</A -></DT -><DT ->5.23. <A -HREF="trouble.html#GENTOO-RICERS" ->I compiled <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with Gentoo's portage and it appears to be very slow. Why?</A -></DT -></DL -></DD -><DT ->6. <A -HREF="contact.html" ->Contacting the developers, Bug Reporting and Feature Requests</A -></DT -><DD -><DL -><DT ->6.1. <A -HREF="contact.html#CONTACT-SUPPORT" ->Get Support</A -></DT -><DT ->6.2. <A -HREF="contact.html#REPORTING" ->Reporting Problems</A -></DT -><DD -><DL -><DT ->6.2.1. <A -HREF="contact.html#CONTACT-ADS" ->Reporting Ads or Other Configuration Problems</A -></DT -><DT ->6.2.2. <A -HREF="contact.html#CONTACT-BUGS" ->Reporting Bugs</A -></DT -></DL -></DD -><DT ->6.3. <A -HREF="contact.html#CONTACT-FEATURE" ->Request New Features</A -></DT -><DT ->6.4. <A -HREF="contact.html#MAILING-LISTS" ->Mailing Lists</A -></DT -></DL -></DD -><DT ->7. <A -HREF="copyright.html" ->Privoxy Copyright, License and History</A -></DT -><DD -><DL -><DT ->7.1. <A -HREF="copyright.html#AEN1464" ->License</A -></DT -><DT ->7.2. <A -HREF="copyright.html#AEN1480" ->History</A -></DT -></DL -></DD -></DL -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -> </TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="general.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -> </TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->General Information</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy Frequently Asked Questions + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="NEXT" title="General Information" href="general.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c2 {text-align: left} + dt.c1 {font-weight: bold} +</style> + </head> + <body class="ARTICLE"> + <div class="ARTICLE"> + <div class="TITLEPAGE"> + <h1 class="TITLE"> + <a name="AEN2">Privoxy Frequently Asked Questions</a> + </h1> + <p class="PUBDATE"> + <sub><a href="copyright.html">Copyright</a> © 2001-2011 by <a + href="http://www.privoxy.org/" target="_top">Privoxy + Developers</a></sub><br> + </p> + <p class="PUBDATE"> + $Id: index.html,v 1.67 2011/08/26 16:14:03 fabiankeil Exp $<br> + </p> + <div> + <a name="AEN9"></a> + <p> + This FAQ gives quick answers to frequently asked questions about + <a href="http://www.privoxy.org/" target="_top">Privoxy</a>. It + is not a substitute for the <a href="../user-manual/index.html" + target="_top"><i class="CITETITLE">Privoxy User Manual</i></a>. + </p> + <p> + What is Privoxy? + </p> + <p> + Privoxy is a non-caching web proxy with advanced filtering + capabilities for enhancing privacy, modifying web page data and + HTTP headers, controlling access, and removing ads and other + obnoxious Internet junk. Privoxy has a flexible configuration and + can be customized to suit individual needs and tastes. It has + application for both stand-alone systems and multi-user networks. + </p> + <p> + Privoxy is Free Software and licensed under the GNU GPLv2. + </p> + <p> + Privoxy is an associated project of Software in the Public + Interest (SPI). + </p> + <p> + Helping hands and donations are welcome: + </p> + <ul> + <li> + <p> + <a href="http://www.privoxy.org/faq/general.html#PARTICIPATE" + target= + "_top">http://www.privoxy.org/faq/general.html#PARTICIPATE</a> + </p> + </li> + <li> + <p> + <a href="http://www.privoxy.org/faq/general.html#DONATE" + target= + "_top">http://www.privoxy.org/faq/general.html#DONATE</a> + </p> + </li> + </ul> + + <p> + Please note that this document is a work in progress. This copy + represents the state at the release of version 3.0.18. You can + find the latest version of the document at <a href= + "http://www.privoxy.org/faq/" target= + "_top">http://www.privoxy.org/faq/</a>. Please see the <a href= + "contact.html">Contact section</a> if you want to contact the + developers. + </p> + </div> + <hr> + </div> + <div class="TOC"> + <dl> + <dt class="c1"> + Table of Contents + </dt> + <dt> + 1. <a href="general.html">General Information</a> + </dt> + <dd> + <dl> + <dt> + 1.1. <a href="general.html#WHO-USES">Who should give <span + class="APPLICATION">Privoxy</span> a try?</a> + </dt> + <dt> + 1.2. <a href="general.html#BESTCHOICE">Is Privoxy the best + choice for me?</a> + </dt> + <dt> + 1.3. <a href="general.html#PROXYMORON">What is a <span class= + "QUOTE">"proxy"</span>? How does Privoxy work?</a> + </dt> + <dt> + 1.4. <a href="general.html#OTHERSTUFF">Does Privoxy do + anything more than ad blocking?</a> + </dt> + <dt> + 1.5. <a href="general.html#NEWJB">What is this new version of + <span class="QUOTE">"Junkbuster"</span>?</a> + </dt> + <dt> + 1.6. <a href="general.html#AEN85">Why <span class= + "QUOTE">"Privoxy"</span>? Why change the name from Junkbuster + at all?</a> + </dt> + <dt> + 1.7. <a href="general.html#DIFFERS">How does Privoxy differ + from the old Junkbuster?</a> + </dt> + <dt> + 1.8. <a href="general.html#WHATSANAD">How does Privoxy know + what is an ad, and what is not?</a> + </dt> + <dt> + 1.9. <a href="general.html#AEN163">Can Privoxy make mistakes? + This does not sound very scientific.</a> + </dt> + <dt> + 1.10. <a href="general.html#AEN169">Will I have to configure + Privoxy before I can use it?</a> + </dt> + <dt> + 1.11. <a href="general.html#LAN">Can Privoxy run as a server + on a network?</a> + </dt> + <dt> + 1.12. <a href="general.html#BROWSERS2">My browser does the + same things as Privoxy. Why should I use Privoxy at all?</a> + </dt> + <dt> + 1.13. <a href="general.html#WHYTRUST">Why should I trust + Privoxy?</a> + </dt> + <dt> + 1.14. <a href="general.html#LICENSE">Is there is a license or + fee? What about a warranty? Registration?</a> + </dt> + <dt> + 1.15. <a href="general.html#SPYWARE">Can Privoxy remove + spyware? Adware? Viruses?</a> + </dt> + <dt> + 1.16. <a href="general.html#OTHERADS">Can I use Privoxy with + other ad-blocking software?</a> + </dt> + <dt> + 1.17. <a href="general.html#HELP-THE-DEVELOPERS">I would like + to help you, what can I do?</a> + </dt> + <dd> + <dl> + <dt> + 1.17.1. <a href="general.html#PARTICIPATE">Would you like + to participate?</a> + </dt> + <dt> + 1.17.2. <a href="general.html#DONATE">Would you like to + donate?</a> + </dt> + </dl> + </dd> + </dl> + </dd> + <dt> + 2. <a href="installation.html">Installation</a> + </dt> + <dd> + <dl> + <dt> + 2.1. <a href="installation.html#WHICHBROWSERS">Which browsers + are supported by Privoxy?</a> + </dt> + <dt> + 2.2. <a href="installation.html#WHICHOS">Which operating + systems are supported?</a> + </dt> + <dt> + 2.3. <a href="installation.html#EMAIL-CLIENT">Can I use + Privoxy with my email client?</a> + </dt> + <dt> + 2.4. <a href="installation.html#FIRSTSTEP">I just installed + Privoxy. Is there anything special I have to do now?</a> + </dt> + <dt> + 2.5. <a href="installation.html#LOCALHOST">What is the proxy + address of Privoxy?</a> + </dt> + <dt> + 2.6. <a href="installation.html#NOTHING">I just installed + Privoxy, and nothing is happening. All the ads are there. + What's wrong?</a> + </dt> + <dt> + 2.7. <a href="installation.html#NOTUSED">I get a <span class= + "QUOTE">"Privoxy is not being used"</span> dummy page + although Privoxy is running and being used.</a> + </dt> + </dl> + </dd> + <dt> + 3. <a href="configuration.html">Configuration</a> + </dt> + <dd> + <dl> + <dt> + 3.1. <a href="configuration.html#AEN360">What exactly is an + <span class="QUOTE">"actions"</span> file?</a> + </dt> + <dt> + 3.2. <a href="configuration.html#ACTIONSS">The <span class= + "QUOTE">"actions"</span> concept confuses me. Please list + some of these <span class="QUOTE">"actions"</span>.</a> + </dt> + <dt> + 3.3. <a href="configuration.html#AEN383">How are actions + files configured? What is the easiest way to do this?</a> + </dt> + <dt> + 3.4. <a href="configuration.html#AEN392">There are several + different <span class="QUOTE">"actions"</span> files. What + are the differences?</a> + </dt> + <dt> + 3.5. <a href="configuration.html#GETUPDATES">Where can I get + updated Actions Files?</a> + </dt> + <dt> + 3.6. <a href="configuration.html#NEWCONFIG">Can I use my old + config files?</a> + </dt> + <dt> + 3.7. <a href="configuration.html#DIFFICULT">Why is the + configuration so complicated?</a> + </dt> + <dt> + 3.8. <a href="configuration.html#YAHOO">How can I make my + Yahoo/Hotmail/Gmail account work?</a> + </dt> + <dt> + 3.9. <a href="configuration.html#CONFIGFILES">What's the + difference between the <span class="QUOTE">"Cautious"</span>, + <span class="QUOTE">"Medium"</span> and <span class= + "QUOTE">"Advanced"</span> defaults?</a> + </dt> + <dt> + 3.10. <a href="configuration.html#BROWSECONFIG">Why can I + change the configuration with a browser? Does that not raise + security issues?</a> + </dt> + <dt> + 3.11. <a href="configuration.html#AEN480">What is the <tt + class="FILENAME">default.filter</tt> file? What is a <span + class="QUOTE">"filter"</span>?</a> + </dt> + <dt> + 3.12. <a href="configuration.html#LANCONFIG">How can I set up + Privoxy to act as a proxy for my LAN?</a> + </dt> + <dt> + 3.13. <a href="configuration.html#AEN531">Instead of ads, now + I get a checkerboard pattern. I don't want to see + anything.</a> + </dt> + <dt> + 3.14. <a href="configuration.html#AEN548">Why would anybody + want to see a checkerboard pattern?</a> + </dt> + <dt> + 3.15. <a href="configuration.html#AEN554">I see some images + being replaced with text instead of the checkerboard image. + Why and how do I get rid of this?</a> + </dt> + <dt> + 3.16. <a href="configuration.html#SRVANY">Can Privoxy run as + a service on Win2K/NT/XP?</a> + </dt> + <dt> + 3.17. <a href="configuration.html#OTHERPROXY">How can I make + Privoxy work with other proxies?</a> + </dt> + <dt> + 3.18. <a href="configuration.html#PORT-80">Can I just set + Privoxy to use port 80 and thus avoid individual browser + configuration?</a> + </dt> + <dt> + 3.19. <a href="configuration.html#TRANSPARENT">Can Privoxy + run as a <span class="QUOTE">"transparent"</span> proxy?</a> + </dt> + <dt> + 3.20. <a href="configuration.html#INTERCEPTING">Can Privoxy + run as a <span class="QUOTE">"intercepting"</span> proxy?</a> + </dt> + <dt> + 3.21. <a href="configuration.html#OUTLOOK">How can I + configure Privoxy for use with Outlook?</a> + </dt> + <dt> + 3.22. <a href="configuration.html#OUTLOOK-MORE">How can I + have separate rules just for HTML mail?</a> + </dt> + <dt> + 3.23. <a href="configuration.html#SNEAKY-COOKIES">I sometimes + notice cookies sneaking through. How?</a> + </dt> + <dt> + 3.24. <a href="configuration.html#EVIL-COOKIES">Are all + cookies bad? Why?</a> + </dt> + <dt> + 3.25. <a href="configuration.html#ALLOW-COOKIES">How can I + allow permanent cookies for my trusted sites?</a> + </dt> + <dt> + 3.26. <a href="configuration.html#MULTIPLES">Can I have + separate configurations for different users?</a> + </dt> + <dt> + 3.27. <a href="configuration.html#WHITELISTS">Can I set-up + Privoxy as a whitelist of <span class="QUOTE">"good"</span> + sites?</a> + </dt> + <dt> + 3.28. <a href="configuration.html#NO-ADBLOCK">How can I turn + off ad-blocking?</a> + </dt> + <dt> + 3.29. <a href="configuration.html#TEMPLATES">How can I have + custom template pages, like the <span class="emphasis"><i + class="EMPHASIS">BLOCKED</i></span> page?</a> + </dt> + <dt> + 3.30. <a href="configuration.html#BLOCKALL">How can I remove + the <span class="QUOTE">"Go There Anyway"</span> link from + the <span class="emphasis"><i class= + "EMPHASIS">BLOCKED</i></span> page?</a> + </dt> + </dl> + </dd> + <dt> + 4. <a href="misc.html">Miscellaneous</a> + </dt> + <dd> + <dl> + <dt> + 4.1. <a href="misc.html#AEN729">How much does Privoxy slow my + browsing down? This has to add extra time to browsing.</a> + </dt> + <dt> + 4.2. <a href="misc.html#LOADINGTIMES">I notice considerable + delays in page requests. What's wrong?</a> + </dt> + <dt> + 4.3. <a href="misc.html#CONFIGURL">What are + "http://config.privoxy.org/" and "http://p.p/"?</a> + </dt> + <dt> + 4.4. <a href="misc.html#NEWADS">How can I submit new ads, or + report problems?</a> + </dt> + <dt> + 4.5. <a href="misc.html#NEWADS2">If I do submit missed ads, + will they be included in future updates?</a> + </dt> + <dt> + 4.6. <a href="misc.html#NOONECARES">Why doesn't anyone answer + my support request?</a> + </dt> + <dt> + 4.7. <a href="misc.html#IP">How can I hide my IP address?</a> + </dt> + <dt> + 4.8. <a href="misc.html#AEN794">Can Privoxy guarantee I am + anonymous?</a> + </dt> + <dt> + 4.9. <a href="misc.html#AEN812">A test site says I am not + using a Proxy.</a> + </dt> + <dt> + 4.10. <a href="misc.html#TOR">How do I use Privoxy together + with Tor?</a> + </dt> + <dt> + 4.11. <a href="misc.html#AEN868">Might some things break + because header information or content is being altered?</a> + </dt> + <dt> + 4.12. <a href="misc.html#AEN882">Can Privoxy act as a <span + class="QUOTE">"caching"</span> proxy to speed up web + browsing?</a> + </dt> + <dt> + 4.13. <a href="misc.html#AEN892">What about as a firewall? + Can Privoxy protect me?</a> + </dt> + <dt> + 4.14. <a href="misc.html#AEN897">I have large empty spaces / + a checkerboard pattern now where ads used to be. Why?</a> + </dt> + <dt> + 4.15. <a href="misc.html#AEN905">How can Privoxy filter + Secure (HTTPS) URLs?</a> + </dt> + <dt> + 4.16. <a href="misc.html#AEN919">Privoxy runs as a <span + class="QUOTE">"server"</span>. How secure is it? Do I need to + take any special precautions?</a> + </dt> + <dt> + 4.17. <a href="misc.html#TURNOFF">Can I temporarily disable + Privoxy?</a> + </dt> + <dt> + 4.18. <a href="misc.html#REALLYOFF">When <span class= + "QUOTE">"disabled"</span> is Privoxy totally out of the + picture?</a> + </dt> + <dt> + 4.19. <a href="misc.html#TURNOFF2">How can I tell Privoxy to + totally ignore certain sites?</a> + </dt> + <dt> + 4.20. <a href="misc.html#CRUNCH">My logs show Privoxy <span + class="QUOTE">"crunches"</span> ads, but also its own + internal CGI pages. What is a <span class= + "QUOTE">"crunch"</span>?</a> + </dt> + <dt> + 4.21. <a href="misc.html#DOWNLOADS">Can Privoxy effect files + that I download from a webserver? FTP server?</a> + </dt> + <dt> + 4.22. <a href="misc.html#DOWNLOADS2">I just downloaded a Perl + script, and Privoxy altered it! Yikes, what is wrong!</a> + </dt> + <dt> + 4.23. <a href="misc.html#HOSTSFILE">Should I continue to use + a <span class="QUOTE">"HOSTS"</span> file for + ad-blocking?</a> + </dt> + <dt> + 4.24. <a href="misc.html#SEEALSO">Where can I find more + information about Privoxy and related issues?</a> + </dt> + <dt> + 4.25. <a href="misc.html#MICROSUCK">I've noticed that Privoxy + changes <span class="QUOTE">"Microsoft"</span> to <span + class="QUOTE">"MicroSuck"</span>! Why are you manipulating my + browsing?</a> + </dt> + <dt> + 4.26. <a href="misc.html#VALID">Does Privoxy produce <span + class="QUOTE">"valid"</span> HTML (or XHTML)?</a> + </dt> + <dt> + 4.27. <a href="misc.html#SURPRISE-PRIVOXY">How did you manage + to get Privoxy on my computer without my consent?</a> + </dt> + </dl> + </dd> + <dt> + 5. <a href="trouble.html">Troubleshooting</a> + </dt> + <dd> + <dl> + <dt> + 5.1. <a href="trouble.html#AEN1091">I cannot connect to any + websites. Or, I am getting <span class="QUOTE">"connection + refused"</span> message with every web page. Why?</a> + </dt> + <dt> + 5.2. <a href="trouble.html#ERROR503">Why am I getting a 503 + Error (WSAECONNREFUSED) on every page?</a> + </dt> + <dt> + 5.3. <a href="trouble.html#AEN1114">I just added a new rule, + but the steenkin ad is still getting through. How?</a> + </dt> + <dt> + 5.4. <a href="trouble.html#BADSITE">One of my favorite sites + does not work with Privoxy. What can I do?</a> + </dt> + <dt> + 5.5. <a href="trouble.html#DUN">After installing Privoxy, I + have to log in every time I start IE. What gives?</a> + </dt> + <dt> + 5.6. <a href="trouble.html#FTP">I cannot connect to any FTP + sites. Privoxy is blocking me.</a> + </dt> + <dt> + 5.7. <a href="trouble.html#MACOSXIE">In Mac OS X, I can't + configure Microsoft Internet Explorer to use Privoxy as the + HTTP proxy.</a> + </dt> + <dt> + 5.8. <a href="trouble.html#MACOSXUNINSTALL">In Mac OS X, I + dragged the Privoxy folder to the trash in order to uninstall + it. Now the finder tells me I don't have sufficient + privileges to empty the trash.</a> + </dt> + <dt> + 5.9. <a href="trouble.html#MACOSXIMAGES">In Mac OS X Panther + (10.3), images often fail to load and/or I experience random + delays in page loading. I'm using <tt class= + "LITERAL">localhost</tt> as my browser's proxy setting.</a> + </dt> + <dt> + 5.10. <a href="trouble.html#BLANKPAGE">I get a completely + blank page at one site. <span class="QUOTE">"View + Source"</span> shows only: <span class= + "MARKUP"><html><body></body></html></span>. + Without Privoxy the page loads fine.</a> + </dt> + <dt> + 5.11. <a href="trouble.html#NOHOSTNAME">My logs show many + <span class="QUOTE">"Unable to get my own hostname"</span> + lines. Why?</a> + </dt> + <dt> + 5.12. <a href="trouble.html#INUSE">When I try to launch + Privoxy, I get an error message <span class="QUOTE">"port + 8118 is already in use"</span> (or similar wording). Why?</a> + </dt> + <dt> + 5.13. <a href="trouble.html#DEMORONIZER">Pages with UTF-8 + fonts are garbled.</a> + </dt> + <dt> + 5.14. <a href="trouble.html#DEMORONIZER2">Why are binary + files (such as images) corrupted when Privoxy is used?</a> + </dt> + <dt> + 5.15. <a href="trouble.html#DEMORONIZER3">What is the <span + class="QUOTE">"demoronizer"</span> and why is it there?</a> + </dt> + <dt> + 5.16. <a href="trouble.html#WINDOWOPEN">Why do I keep seeing + <span class="QUOTE">"PrivoxyWindowOpen()"</span> in raw + source code?</a> + </dt> + <dt> + 5.17. <a href="trouble.html#DNSERRORS">I am getting too many + DNS errors like <span class="QUOTE">"404 No Such + Domain"</span>. Why can't Privoxy do this better?</a> + </dt> + <dt> + 5.18. <a href="trouble.html#ALLCPU">At one site Privoxy just + hangs, and starts taking all CPU. Why is this?</a> + </dt> + <dt> + 5.19. <a href="trouble.html#SLOWCRAWL">I just installed + Privoxy, and all my browsing has slowed to a crawl. What + gives?</a> + </dt> + <dt> + 5.20. <a href="trouble.html#PREVENTCOMP">Why do my filters + work on some sites but not on others?</a> + </dt> + <dt> + 5.21. <a href="trouble.html#SSL-WARNINGS">On some HTTPS sites + my browser warns me about unauthenticated content, the URL + bar doesn't get highlighted and the lock symbol appears to be + broken. What's going on?</a> + </dt> + <dt> + 5.22. <a href="trouble.html#SE-LINUX">I get selinux error + messages. How can I fix this?</a> + </dt> + <dt> + 5.23. <a href="trouble.html#GENTOO-RICERS">I compiled <span + class="APPLICATION">Privoxy</span> with Gentoo's portage and + it appears to be very slow. Why?</a> + </dt> + </dl> + </dd> + <dt> + 6. <a href="contact.html">Contacting the developers, Bug + Reporting and Feature Requests</a> + </dt> + <dd> + <dl> + <dt> + 6.1. <a href="contact.html#CONTACT-SUPPORT">Get Support</a> + </dt> + <dt> + 6.2. <a href="contact.html#REPORTING">Reporting Problems</a> + </dt> + <dd> + <dl> + <dt> + 6.2.1. <a href="contact.html#CONTACT-ADS">Reporting Ads + or Other Configuration Problems</a> + </dt> + <dt> + 6.2.2. <a href="contact.html#CONTACT-BUGS">Reporting + Bugs</a> + </dt> + </dl> + </dd> + <dt> + 6.3. <a href="contact.html#CONTACT-FEATURE">Request New + Features</a> + </dt> + <dt> + 6.4. <a href="contact.html#MAILING-LISTS">Mailing Lists</a> + </dt> + </dl> + </dd> + <dt> + 7. <a href="copyright.html">Privoxy Copyright, License and + History</a> + </dt> + <dd> + <dl> + <dt> + 7.1. <a href="copyright.html#AEN1464">License</a> + </dt> + <dt> + 7.2. <a href="copyright.html#AEN1480">History</a> + </dt> + </dl> + </dd> + </dl> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c2"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + <a href="general.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + General Information + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/faq/installation.html b/doc/webserver/faq/installation.html index 1e99b309..38841a88 100644 --- a/doc/webserver/faq/installation.html +++ b/doc/webserver/faq/installation.html @@ -1,569 +1,288 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Installation</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Frequently Asked Questions" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="General Information" -HREF="general.html"><LINK -REL="NEXT" -TITLE="Configuration" -HREF="configuration.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Frequently Asked Questions</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="general.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="configuration.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="INSTALLATION" ->2. Installation</A -></H1 -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="WHICHBROWSERS" ->2.1. Which browsers are supported by Privoxy?</A -></H3 -><P -> Any browser that can be configured to use a proxy, which - should be virtually all browsers, including - <SPAN -CLASS="APPLICATION" ->Firefox</SPAN ->, <SPAN -CLASS="APPLICATION" ->Internet - Explorer</SPAN ->, <SPAN -CLASS="APPLICATION" ->Opera</SPAN ->, and - <SPAN -CLASS="APPLICATION" ->Safari</SPAN -> among others. - Direct browser support is not an absolute requirement since - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> runs as a separate application and talks - to the browser in the standardized HTTP protocol, just like a web server - does.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="WHICHOS" ->2.2. Which operating systems are supported?</A -></H3 -><P -> At present, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is known to run on - Windows(95, 98, ME, 2000, XP, Vista), GNU/Linux (RedHat, SuSE, Debian, - Fedora, Gentoo, Slackware and others), Mac OSX, OS/2, AmigaOS, FreeBSD, - NetBSD, OpenBSD, Solaris, and various other flavors of Unix.</P -><P -> But any operating system that runs TCP/IP, can conceivably take advantage of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in a networked situation where - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> would run as a server on a LAN gateway. - Then only the <SPAN -CLASS="QUOTE" ->"gateway"</SPAN -> needs to be running one of the above - operating systems.</P -><P -> Source code is freely available, so porting to other operating systems - is always a possibility.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="EMAIL-CLIENT" ->2.3. Can I use Privoxy with my email client?</A -></H3 -><P -> As long as there is some way to set a HTTP proxy for the client, then yes, - any application can be used, whether it is strictly speaking a - <SPAN -CLASS="QUOTE" ->"browser"</SPAN -> or not. Though this may not be the best approach for - dealing with some of the common abuses of HTML in email. See <A -HREF="configuration.html#OUTLOOK" ->How can I configure <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - with <SPAN -CLASS="APPLICATION" ->Outlook</SPAN ->?</A -> below for more on - this. </P -><P -> Be aware that HTML email presents a number of unique security and privacy - related issues, that can require advanced skills to overcome. The developers - recommend using email clients that can be configured to convert HTML to plain - text for these reasons.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="FIRSTSTEP" ->2.4. I just installed Privoxy. Is there anything -special I have to do now?</A -></H3 -><P -> All browsers should be told to use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - as a proxy by specifying the correct proxy address and port number - in the appropriate configuration area for the browser. It's possible - to combine <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with a packet filter to intercept HTTP requests - even if the client isn't explicitly configured to use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, - but where possible, configuring the client is recommended. See - <A -HREF="../user-manual/startup.html" -TARGET="_top" ->the User Manual for more - details</A ->. You should also flush your browser's memory and disk - cache to get rid of any cached junk items, and remove any stored - <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->cookies</A ->. </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="LOCALHOST" ->2.5. What is the proxy address of Privoxy?</A -></H3 -><P -> If you set up the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to run on - the computer you browse from (rather than your ISP's server or some - networked computer on a LAN), the proxy will be on <TT -CLASS="LITERAL" ->127.0.0.1</TT -> - (sometimes referred to as <SPAN -CLASS="QUOTE" ->"localhost"</SPAN ->, - which is the special name used by every computer on the Internet to refer - to itself) and the port will be 8118 (unless you used the <A -HREF="../user-manual/config.html#LISTEN-ADDRESS" -TARGET="_top" ->listen-address</A -> - config option to tell <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to run on - a different port). - </P -><P -> When configuring your browser's proxy settings you typically enter - the word <SPAN -CLASS="QUOTE" ->"localhost"</SPAN -> or the IP address <SPAN -CLASS="QUOTE" ->"127.0.0.1"</SPAN -> - in the boxes next to <SPAN -CLASS="QUOTE" ->"HTTP"</SPAN -> and <SPAN -CLASS="QUOTE" ->"Secure"</SPAN -> (HTTPS) and - then the number <SPAN -CLASS="QUOTE" ->"8118"</SPAN -> for <SPAN -CLASS="QUOTE" ->"port"</SPAN ->. - This tells your browser to send all web requests to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - instead of directly to the Internet. - </P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can also be used to proxy for - a Local Area Network. In this case, your would enter either the IP - address of the LAN host where <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is running, or the equivalent hostname, e.g. <TT -CLASS="LITERAL" ->192.168.1.1</TT ->. - Port assignment would be same as above. Note that - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> doesn't listen on any LAN interfaces by - default. - </P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> does not currently handle - any other protocols such as FTP, SMTP, IM, IRC, ICQ, etc. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NOTHING" ->2.6. I just installed Privoxy, and nothing is happening. -All the ads are there. What's wrong?</A -></H3 -><P -> Did you configure your browser to use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - as a proxy? It does not sound like it. See above. You might also try flushing - the browser's caches to force a full re-reading of pages. You can verify - that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is running, and your browser - is correctly configured by entering the special URL: - <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A ->. - - This should take you to a page titled <SPAN -CLASS="QUOTE" ->"This is Privoxy.."</SPAN -> with - access to <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> internal configuration. - If you see this, then you are good to go. If you receive a page saying - <SPAN -CLASS="QUOTE" ->"Privoxy is not running"</SPAN ->, then the browser is not set up to use - your <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> installation. - If you receive anything else (probably nothing at all), it could either - be that the browser is not set up correctly, or that - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is not running at all. Check the <A -HREF="../user-manual/config.html#LOGFILE" -TARGET="_top" ->log file</A ->. For instructions - on starting <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and browser configuration, - see the <A -HREF="http://www.privoxy.org/user-manual/startup.html" -TARGET="_top" ->chapter - on starting <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -></A -> in the - <A -HREF="http://www.privoxy.org/user-manual/" -TARGET="_top" ->User Manual</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NOTUSED" ->2.7. I get a <SPAN -CLASS="QUOTE" ->"Privoxy is not being used"</SPAN -> dummy page although -Privoxy is running and being used.</A -></H3 -><P -> First, make sure that Privoxy is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->really</I -></SPAN -> running and - being used by visiting <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A ->. You - should see the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> main page. If not, see - the <A -HREF="http://www.privoxy.org/user-manual/startup.html" -TARGET="_top" ->chapter - on starting <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -></A -> in the - <A -HREF="http://www.privoxy.org/user-manual/" -TARGET="_top" ->User Manual</A ->.</P -><P -> Now if <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A -> works for you, but - other parts of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s web interface show - the dummy page, your browser has cached a redirection it encountered before - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> was being used. You need to clear your - browser's cache. Note that shift-reloading the dummy page won't help, since - that'll only refresh the dummy page, not the redirection that lead you there.</P -><P -> The procedure for clearing the cache varies from browser to browser. For - example, <SPAN -CLASS="APPLICATION" ->Mozilla/Netscape</SPAN -> users would click - <SPAN -CLASS="GUIBUTTON" ->Edit</SPAN -> --> <SPAN -CLASS="GUIBUTTON" ->Preferences</SPAN -> --> - <SPAN -CLASS="GUIBUTTON" ->Advanced</SPAN -> --> <SPAN -CLASS="GUIBUTTON" ->Cache</SPAN -> and - then click both <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Clear Memory Cache</SPAN ->"</SPAN -> - and <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Clear Disk Cache</SPAN ->"</SPAN ->. - In some <SPAN -CLASS="APPLICATION" ->Firefox</SPAN -> versions it's - <SPAN -CLASS="GUIBUTTON" ->Tools</SPAN -> --> <SPAN -CLASS="GUIBUTTON" ->Options</SPAN -> --> - <SPAN -CLASS="GUIBUTTON" ->Privacy</SPAN -> --> <SPAN -CLASS="GUIBUTTON" ->Cache</SPAN -> and - then click <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Clear Cache Now</SPAN ->"</SPAN ->. - </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="general.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="configuration.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->General Information</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Configuration</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Installation + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Frequently Asked Questions" href= + "index.html"> + <link rel="PREVIOUS" title="General Information" href="general.html"> + <link rel="NEXT" title="Configuration" href="configuration.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Frequently Asked Questions + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="general.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="configuration.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="INSTALLATION">2. Installation</a> + </h1> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="WHICHBROWSERS">2.1. Which browsers are supported by + Privoxy?</a> + </h3> + <p> + Any browser that can be configured to use a proxy, which should be + virtually all browsers, including <span class= + "APPLICATION">Firefox</span>, <span class="APPLICATION">Internet + Explorer</span>, <span class="APPLICATION">Opera</span>, and <span + class="APPLICATION">Safari</span> among others. Direct browser + support is not an absolute requirement since <span class= + "APPLICATION">Privoxy</span> runs as a separate application and + talks to the browser in the standardized HTTP protocol, just like a + web server does. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="WHICHOS">2.2. Which operating systems are supported?</a> + </h3> + <p> + At present, <span class="APPLICATION">Privoxy</span> is known to + run on Windows(95, 98, ME, 2000, XP, Vista), GNU/Linux (RedHat, + SuSE, Debian, Fedora, Gentoo, Slackware and others), Mac OSX, OS/2, + AmigaOS, FreeBSD, NetBSD, OpenBSD, Solaris, and various other + flavors of Unix. + </p> + <p> + But any operating system that runs TCP/IP, can conceivably take + advantage of <span class="APPLICATION">Privoxy</span> in a + networked situation where <span class="APPLICATION">Privoxy</span> + would run as a server on a LAN gateway. Then only the <span class= + "QUOTE">"gateway"</span> needs to be running one of the above + operating systems. + </p> + <p> + Source code is freely available, so porting to other operating + systems is always a possibility. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="EMAIL-CLIENT">2.3. Can I use Privoxy with my email + client?</a> + </h3> + <p> + As long as there is some way to set a HTTP proxy for the client, + then yes, any application can be used, whether it is strictly + speaking a <span class="QUOTE">"browser"</span> or not. Though this + may not be the best approach for dealing with some of the common + abuses of HTML in email. See <a href= + "configuration.html#OUTLOOK">How can I configure <span class= + "APPLICATION">Privoxy</span> with <span class= + "APPLICATION">Outlook</span>?</a> below for more on this. + </p> + <p> + Be aware that HTML email presents a number of unique security and + privacy related issues, that can require advanced skills to + overcome. The developers recommend using email clients that can be + configured to convert HTML to plain text for these reasons. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="FIRSTSTEP">2.4. I just installed Privoxy. Is there + anything special I have to do now?</a> + </h3> + <p> + All browsers should be told to use <span class= + "APPLICATION">Privoxy</span> as a proxy by specifying the correct + proxy address and port number in the appropriate configuration area + for the browser. It's possible to combine <span class= + "APPLICATION">Privoxy</span> with a packet filter to intercept HTTP + requests even if the client isn't explicitly configured to use + <span class="APPLICATION">Privoxy</span>, but where possible, + configuring the client is recommended. See <a href= + "../user-manual/startup.html" target="_top">the User Manual for + more details</a>. You should also flush your browser's memory and + disk cache to get rid of any cached junk items, and remove any + stored <a href="http://en.wikipedia.org/wiki/Browser_cookie" + target="_top">cookies</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="LOCALHOST">2.5. What is the proxy address of Privoxy?</a> + </h3> + <p> + If you set up the <span class="APPLICATION">Privoxy</span> to run + on the computer you browse from (rather than your ISP's server or + some networked computer on a LAN), the proxy will be on <tt class= + "LITERAL">127.0.0.1</tt> (sometimes referred to as <span class= + "QUOTE">"localhost"</span>, which is the special name used by every + computer on the Internet to refer to itself) and the port will be + 8118 (unless you used the <a href= + "../user-manual/config.html#LISTEN-ADDRESS" target= + "_top">listen-address</a> config option to tell <span class= + "APPLICATION">Privoxy</span> to run on a different port). + </p> + <p> + When configuring your browser's proxy settings you typically enter + the word <span class="QUOTE">"localhost"</span> or the IP address + <span class="QUOTE">"127.0.0.1"</span> in the boxes next to <span + class="QUOTE">"HTTP"</span> and <span class="QUOTE">"Secure"</span> + (HTTPS) and then the number <span class="QUOTE">"8118"</span> for + <span class="QUOTE">"port"</span>. This tells your browser to send + all web requests to <span class="APPLICATION">Privoxy</span> + instead of directly to the Internet. + </p> + <p> + <span class="APPLICATION">Privoxy</span> can also be used to proxy + for a Local Area Network. In this case, your would enter either the + IP address of the LAN host where <span class= + "APPLICATION">Privoxy</span> is running, or the equivalent + hostname, e.g. <tt class="LITERAL">192.168.1.1</tt>. Port + assignment would be same as above. Note that <span class= + "APPLICATION">Privoxy</span> doesn't listen on any LAN interfaces + by default. + </p> + <p> + <span class="APPLICATION">Privoxy</span> does not currently handle + any other protocols such as FTP, SMTP, IM, IRC, ICQ, etc. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NOTHING">2.6. I just installed Privoxy, and nothing is + happening. All the ads are there. What's wrong?</a> + </h3> + <p> + Did you configure your browser to use <span class= + "APPLICATION">Privoxy</span> as a proxy? It does not sound like it. + See above. You might also try flushing the browser's caches to + force a full re-reading of pages. You can verify that <span class= + "APPLICATION">Privoxy</span> is running, and your browser is + correctly configured by entering the special URL: <a href= + "http://p.p/" target="_top">http://p.p/</a>. This should take you + to a page titled <span class="QUOTE">"This is Privoxy.."</span> + with access to <span class="APPLICATION">Privoxy's</span> internal + configuration. If you see this, then you are good to go. If you + receive a page saying <span class="QUOTE">"Privoxy is not + running"</span>, then the browser is not set up to use your <span + class="APPLICATION">Privoxy</span> installation. If you receive + anything else (probably nothing at all), it could either be that + the browser is not set up correctly, or that <span class= + "APPLICATION">Privoxy</span> is not running at all. Check the <a + href="../user-manual/config.html#LOGFILE" target="_top">log + file</a>. For instructions on starting <span class= + "APPLICATION">Privoxy</span> and browser configuration, see the <a + href="http://www.privoxy.org/user-manual/startup.html" target= + "_top">chapter on starting <span class= + "APPLICATION">Privoxy</span></a> in the <a href= + "http://www.privoxy.org/user-manual/" target="_top">User + Manual</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NOTUSED">2.7. I get a <span class="QUOTE">"Privoxy is not + being used"</span> dummy page although Privoxy is running and being + used.</a> + </h3> + <p> + First, make sure that Privoxy is <span class="emphasis"><i class= + "EMPHASIS">really</i></span> running and being used by visiting <a + href="http://p.p/" target="_top">http://p.p/</a>. You should see + the <span class="APPLICATION">Privoxy</span> main page. If not, see + the <a href="http://www.privoxy.org/user-manual/startup.html" + target="_top">chapter on starting <span class= + "APPLICATION">Privoxy</span></a> in the <a href= + "http://www.privoxy.org/user-manual/" target="_top">User + Manual</a>. + </p> + <p> + Now if <a href="http://p.p/" target="_top">http://p.p/</a> works + for you, but other parts of <span class= + "APPLICATION">Privoxy</span>'s web interface show the dummy page, + your browser has cached a redirection it encountered before <span + class="APPLICATION">Privoxy</span> was being used. You need to + clear your browser's cache. Note that shift-reloading the dummy + page won't help, since that'll only refresh the dummy page, not the + redirection that lead you there. + </p> + <p> + The procedure for clearing the cache varies from browser to + browser. For example, <span class= + "APPLICATION">Mozilla/Netscape</span> users would click <span + class="GUIBUTTON">Edit</span> --> <span class= + "GUIBUTTON">Preferences</span> --> <span class= + "GUIBUTTON">Advanced</span> --> <span class= + "GUIBUTTON">Cache</span> and then click both <span class= + "QUOTE">"<span class="GUIBUTTON">Clear Memory Cache</span>"</span> + and <span class="QUOTE">"<span class="GUIBUTTON">Clear Disk + Cache</span>"</span>. In some <span class= + "APPLICATION">Firefox</span> versions it's <span class= + "GUIBUTTON">Tools</span> --> <span class= + "GUIBUTTON">Options</span> --> <span class= + "GUIBUTTON">Privacy</span> --> <span class= + "GUIBUTTON">Cache</span> and then click <span class="QUOTE">"<span + class="GUIBUTTON">Clear Cache Now</span>"</span>. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="general.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="configuration.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + General Information + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Configuration + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/faq/misc.html b/doc/webserver/faq/misc.html index dad0f27b..cc1b1baa 100644 --- a/doc/webserver/faq/misc.html +++ b/doc/webserver/faq/misc.html @@ -1,1786 +1,1062 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Miscellaneous</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Frequently Asked Questions" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Configuration" -HREF="configuration.html"><LINK -REL="NEXT" -TITLE="Troubleshooting" -HREF="trouble.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Frequently Asked Questions</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="configuration.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="trouble.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="MISC" ->4. Miscellaneous</A -></H1 -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN729" ->4.1. How much does Privoxy slow my browsing down? This -has to add extra time to browsing.</A -></H3 -><P -> How much of an impact depends on many things, including the CPU of the host - system, how aggressive the configuration is, which specific actions are being triggered, - the size of the page, the bandwidth of the connection, etc.</P -><P -> Overall, it should not slow you down any in real terms, and may actually help - speed things up since ads, banners and other junk are not typically being - retrieved and displayed. The actual processing time required by - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> itself for each page, is relatively small - in the overall scheme of things, and happens very quickly. This is typically - more than offset by time saved not downloading and rendering ad images and - other junk content (if ad blocking is being used).</P -><P -> <SPAN -CLASS="QUOTE" ->"Filtering"</SPAN -> content via the <TT -CLASS="LITERAL" -><A -HREF="../user-manual/actions-file.html#FILTER" -TARGET="_top" ->filter</A -></TT -> or - <TT -CLASS="LITERAL" -><A -HREF="../user-manual/actions-file.html#DEANIMATE-GIFS" -TARGET="_top" ->deanimate-gifs</A -></TT -> - actions may cause a perceived slowdown, since the entire document - needs to be buffered before displaying. And on very large documents, - filtering may have some measurable impact. How much depends on the page size, - the actual definition of the filter(s), etc. See below. Most other actions - have little to no impact on speed.</P -><P -> Also, when filtering is enabled but zlib support isn't available, compression - is often disabled (see <A -HREF="../user-manual/actions-file.html#PREVENT-COMPRESSION" -TARGET="_top" ->prevent-compression</A ->). - This can have an impact on speed as well, although it's probably smaller than - you might think. Again, the page size, etc. will determine how much of an impact.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="LOADINGTIMES" ->4.2. I notice considerable -delays in page requests. What's wrong?</A -></H3 -><P -> If you use any <TT -CLASS="LITERAL" -><A -HREF="../user-manual/actions-file.html#FILTER" -TARGET="_top" ->filter</A -></TT -> action, - such as filtering banners by size, web-bugs etc, or the <TT -CLASS="LITERAL" -><A -HREF="../user-manual/actions-file.html#DEANIMATE-GIFS" -TARGET="_top" ->deanimate-gifs</A -></TT -> - action, the entire document must be loaded into memory in order for the filtering - mechanism to work, and nothing is sent to the browser during this time.</P -><P -> The loading time typically does not really change much in real numbers, but - the feeling is different, because most browsers are able to start rendering - incomplete content, giving the user a feeling of "it works". This effect is - more noticeable on slower dialup connections. Extremely large documents - may have some impact on the time to load the page where there is filtering - being done. But overall, the difference should be very minimal. If there is a - big impact, then probably some other situation is contributing (like - anti-virus software). - </P -><P -> Filtering is automatically disabled for inappropriate MIME types. But note - that if the web server mis-reports the MIME type, then content that should - not be filtered, could be. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> only knows how - to differentiate filterable content because of the MIME type as reported by - the server, or because of some configuration setting that enables/disables - filtering.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="CONFIGURL" ->4.3. What are "http://config.privoxy.org/" and -"http://p.p/"?</A -></H3 -><P -> <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A -> is the - address of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s built-in user interface, and - <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A -> is a shortcut for it.</P -><P -> Since <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> sits between your web browser and the Internet, - it can simply intercept requests for these addresses and answer them with its built-in - <SPAN -CLASS="QUOTE" ->"web server"</SPAN ->.</P -><P -> This also makes for a good test for your browser configuration: If entering the - URL <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A -> - takes you to a page saying <SPAN -CLASS="QUOTE" ->"This is Privoxy ..."</SPAN ->, everything is OK. - If you get a page saying <SPAN -CLASS="QUOTE" ->"Privoxy is not working"</SPAN -> instead, then - your browser didn't use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> for the request, - hence it could not be intercepted, and you have accessed the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->real</I -></SPAN -> - web site at config.privoxy.org.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NEWADS" ->4.4. How can I submit new ads, or report -problems?</A -></H3 -><P ->Please see the <A -HREF="contact.html" ->Contact section</A -> for -various ways to interact with the developers.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NEWADS2" ->4.5. If I do submit missed ads, will -they be included in future updates?</A -></H3 -><P -> Whether such submissions are eventually included in the - <TT -CLASS="FILENAME" ->default.action</TT -> configuration file depends on how - significant the issue is. We of course want to address any potential - problem with major, high-profile sites such as <I -CLASS="CITETITLE" ->Google</I ->, - <I -CLASS="CITETITLE" ->Yahoo</I ->, etc. Any site with global or regional reach, - has a good chance of being a candidate. But at the other end of the spectrum - are any number of smaller, low-profile sites such as for local clubs or - schools. Since their reach and impact are much less, they are best handled by - inclusion in the user's <TT -CLASS="FILENAME" ->user.action</TT ->, and thus would be - unlikely to be included. </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NOONECARES" ->4.6. Why doesn't anyone answer my support -request?</A -></H3 -><P ->Rest assured that it has been read and considered. Why it is not answered, -could be for various reasons, including no one has a good answer for it, no -one has had time to yet investigate it thoroughly, it has been reported -numerous times already, or because not enough information was provided to help -us help you. Your efforts are not wasted, and we do appreciate them.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="IP" ->4.7. How can I hide my IP address?</A -></H3 -><P -> If you run both the browser and <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> locally, you cannot hide your IP - address with <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> or ultimately any other - software alone. The server needs to know your IP address so that it knows - where to send the responses back. </P -><P -> There are many publicly usable "anonymous" proxies out there, which - provide a further level of indirection between you and the web server.</P -><P -> However, these proxies are called "anonymous" because you don't need - to authenticate, not because they would offer any real anonymity. - Most of them will log your IP address and make it available to the - authorities in case you violate the law of the country they run in. In fact - you can't even rule out that some of them only exist to *collect* information - on (those suspicious) people with a more than average preference for privacy.</P -><P -> If you want to hide your IP address from most adversaries, - you should consider chaining <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - with <A -HREF="https://www.torproject.org/" -TARGET="_top" ->Tor</A ->. - The configuration details can be found in - <A -HREF="#TOR" -TARGET="_top" ->How do I use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> together - with <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> section</A -> - just below.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN794" ->4.8. Can Privoxy guarantee I am anonymous?</A -></H3 -><P -> No. Your chances of remaining anonymous are improved, but unless you - <A -HREF="#TOR" -TARGET="_top" ->chain <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with <SPAN -CLASS="APPLICATION" ->Tor</SPAN -></A -> - or a similar proxy and know what you're doing when it comes to configuring - the rest of your system, you should assume that everything you do - on the Web can be traced back to you.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can remove various information about you, - and allows <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->you</I -></SPAN -> more freedom to decide which sites - you can trust, and what details you want to reveal. But it neither - hides your IP address, nor can it guarantee that the rest of the system - behaves correctly. There are several possibilities how a web sites can find - out who you are, even if you are using a strict <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - configuration and chained it with <SPAN -CLASS="APPLICATION" ->Tor</SPAN ->.</P -><P -> Most of <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> privacy-enhancing features can be easily subverted - by an insecure browser configuration, therefore you should use a browser that can - be configured to only execute code from trusted sites, and be careful which sites you trust. - For example there is no point in having <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - modify the User-Agent header, if websites can get all the information they want - through JavaScript, ActiveX, Flash, Java etc.</P -><P -> A few browsers disclose the user's email address in certain situations, such - as when transferring a file by FTP. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - does not filter FTP. If you need this feature, or are concerned about the - mail handler of your browser disclosing your email address, you might - consider products such as <SPAN -CLASS="APPLICATION" ->NSClean</SPAN ->.</P -><P -> Browsers available only as binaries could use non-standard headers to give - out any information they can have access to: see the manufacturer's license - agreement. It's impossible to anticipate and prevent every breach of privacy - that might occur. The professionally paranoid prefer browsers available as - source code, because anticipating their behavior is easier. Trust the source, - Luke!</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN812" ->4.9. A test site says I am not using a Proxy.</A -></H3 -><P -> Good! Actually, they are probably testing for some other kinds of proxies. - Hiding yourself completely would require additional steps.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="TOR" ->4.10. How do I use Privoxy - together with Tor?</A -></H3 -><P -> Before you configure <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to use - <A -HREF="https://www.torproject.org/" -TARGET="_top" ->Tor</A ->, - please follow the <I -CLASS="CITETITLE" ->User Manual</I -> chapters - <A -HREF="../user-manual/installation.html" -TARGET="_top" ->2. Installation</A -> and - <A -HREF="../user-manual/startup.html" -TARGET="_top" ->5. Startup</A -> to make sure - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> itself is setup correctly.</P -><P -> - If it is, refer to <A -HREF="https://www.torproject.org/documentation.html" -TARGET="_top" ->Tor's - extensive documentation</A -> to learn how to install <SPAN -CLASS="APPLICATION" ->Tor</SPAN ->, - and make sure <SPAN -CLASS="APPLICATION" ->Tor</SPAN ->'s logfile says that - <SPAN -CLASS="QUOTE" ->"Tor has successfully opened a circuit"</SPAN -> and it - <SPAN -CLASS="QUOTE" ->"looks like client functionality is working"</SPAN ->.</P -><P -> If either <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> or <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - isn't working, their combination most likely will neither. Testing them on their - own will also help you to direct problem reports to the right audience. - If <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> isn't working, don't bother the - <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> developers. If <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> - isn't working, don't send bug reports to the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> Team.</P -><P -> If you verified that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> - are working, it is time to connect them. As far as <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is concerned, <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> is just another proxy that can be reached - by socks4, socks4a and socks5. Most likely you are interested in <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> - to increase your anonymity level, therefore you should use socks5, to make sure DNS - requests are done through <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> and thus invisible to your - local network. Using socks4a would work too, but with socks5 you get more precise error - messages.</P -><P -> Since <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.5, its - <A -HREF="../user-manual/config.html" -TARGET="_top" ->main configuration file</A -> - is already prepared for <SPAN -CLASS="APPLICATION" ->Tor</SPAN ->, if you are using a - default <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> configuration and run it on the same - system as <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, you just have to edit the - <A -HREF="../user-manual/config.html#FORWARDING" -TARGET="_top" ->forwarding section</A -> - and uncomment the line:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># forward-socks5 / 127.0.0.1:9050 . - </PRE -></TD -></TR -></TABLE -></P -><P -> This is enough to reach the Internet, but additionally you might want to - uncomment the following forward rules, to make sure your local network is still - reachable through Privoxy:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># forward 192.168.*.*/ . +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Miscellaneous + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Frequently Asked Questions" href= + "index.html"> + <link rel="PREVIOUS" title="Configuration" href="configuration.html"> + <link rel="NEXT" title="Troubleshooting" href="trouble.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Frequently Asked Questions + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="configuration.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="trouble.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="MISC">4. Miscellaneous</a> + </h1> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN729">4.1. How much does Privoxy slow my browsing down? + This has to add extra time to browsing.</a> + </h3> + <p> + How much of an impact depends on many things, including the CPU of + the host system, how aggressive the configuration is, which + specific actions are being triggered, the size of the page, the + bandwidth of the connection, etc. + </p> + <p> + Overall, it should not slow you down any in real terms, and may + actually help speed things up since ads, banners and other junk are + not typically being retrieved and displayed. The actual processing + time required by <span class="APPLICATION">Privoxy</span> itself + for each page, is relatively small in the overall scheme of things, + and happens very quickly. This is typically more than offset by + time saved not downloading and rendering ad images and other junk + content (if ad blocking is being used). + </p> + <p> + <span class="QUOTE">"Filtering"</span> content via the <tt class= + "LITERAL"><a href="../user-manual/actions-file.html#FILTER" target= + "_top">filter</a></tt> or <tt class="LITERAL"><a href= + "../user-manual/actions-file.html#DEANIMATE-GIFS" target= + "_top">deanimate-gifs</a></tt> actions may cause a perceived + slowdown, since the entire document needs to be buffered before + displaying. And on very large documents, filtering may have some + measurable impact. How much depends on the page size, the actual + definition of the filter(s), etc. See below. Most other actions + have little to no impact on speed. + </p> + <p> + Also, when filtering is enabled but zlib support isn't available, + compression is often disabled (see <a href= + "../user-manual/actions-file.html#PREVENT-COMPRESSION" target= + "_top">prevent-compression</a>). This can have an impact on speed + as well, although it's probably smaller than you might think. + Again, the page size, etc. will determine how much of an impact. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="LOADINGTIMES">4.2. I notice considerable delays in page + requests. What's wrong?</a> + </h3> + <p> + If you use any <tt class="LITERAL"><a href= + "../user-manual/actions-file.html#FILTER" target= + "_top">filter</a></tt> action, such as filtering banners by size, + web-bugs etc, or the <tt class="LITERAL"><a href= + "../user-manual/actions-file.html#DEANIMATE-GIFS" target= + "_top">deanimate-gifs</a></tt> action, the entire document must be + loaded into memory in order for the filtering mechanism to work, + and nothing is sent to the browser during this time. + </p> + <p> + The loading time typically does not really change much in real + numbers, but the feeling is different, because most browsers are + able to start rendering incomplete content, giving the user a + feeling of "it works". This effect is more noticeable on slower + dialup connections. Extremely large documents may have some impact + on the time to load the page where there is filtering being done. + But overall, the difference should be very minimal. If there is a + big impact, then probably some other situation is contributing + (like anti-virus software). + </p> + <p> + Filtering is automatically disabled for inappropriate MIME types. + But note that if the web server mis-reports the MIME type, then + content that should not be filtered, could be. <span class= + "APPLICATION">Privoxy</span> only knows how to differentiate + filterable content because of the MIME type as reported by the + server, or because of some configuration setting that + enables/disables filtering. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="CONFIGURL">4.3. What are "http://config.privoxy.org/" and + "http://p.p/"?</a> + </h3> + <p> + <a href="http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a> is the address of <span + class="APPLICATION">Privoxy</span>'s built-in user interface, and + <a href="http://p.p/" target="_top">http://p.p/</a> is a shortcut + for it. + </p> + <p> + Since <span class="APPLICATION">Privoxy</span> sits between your + web browser and the Internet, it can simply intercept requests for + these addresses and answer them with its built-in <span class= + "QUOTE">"web server"</span>. + </p> + <p> + This also makes for a good test for your browser configuration: If + entering the URL <a href="http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a> takes you to a page saying + <span class="QUOTE">"This is Privoxy ..."</span>, everything is OK. + If you get a page saying <span class="QUOTE">"Privoxy is not + working"</span> instead, then your browser didn't use <span class= + "APPLICATION">Privoxy</span> for the request, hence it could not be + intercepted, and you have accessed the <span class="emphasis"><i + class="EMPHASIS">real</i></span> web site at config.privoxy.org. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NEWADS">4.4. How can I submit new ads, or report + problems?</a> + </h3> + <p> + Please see the <a href="contact.html">Contact section</a> for + various ways to interact with the developers. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NEWADS2">4.5. If I do submit missed ads, will they be + included in future updates?</a> + </h3> + <p> + Whether such submissions are eventually included in the <tt class= + "FILENAME">default.action</tt> configuration file depends on how + significant the issue is. We of course want to address any + potential problem with major, high-profile sites such as <i class= + "CITETITLE">Google</i>, <i class="CITETITLE">Yahoo</i>, etc. Any + site with global or regional reach, has a good chance of being a + candidate. But at the other end of the spectrum are any number of + smaller, low-profile sites such as for local clubs or schools. + Since their reach and impact are much less, they are best handled + by inclusion in the user's <tt class="FILENAME">user.action</tt>, + and thus would be unlikely to be included. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NOONECARES">4.6. Why doesn't anyone answer my support + request?</a> + </h3> + <p> + Rest assured that it has been read and considered. Why it is not + answered, could be for various reasons, including no one has a good + answer for it, no one has had time to yet investigate it + thoroughly, it has been reported numerous times already, or because + not enough information was provided to help us help you. Your + efforts are not wasted, and we do appreciate them. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="IP">4.7. How can I hide my IP address?</a> + </h3> + <p> + If you run both the browser and <span class= + "APPLICATION">Privoxy</span> locally, you cannot hide your IP + address with <span class="APPLICATION">Privoxy</span> or ultimately + any other software alone. The server needs to know your IP address + so that it knows where to send the responses back. + </p> + <p> + There are many publicly usable "anonymous" proxies out there, which + provide a further level of indirection between you and the web + server. + </p> + <p> + However, these proxies are called "anonymous" because you don't + need to authenticate, not because they would offer any real + anonymity. Most of them will log your IP address and make it + available to the authorities in case you violate the law of the + country they run in. In fact you can't even rule out that some of + them only exist to *collect* information on (those suspicious) + people with a more than average preference for privacy. + </p> + <p> + If you want to hide your IP address from most adversaries, you + should consider chaining <span class="APPLICATION">Privoxy</span> + with <a href="https://www.torproject.org/" target="_top">Tor</a>. + The configuration details can be found in <a href="#TOR" target= + "_top">How do I use <span class="APPLICATION">Privoxy</span> + together with <span class="APPLICATION">Tor</span> section</a> just + below. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN794">4.8. Can Privoxy guarantee I am anonymous?</a> + </h3> + <p> + No. Your chances of remaining anonymous are improved, but unless + you <a href="#TOR" target="_top">chain <span class= + "APPLICATION">Privoxy</span> with <span class= + "APPLICATION">Tor</span></a> or a similar proxy and know what + you're doing when it comes to configuring the rest of your system, + you should assume that everything you do on the Web can be traced + back to you. + </p> + <p> + <span class="APPLICATION">Privoxy</span> can remove various + information about you, and allows <span class="emphasis"><i class= + "EMPHASIS">you</i></span> more freedom to decide which sites you + can trust, and what details you want to reveal. But it neither + hides your IP address, nor can it guarantee that the rest of the + system behaves correctly. There are several possibilities how a web + sites can find out who you are, even if you are using a strict + <span class="APPLICATION">Privoxy</span> configuration and chained + it with <span class="APPLICATION">Tor</span>. + </p> + <p> + Most of <span class="APPLICATION">Privoxy's</span> + privacy-enhancing features can be easily subverted by an insecure + browser configuration, therefore you should use a browser that can + be configured to only execute code from trusted sites, and be + careful which sites you trust. For example there is no point in + having <span class="APPLICATION">Privoxy</span> modify the + User-Agent header, if websites can get all the information they + want through JavaScript, ActiveX, Flash, Java etc. + </p> + <p> + A few browsers disclose the user's email address in certain + situations, such as when transferring a file by FTP. <span class= + "APPLICATION">Privoxy</span> does not filter FTP. If you need this + feature, or are concerned about the mail handler of your browser + disclosing your email address, you might consider products such as + <span class="APPLICATION">NSClean</span>. + </p> + <p> + Browsers available only as binaries could use non-standard headers + to give out any information they can have access to: see the + manufacturer's license agreement. It's impossible to anticipate and + prevent every breach of privacy that might occur. The + professionally paranoid prefer browsers available as source code, + because anticipating their behavior is easier. Trust the source, + Luke! + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN812">4.9. A test site says I am not using a Proxy.</a> + </h3> + <p> + Good! Actually, they are probably testing for some other kinds of + proxies. Hiding yourself completely would require additional steps. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="TOR">4.10. How do I use Privoxy together with Tor?</a> + </h3> + <p> + Before you configure <span class="APPLICATION">Privoxy</span> to + use <a href="https://www.torproject.org/" target="_top">Tor</a>, + please follow the <i class="CITETITLE">User Manual</i> chapters <a + href="../user-manual/installation.html" target="_top">2. + Installation</a> and <a href="../user-manual/startup.html" target= + "_top">5. Startup</a> to make sure <span class= + "APPLICATION">Privoxy</span> itself is setup correctly. + </p> + <p> + If it is, refer to <a href= + "https://www.torproject.org/documentation.html" target="_top">Tor's + extensive documentation</a> to learn how to install <span class= + "APPLICATION">Tor</span>, and make sure <span class= + "APPLICATION">Tor</span>'s logfile says that <span class= + "QUOTE">"Tor has successfully opened a circuit"</span> and it <span + class="QUOTE">"looks like client functionality is working"</span>. + </p> + <p> + If either <span class="APPLICATION">Tor</span> or <span class= + "APPLICATION">Privoxy</span> isn't working, their combination most + likely will neither. Testing them on their own will also help you + to direct problem reports to the right audience. If <span class= + "APPLICATION">Privoxy</span> isn't working, don't bother the <span + class="APPLICATION">Tor</span> developers. If <span class= + "APPLICATION">Tor</span> isn't working, don't send bug reports to + the <span class="APPLICATION">Privoxy</span> Team. + </p> + <p> + If you verified that <span class="APPLICATION">Privoxy</span> and + <span class="APPLICATION">Tor</span> are working, it is time to + connect them. As far as <span class="APPLICATION">Privoxy</span> is + concerned, <span class="APPLICATION">Tor</span> is just another + proxy that can be reached by socks4, socks4a and socks5. Most + likely you are interested in <span class="APPLICATION">Tor</span> + to increase your anonymity level, therefore you should use socks5, + to make sure DNS requests are done through <span class= + "APPLICATION">Tor</span> and thus invisible to your local network. + Using socks4a would work too, but with socks5 you get more precise + error messages. + </p> + <p> + Since <span class="APPLICATION">Privoxy</span> 3.0.5, its <a href= + "../user-manual/config.html" target="_top">main configuration + file</a> is already prepared for <span class= + "APPLICATION">Tor</span>, if you are using a default <span class= + "APPLICATION">Tor</span> configuration and run it on the same + system as <span class="APPLICATION">Privoxy</span>, you just have + to edit the <a href="../user-manual/config.html#FORWARDING" target= + "_top">forwarding section</a> and uncomment the line: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# forward-socks5 / 127.0.0.1:9050 . +</pre> + </td> + </tr> + </table> + + <p> + This is enough to reach the Internet, but additionally you might + want to uncomment the following forward rules, to make sure your + local network is still reachable through Privoxy: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# forward 192.168.*.*/ . # forward 10.*.*.*/ . # forward 127.*.*.*/ . - </PRE -></TD -></TR -></TABLE -></P -><P -> Unencrypted connections to systems in these address ranges will - be as (un)secure as the local network is, but the alternative is - that your browser can't reach the network at all. Then again, - that may actually be desired and if you don't know for sure - that your browser has to be able to reach the local network, - there's no reason to allow it.</P -><P -> If you want your browser to be able to reach servers in your local - network by using their names, you will need additional exceptions - that look like this:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># forward localhost/ . - </PRE -></TD -></TR -></TABLE -></P -><P -> Save the modified configuration file and open - <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status/</A -> - in your browser, confirm that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has reloaded its configuration - and that there are no other forward lines, unless you know that you need them. If everything looks good, - refer to - <A -HREF="https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#IsMyConnectionPrivate" -TARGET="_top" ->Tor - Faq 4.2</A -> to learn how to verify that you are really using <SPAN -CLASS="APPLICATION" ->Tor</SPAN ->.</P -><P -> Afterward, please take the time to at least skim through the rest - of <SPAN -CLASS="APPLICATION" ->Tor's</SPAN -> documentation. Make sure you understand - what <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> does, why it is no replacement for - application level security, and why you probably don't want to - use it for unencrypted logins.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN868" ->4.11. Might some things break because header information or -content is being altered?</A -></H3 -><P -> Definitely. It is common for sites to use browser type, browser version, - HTTP header content, and various other techniques in order to dynamically - decide what to display and how to display it. What you see, and what I see, - might be very different. There are many, many ways that this can be handled, - so having hard and fast rules, is tricky.</P -><P -> The <SPAN -CLASS="QUOTE" ->"User-Agent"</SPAN -> is sometimes used in this way to identify - the browser, and adjust content accordingly.</P -><P -> Also, different browsers use different encodings of non-English - characters, certain web servers convert pages on-the-fly according to the - User Agent header. Giving a <SPAN -CLASS="QUOTE" ->"User Agent"</SPAN -> with the wrong - operating system or browser manufacturer causes some sites in these languages - to be garbled; Surfers to Eastern European sites should change it to - something closer. And then some page access counters work by looking at the - <SPAN -CLASS="QUOTE" ->"Referer"</SPAN -> header; they may fail or break if unavailable. The - weather maps of Intellicast have been blocked by their server when no - <SPAN -CLASS="QUOTE" ->"Referer"</SPAN -> or cookie is provided, is another example. (But you - can forge both headers without giving information away). There are - many other ways things can go wrong when trying to fool a web server. The - results of which could inadvertently cause pages to load incorrectly, - partially, or even not at all. And there may be no obvious clues as to just - what went wrong, or why. Nowhere will there be a message that says - <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Turn off <TT -CLASS="LITERAL" ->fast-redirects</TT -> or else!</I -></SPAN -> - "</SPAN -></P -><P -> Similar thoughts apply to modifying JavaScript, and, to a lesser degree, - HTML elements.</P -><P -> If you have problems with a site, you will have to adjust your configuration - accordingly. Cookies are probably the most likely adjustment that may - be required, but by no means the only one.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN882" ->4.12. Can Privoxy act as a <SPAN -CLASS="QUOTE" ->"caching"</SPAN -> proxy to -speed up web browsing?</A -></H3 -><P -> No, it does not have this ability at all. You want something like - <A -HREF="http://www.squid-cache.org/" -TARGET="_top" ->Squid</A -> or - <A -HREF="http://www.pps.jussieu.fr/~jch/software/polipo/" -TARGET="_top" ->Polipo</A -> for this. - And, yes, before you ask, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can co-exist - with other kinds of proxies like <SPAN -CLASS="APPLICATION" ->Squid</SPAN ->. - See the <A -HREF="../user-manual/config.html#FORWARDING" -TARGET="_top" ->forwarding - chapter</A -> in the <A -HREF="../user-manual/index.html" -TARGET="_top" ->user - manual</A -> for details.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN892" ->4.13. What about as a firewall? Can Privoxy protect me?</A -></H3 -><P -> Not in the way you mean, or in the way some firewall vendors claim they can. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can help protect your privacy, but can't - protect your system from intrusion attempts. It is, of course, perfectly possible - to use <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->both</I -></SPAN ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN897" ->4.14. I have large empty spaces / a checkerboard pattern now where -ads used to be. Why?</A -></H3 -><P -> It is technically possible to eliminate banners and ads in a way that frees - their allocated page space. This could easily be done by blocking with - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> filters, - and eliminating the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->entire</I -></SPAN -> image references from the - HTML page source. </P -><P -> But, this would consume considerably more CPU resources (IOW, slow things - down), would likely destroy the layout of some web pages which rely on the - banners utilizing a certain amount of page space, and might fail in other - cases, where the screen space is reserved (e.g. by HTML tables for instance). - Also, making ads and banners disappear without any trace complicates - troubleshooting, and would sooner or later be problematic.</P -><P -> The better alternative is to instead let them stay, and block the resulting - requests for the banners themselves as is now the case. This leaves either - empty space, or the familiar checkerboard pattern.</P -><P -> So the developers won't support this in the default configuration, but you - can of course define appropriate filters yourself to achieve this.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN905" ->4.15. How can Privoxy filter Secure (HTTPS) URLs?</A -></H3 -><P -> Since secure HTTP connections are encrypted SSL sessions between your browser - and the secure site, and are meant to be reliably <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->secure</I -></SPAN ->, - there is little that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can do but hand the raw - gibberish data though from one end to the other unprocessed.</P -><P -> The only exception to this is blocking by host patterns, as the client needs - to tell <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> the name of the remote server, - so that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can establish the connection. - If that name matches a host-only pattern, the connection will be blocked.</P -><P -> As far as ad blocking is concerned, this is less of a restriction than it may - seem, since ad sources are often identifiable by the host name, and often - the banners to be placed in an encrypted page come unencrypted nonetheless - for efficiency reasons, which exposes them to the full power of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s ad blocking.</P -><P -> <SPAN -CLASS="QUOTE" ->"Content cookies"</SPAN -> (those that are embedded in the actual HTML or - JS page content, see <TT -CLASS="LITERAL" -><A -HREF="../user-manual/actions-file.html#FILTER-CONTENT-COOKIES" -TARGET="_top" ->filter{content-cookies}</A -></TT ->), - in an SSL transaction will be impossible to block under these conditions. - Fortunately, this does not seem to be a very common scenario since most - cookies come by traditional means.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN919" ->4.16. Privoxy runs as a <SPAN -CLASS="QUOTE" ->"server"</SPAN ->. How -secure is it? Do I need to take any special precautions?</A -></H3 -><P -> On Unix-like systems, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can run as a non-privileged - user, which is how we recommend it be run. Also, by default - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> listens to requests from <SPAN -CLASS="QUOTE" ->"localhost"</SPAN -> - only.</P -><P -> The server aspect of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is not itself directly - exposed to the Internet in this configuration. If you want to have - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> serve as a LAN proxy, this will have to - be opened up to allow for LAN requests. In this case, we'd recommend - you specify only the LAN gateway address, e.g. 192.168.1.1, in the main - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> configuration file and check all <A -HREF="../user-manual/config.html#ACCESS-CONTROL" -TARGET="_top" ->access control and security - options</A ->. All LAN hosts can then use this as their proxy address - in the browser proxy configuration, but <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - will not listen on any external interfaces. ACLs can be defined in addition, - and using a firewall is always good too. Better safe than sorry.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="TURNOFF" ->4.17. Can I temporarily disable Privoxy?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> doesn't have a transparent proxy mode, - but you can toggle off blocking and content filtering.</P -><P -> The easiest way to do that is to point your browser - to the remote toggle URL: <A -HREF="http://config.privoxy.org/toggle" -TARGET="_top" ->http://config.privoxy.org/toggle</A ->.</P -><P -> See the <A -HREF="../user-manual/appendix.html#BOOKMARKLETS" -TARGET="_top" ->Bookmarklets section</A -> - of the <I -CLASS="CITETITLE" ->User Manual</I -> for an easy way to access this - feature. Note that this is a feature that may need to be enabled in the main - <TT -CLASS="FILENAME" ->config</TT -> file.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="REALLYOFF" ->4.18. When <SPAN -CLASS="QUOTE" ->"disabled"</SPAN -> is Privoxy totally -out of the picture?</A -></H3 -><P -> No, this just means all optional filtering and actions are disabled. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is still acting as a proxy, but just - doing less of the things that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> would - normally be expected to do. It is still a <SPAN -CLASS="QUOTE" ->"middle-man"</SPAN -> in - the interaction between your browser and web sites. See below to bypass - the proxy.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="TURNOFF2" ->4.19. How can I tell Privoxy to totally ignore certain sites?</A -></H3 -><P -> Bypassing a proxy, or proxying based on arbitrary criteria, is purely a browser - configuration issue, not a <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> issue. Modern browsers typically do have - settings for not proxying certain sites. Check your browser's help files.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="CRUNCH" ->4.20. My logs show Privoxy <SPAN -CLASS="QUOTE" ->"crunches"</SPAN -> -ads, but also its own internal CGI pages. What is a <SPAN -CLASS="QUOTE" ->"crunch"</SPAN ->?</A -></H3 -><P -> A <SPAN -CLASS="QUOTE" ->"crunch"</SPAN -> simply means <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> intercepted - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->something</I -></SPAN ->, nothing more. Often this is indeed ads or - banners, but <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> uses the same mechanism for - trapping requests for its own internal pages. For instance, a request for - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> configuration page at: <A -HREF="http://config.privoxy.org" -TARGET="_top" ->http://config.privoxy.org</A ->, is - intercepted (i.e. it does not go out to the 'net), and the familiar CGI - configuration is returned to the browser, and the log consequently will show - a <SPAN -CLASS="QUOTE" ->"crunch"</SPAN ->.</P -><P -> Since version 3.0.7, Privoxy will also log the crunch reason. - If you are using an older version you might want to upgrade.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DOWNLOADS" ->4.21. Can Privoxy effect files that I download -from a webserver? FTP server?</A -></H3 -><P -> From the webserver's perspective, there is no difference between - viewing a document (i.e. a page), and downloading a file. The same is true of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. If there is a match for a <TT -CLASS="LITERAL" -><A -HREF="../user-manual/actions-file.html#BLOCK" -TARGET="_top" ->block</A -></TT -> pattern, - it will still be blocked, and of course this is obvious. - </P -><P -> Filtering is potentially more of a concern since the results are not always - so obvious, and the effects of filtering are there whether the file is simply - viewed, or downloaded. And potentially whether the content is some obnoxious - advertisement, or Mr. Jimmy's latest/greatest source code jewel. Of course, - one of these presumably is <SPAN -CLASS="QUOTE" ->"bad"</SPAN -> content that we don't want, and - the other is <SPAN -CLASS="QUOTE" ->"good"</SPAN -> content that we do want. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is blind to the differences, and can only - distinguish <SPAN -CLASS="QUOTE" ->"good from bad"</SPAN -> by the configuration parameters - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->we</I -></SPAN -> give it.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> knows the differences in files according - to the <SPAN -CLASS="QUOTE" ->"Content Type"</SPAN -> as reported by the webserver. If this is - reported accurately (e.g. <SPAN -CLASS="QUOTE" ->"application/zip"</SPAN -> for a zip archive), - then <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> knows to ignore these where - appropriate. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> potentially can filter HTML - as well as plain text documents, subject to configuration parameters of - course. Also, documents that are of an unknown type (generally assumed to be - <SPAN -CLASS="QUOTE" ->"text/plain"</SPAN ->) can be filtered, as will those that might be - incorrectly reported by the webserver. If such a file is a downloaded file - that is intended to be saved to disk, then any content that might have been - altered by filtering, will be saved too, for these (probably rare) cases.</P -><P -> Note that versions later than 3.0.2 do NOT filter document types reported as - <SPAN -CLASS="QUOTE" ->"text/plain"</SPAN ->. Prior to this, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - did filter this document type.</P -><P -> In short, filtering is <SPAN -CLASS="QUOTE" ->"ON"</SPAN -> if a) the content type as reported - by the webserver is appropriate <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->and</I -></SPAN -> b) the configuration - allows it (or at least does not disallow it). That's it. There is no magic - cookie anywhere to say this is <SPAN -CLASS="QUOTE" ->"good"</SPAN -> and this is - <SPAN -CLASS="QUOTE" ->"bad"</SPAN ->. It's the configuration that lets it all happen or not.</P -><P -> If you download text files, you probably do not want these to be filtered, - particularly if the content is source code, or other critical content. Source - code sometimes might be mistaken for Javascript (i.e. the kind that might - open a pop-up window). It is recommended to turn off filtering for download - sites (particularly if the content may be plain text files and you are using - version 3.0.2 or earlier) in your <TT -CLASS="FILENAME" ->user.action</TT -> file. And - also, for any site or page where making <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->any</I -></SPAN -> changes at - all to the content is to be avoided.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> does not do FTP at all, only HTTP - and HTTPS (SSL) protocols.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DOWNLOADS2" ->4.22. I just downloaded a Perl script, and Privoxy -altered it! Yikes, what is wrong!</A -></H3 -><P -> Please read above.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="HOSTSFILE" ->4.23. Should I continue to use a <SPAN -CLASS="QUOTE" ->"HOSTS"</SPAN -> file for ad-blocking?</A -></H3 -><P -> One time-tested technique to defeat common ads is to trick the local DNS - system by giving a phony IP address for the ad generator in the local - <TT -CLASS="FILENAME" ->HOSTS</TT -> file, typically using <TT -CLASS="LITERAL" ->127.0.0.1</TT ->, aka - <TT -CLASS="LITERAL" ->localhost</TT ->. This effectively blocks the ad.</P -><P -> There is no reason to use this technique in conjunction with - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - does essentially the same thing, much more elegantly and with much more - flexibility. A large <TT -CLASS="FILENAME" ->HOSTS</TT -> file, in fact, not only - duplicates effort, but may get in the way and seriously slow down your system. - It is recommended to remove such entries from your <TT -CLASS="FILENAME" ->HOSTS</TT -> file. If you think - your hosts list is neglected by <SPAN -CLASS="APPLICATION" ->Privoxy's </SPAN -> - configuration, consider adding your list to your <TT -CLASS="FILENAME" ->user.action</TT -> file:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { +block } +</pre> + </td> + </tr> + </table> + + <p> + Unencrypted connections to systems in these address ranges will be + as (un)secure as the local network is, but the alternative is that + your browser can't reach the network at all. Then again, that may + actually be desired and if you don't know for sure that your + browser has to be able to reach the local network, there's no + reason to allow it. + </p> + <p> + If you want your browser to be able to reach servers in your local + network by using their names, you will need additional exceptions + that look like this: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# forward localhost/ . +</pre> + </td> + </tr> + </table> + + <p> + Save the modified configuration file and open <a href= + "http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status/</a> in your browser, + confirm that <span class="APPLICATION">Privoxy</span> has reloaded + its configuration and that there are no other forward lines, unless + you know that you need them. If everything looks good, refer to <a + href= + "https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#IsMyConnectionPrivate" + target="_top">Tor Faq 4.2</a> to learn how to verify that you are + really using <span class="APPLICATION">Tor</span>. + </p> + <p> + Afterward, please take the time to at least skim through the rest + of <span class="APPLICATION">Tor's</span> documentation. Make sure + you understand what <span class="APPLICATION">Tor</span> does, why + it is no replacement for application level security, and why you + probably don't want to use it for unencrypted logins. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN868">4.11. Might some things break because header + information or content is being altered?</a> + </h3> + <p> + Definitely. It is common for sites to use browser type, browser + version, HTTP header content, and various other techniques in order + to dynamically decide what to display and how to display it. What + you see, and what I see, might be very different. There are many, + many ways that this can be handled, so having hard and fast rules, + is tricky. + </p> + <p> + The <span class="QUOTE">"User-Agent"</span> is sometimes used in + this way to identify the browser, and adjust content accordingly. + </p> + <p> + Also, different browsers use different encodings of non-English + characters, certain web servers convert pages on-the-fly according + to the User Agent header. Giving a <span class="QUOTE">"User + Agent"</span> with the wrong operating system or browser + manufacturer causes some sites in these languages to be garbled; + Surfers to Eastern European sites should change it to something + closer. And then some page access counters work by looking at the + <span class="QUOTE">"Referer"</span> header; they may fail or break + if unavailable. The weather maps of Intellicast have been blocked + by their server when no <span class="QUOTE">"Referer"</span> or + cookie is provided, is another example. (But you can forge both + headers without giving information away). There are many other ways + things can go wrong when trying to fool a web server. The results + of which could inadvertently cause pages to load incorrectly, + partially, or even not at all. And there may be no obvious clues as + to just what went wrong, or why. Nowhere will there be a message + that says <span class="QUOTE">"<span class="emphasis"><i class= + "EMPHASIS">Turn off <tt class="LITERAL">fast-redirects</tt> or + else!</i></span> "</span> + </p> + <p> + Similar thoughts apply to modifying JavaScript, and, to a lesser + degree, HTML elements. + </p> + <p> + If you have problems with a site, you will have to adjust your + configuration accordingly. Cookies are probably the most likely + adjustment that may be required, but by no means the only one. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN882">4.12. Can Privoxy act as a <span class= + "QUOTE">"caching"</span> proxy to speed up web browsing?</a> + </h3> + <p> + No, it does not have this ability at all. You want something like + <a href="http://www.squid-cache.org/" target="_top">Squid</a> or <a + href="http://www.pps.jussieu.fr/~jch/software/polipo/" target= + "_top">Polipo</a> for this. And, yes, before you ask, <span class= + "APPLICATION">Privoxy</span> can co-exist with other kinds of + proxies like <span class="APPLICATION">Squid</span>. See the <a + href="../user-manual/config.html#FORWARDING" target= + "_top">forwarding chapter</a> in the <a href= + "../user-manual/index.html" target="_top">user manual</a> for + details. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN892">4.13. What about as a firewall? Can Privoxy + protect me?</a> + </h3> + <p> + Not in the way you mean, or in the way some firewall vendors claim + they can. <span class="APPLICATION">Privoxy</span> can help protect + your privacy, but can't protect your system from intrusion + attempts. It is, of course, perfectly possible to use <span class= + "emphasis"><i class="EMPHASIS">both</i></span>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN897">4.14. I have large empty spaces / a checkerboard + pattern now where ads used to be. Why?</a> + </h3> + <p> + It is technically possible to eliminate banners and ads in a way + that frees their allocated page space. This could easily be done by + blocking with <span class="APPLICATION">Privoxy's</span> filters, + and eliminating the <span class="emphasis"><i class= + "EMPHASIS">entire</i></span> image references from the HTML page + source. + </p> + <p> + But, this would consume considerably more CPU resources (IOW, slow + things down), would likely destroy the layout of some web pages + which rely on the banners utilizing a certain amount of page space, + and might fail in other cases, where the screen space is reserved + (e.g. by HTML tables for instance). Also, making ads and banners + disappear without any trace complicates troubleshooting, and would + sooner or later be problematic. + </p> + <p> + The better alternative is to instead let them stay, and block the + resulting requests for the banners themselves as is now the case. + This leaves either empty space, or the familiar checkerboard + pattern. + </p> + <p> + So the developers won't support this in the default configuration, + but you can of course define appropriate filters yourself to + achieve this. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN905">4.15. How can Privoxy filter Secure (HTTPS) + URLs?</a> + </h3> + <p> + Since secure HTTP connections are encrypted SSL sessions between + your browser and the secure site, and are meant to be reliably + <span class="emphasis"><i class="EMPHASIS">secure</i></span>, there + is little that <span class="APPLICATION">Privoxy</span> can do but + hand the raw gibberish data though from one end to the other + unprocessed. + </p> + <p> + The only exception to this is blocking by host patterns, as the + client needs to tell <span class="APPLICATION">Privoxy</span> the + name of the remote server, so that <span class= + "APPLICATION">Privoxy</span> can establish the connection. If that + name matches a host-only pattern, the connection will be blocked. + </p> + <p> + As far as ad blocking is concerned, this is less of a restriction + than it may seem, since ad sources are often identifiable by the + host name, and often the banners to be placed in an encrypted page + come unencrypted nonetheless for efficiency reasons, which exposes + them to the full power of <span class= + "APPLICATION">Privoxy</span>'s ad blocking. + </p> + <p> + <span class="QUOTE">"Content cookies"</span> (those that are + embedded in the actual HTML or JS page content, see <tt class= + "LITERAL"><a href= + "../user-manual/actions-file.html#FILTER-CONTENT-COOKIES" target= + "_top">filter{content-cookies}</a></tt>), in an SSL transaction + will be impossible to block under these conditions. Fortunately, + this does not seem to be a very common scenario since most cookies + come by traditional means. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN919">4.16. Privoxy runs as a <span class= + "QUOTE">"server"</span>. How secure is it? Do I need to take any + special precautions?</a> + </h3> + <p> + On Unix-like systems, <span class="APPLICATION">Privoxy</span> can + run as a non-privileged user, which is how we recommend it be run. + Also, by default <span class="APPLICATION">Privoxy</span> listens + to requests from <span class="QUOTE">"localhost"</span> only. + </p> + <p> + The server aspect of <span class="APPLICATION">Privoxy</span> is + not itself directly exposed to the Internet in this configuration. + If you want to have <span class="APPLICATION">Privoxy</span> serve + as a LAN proxy, this will have to be opened up to allow for LAN + requests. In this case, we'd recommend you specify only the LAN + gateway address, e.g. 192.168.1.1, in the main <span class= + "APPLICATION">Privoxy</span> configuration file and check all <a + href="../user-manual/config.html#ACCESS-CONTROL" target= + "_top">access control and security options</a>. All LAN hosts can + then use this as their proxy address in the browser proxy + configuration, but <span class="APPLICATION">Privoxy</span> will + not listen on any external interfaces. ACLs can be defined in + addition, and using a firewall is always good too. Better safe than + sorry. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="TURNOFF">4.17. Can I temporarily disable Privoxy?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> doesn't have a transparent + proxy mode, but you can toggle off blocking and content filtering. + </p> + <p> + The easiest way to do that is to point your browser to the remote + toggle URL: <a href="http://config.privoxy.org/toggle" target= + "_top">http://config.privoxy.org/toggle</a>. + </p> + <p> + See the <a href="../user-manual/appendix.html#BOOKMARKLETS" target= + "_top">Bookmarklets section</a> of the <i class="CITETITLE">User + Manual</i> for an easy way to access this feature. Note that this + is a feature that may need to be enabled in the main <tt class= + "FILENAME">config</tt> file. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="REALLYOFF">4.18. When <span class= + "QUOTE">"disabled"</span> is Privoxy totally out of the + picture?</a> + </h3> + <p> + No, this just means all optional filtering and actions are + disabled. <span class="APPLICATION">Privoxy</span> is still acting + as a proxy, but just doing less of the things that <span class= + "APPLICATION">Privoxy</span> would normally be expected to do. It + is still a <span class="QUOTE">"middle-man"</span> in the + interaction between your browser and web sites. See below to bypass + the proxy. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="TURNOFF2">4.19. How can I tell Privoxy to totally ignore + certain sites?</a> + </h3> + <p> + Bypassing a proxy, or proxying based on arbitrary criteria, is + purely a browser configuration issue, not a <span class= + "APPLICATION">Privoxy</span> issue. Modern browsers typically do + have settings for not proxying certain sites. Check your browser's + help files. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="CRUNCH">4.20. My logs show Privoxy <span class= + "QUOTE">"crunches"</span> ads, but also its own internal CGI pages. + What is a <span class="QUOTE">"crunch"</span>?</a> + </h3> + <p> + A <span class="QUOTE">"crunch"</span> simply means <span class= + "APPLICATION">Privoxy</span> intercepted <span class="emphasis"><i + class="EMPHASIS">something</i></span>, nothing more. Often this is + indeed ads or banners, but <span class="APPLICATION">Privoxy</span> + uses the same mechanism for trapping requests for its own internal + pages. For instance, a request for <span class= + "APPLICATION">Privoxy's</span> configuration page at: <a href= + "http://config.privoxy.org" target= + "_top">http://config.privoxy.org</a>, is intercepted (i.e. it does + not go out to the 'net), and the familiar CGI configuration is + returned to the browser, and the log consequently will show a <span + class="QUOTE">"crunch"</span>. + </p> + <p> + Since version 3.0.7, Privoxy will also log the crunch reason. If + you are using an older version you might want to upgrade. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DOWNLOADS">4.21. Can Privoxy effect files that I download + from a webserver? FTP server?</a> + </h3> + <p> + From the webserver's perspective, there is no difference between + viewing a document (i.e. a page), and downloading a file. The same + is true of <span class="APPLICATION">Privoxy</span>. If there is a + match for a <tt class="LITERAL"><a href= + "../user-manual/actions-file.html#BLOCK" target= + "_top">block</a></tt> pattern, it will still be blocked, and of + course this is obvious. + </p> + <p> + Filtering is potentially more of a concern since the results are + not always so obvious, and the effects of filtering are there + whether the file is simply viewed, or downloaded. And potentially + whether the content is some obnoxious advertisement, or Mr. Jimmy's + latest/greatest source code jewel. Of course, one of these + presumably is <span class="QUOTE">"bad"</span> content that we + don't want, and the other is <span class="QUOTE">"good"</span> + content that we do want. <span class="APPLICATION">Privoxy</span> + is blind to the differences, and can only distinguish <span class= + "QUOTE">"good from bad"</span> by the configuration parameters + <span class="emphasis"><i class="EMPHASIS">we</i></span> give it. + </p> + <p> + <span class="APPLICATION">Privoxy</span> knows the differences in + files according to the <span class="QUOTE">"Content Type"</span> as + reported by the webserver. If this is reported accurately (e.g. + <span class="QUOTE">"application/zip"</span> for a zip archive), + then <span class="APPLICATION">Privoxy</span> knows to ignore these + where appropriate. <span class="APPLICATION">Privoxy</span> + potentially can filter HTML as well as plain text documents, + subject to configuration parameters of course. Also, documents that + are of an unknown type (generally assumed to be <span class= + "QUOTE">"text/plain"</span>) can be filtered, as will those that + might be incorrectly reported by the webserver. If such a file is a + downloaded file that is intended to be saved to disk, then any + content that might have been altered by filtering, will be saved + too, for these (probably rare) cases. + </p> + <p> + Note that versions later than 3.0.2 do NOT filter document types + reported as <span class="QUOTE">"text/plain"</span>. Prior to this, + <span class="APPLICATION">Privoxy</span> did filter this document + type. + </p> + <p> + In short, filtering is <span class="QUOTE">"ON"</span> if a) the + content type as reported by the webserver is appropriate <span + class="emphasis"><i class="EMPHASIS">and</i></span> b) the + configuration allows it (or at least does not disallow it). That's + it. There is no magic cookie anywhere to say this is <span class= + "QUOTE">"good"</span> and this is <span class="QUOTE">"bad"</span>. + It's the configuration that lets it all happen or not. + </p> + <p> + If you download text files, you probably do not want these to be + filtered, particularly if the content is source code, or other + critical content. Source code sometimes might be mistaken for + Javascript (i.e. the kind that might open a pop-up window). It is + recommended to turn off filtering for download sites (particularly + if the content may be plain text files and you are using version + 3.0.2 or earlier) in your <tt class="FILENAME">user.action</tt> + file. And also, for any site or page where making <span class= + "emphasis"><i class="EMPHASIS">any</i></span> changes at all to the + content is to be avoided. + </p> + <p> + <span class="APPLICATION">Privoxy</span> does not do FTP at all, + only HTTP and HTTPS (SSL) protocols. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DOWNLOADS2">4.22. I just downloaded a Perl script, and + Privoxy altered it! Yikes, what is wrong!</a> + </h3> + <p> + Please read above. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="HOSTSFILE">4.23. Should I continue to use a <span class= + "QUOTE">"HOSTS"</span> file for ad-blocking?</a> + </h3> + <p> + One time-tested technique to defeat common ads is to trick the + local DNS system by giving a phony IP address for the ad generator + in the local <tt class="FILENAME">HOSTS</tt> file, typically using + <tt class="LITERAL">127.0.0.1</tt>, aka <tt class= + "LITERAL">localhost</tt>. This effectively blocks the ad. + </p> + <p> + There is no reason to use this technique in conjunction with <span + class="APPLICATION">Privoxy</span>. <span class= + "APPLICATION">Privoxy</span> does essentially the same thing, much + more elegantly and with much more flexibility. A large <tt class= + "FILENAME">HOSTS</tt> file, in fact, not only duplicates effort, + but may get in the way and seriously slow down your system. It is + recommended to remove such entries from your <tt class= + "FILENAME">HOSTS</tt> file. If you think your hosts list is + neglected by <span class="APPLICATION">Privoxy's</span> + configuration, consider adding your list to your <tt class= + "FILENAME">user.action</tt> file: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { +block } www.ad.example1.com ad.example2.com ads.galore.example.com - etc.example.com</PRE -></TD -></TR -></TABLE -></P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="SEEALSO" ->4.24. Where can I find more information about Privoxy -and related issues?</A -></H3 -><P -> Other references and sites of interest to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - users:</P -><P -> <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->http://www.privoxy.org/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> Home page. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/faq/" -TARGET="_top" ->http://www.privoxy.org/faq/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> FAQ. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/developer-manual/" -TARGET="_top" ->http://www.privoxy.org/developer-manual/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> developer manual. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://sourceforge.net/projects/ijbswa/" -TARGET="_top" ->https://sourceforge.net/projects/ijbswa/</A ->, - the Project Page for <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on - <A -HREF="http://sourceforge.net" -TARGET="_top" ->SourceForge</A ->. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A ->, - the web-based user interface. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> must be - running for this to work. Shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A -> - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://sourceforge.net/tracker/?group_id=11118&atid=460288" -TARGET="_top" ->https://sourceforge.net/tracker/?group_id=11118&atid=460288</A ->, to submit <SPAN -CLASS="QUOTE" ->"misses"</SPAN -> and other - configuration related suggestions to the developers. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - - - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.junkbusters.com/ht/en/cookies.html" -TARGET="_top" ->http://www.junkbusters.com/ht/en/cookies.html</A ->, - an explanation how cookies are used to track web users. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.junkbusters.com/ijb.html" -TARGET="_top" ->http://www.junkbusters.com/ijb.html</A ->, - the original Internet Junkbuster. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.squid-cache.org/" -TARGET="_top" ->http://www.squid-cache.org/</A ->, a popular - caching proxy, which is often used together with <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.pps.jussieu.fr/~jch/software/polipo/" -TARGET="_top" ->http://www.pps.jussieu.fr/~jch/software/polipo/</A ->, - <SPAN -CLASS="APPLICATION" ->Polipo</SPAN -> is a caching proxy with advanced features - like pipelining, multiplexing and caching of partial instances. In many setups - it can be used as <SPAN -CLASS="APPLICATION" ->Squid</SPAN -> replacement. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://www.torproject.org/" -TARGET="_top" ->https://www.torproject.org/</A ->, - <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> can help anonymize web browsing, - web publishing, instant messaging, IRC, SSH, and other applications. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="MICROSUCK" ->4.25. I've noticed that Privoxy changes <SPAN -CLASS="QUOTE" ->"Microsoft"</SPAN -> to -<SPAN -CLASS="QUOTE" ->"MicroSuck"</SPAN ->! Why are you manipulating my browsing?</A -></H3 -><P -> We're not. The text substitutions that you are seeing are disabled - in the default configuration as shipped. You have either manually - activated the <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->fun</TT ->"</SPAN -> filter which - is clearly labeled <SPAN -CLASS="QUOTE" ->"Text replacements for subversive browsing - fun!"</SPAN -> or you are using an older Privoxy version and have implicitly - activated it by choosing the <SPAN -CLASS="QUOTE" ->"Advanced"</SPAN -> profile in the - web-based editor. Please upgrade.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="VALID" ->4.26. Does Privoxy produce <SPAN -CLASS="QUOTE" ->"valid"</SPAN -> HTML (or XHTML)?</A -></H3 -><P -> Privoxy generates HTML in both its own <SPAN -CLASS="QUOTE" ->"templates"</SPAN ->, and possibly - whenever there are text substitutions via a <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> filter. While this - should always conform to the HTML 4.01 specifications, it has not been - validated against this or any other standard. </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="SURPRISE-PRIVOXY" ->4.27. How did you manage to get Privoxy on my computer without my consent?</A -></H3 -><P -> We didn't. We make Privoxy available for download, but we don't go - around installing it on other people's systems behind their back. - If you discover Privoxy running on your system and are sure you didn't - install it yourself, somebody else did. You may not even be running - the real Privoxy, but maybe something else that only pretends to be - Privoxy, or maybe something that is based on the real Privoxy, - but has been modified.</P -><P -> Lately there have been reports of problems with some kind of - Privoxy versions that come preinstalled on some Netbooks. - Some of the problems described are inconsistent with the behaviour - of official Privoxy versions, which suggests that the preinstalled - software may contain vendor modifications that we don't know about - and thus can't debug.</P -><P -> Privoxy's <A -HREF="copyright.html" ->license</A -> allows vendor - modifications, but the vendor has to comply with the license, - which involves informing the user about the changes and to make - the changes available under the same license as Privoxy itself.</P -><P -> If you are having trouble with a modified Privoxy version, - please try to talk to whoever made the modifications before - reporting the problem to us. Please also try to convince - whoever made the modifications to talk to us. If you think - somebody gave you a modified Privoxy version without complying - to the license, please let us know.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="configuration.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="trouble.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Configuration</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Troubleshooting</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file + etc.example.com +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="SEEALSO">4.24. Where can I find more information about + Privoxy and related issues?</a> + </h3> + <p> + Other references and sites of interest to <span class= + "APPLICATION">Privoxy</span> users: + </p> + <p> + </p> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/" target= + "_top">http://www.privoxy.org/</a>, the <span class= + "APPLICATION">Privoxy</span> Home page. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/faq/" target= + "_top">http://www.privoxy.org/faq/</a>, the <span class= + "APPLICATION">Privoxy</span> FAQ. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/developer-manual/" target= + "_top">http://www.privoxy.org/developer-manual/</a>, the + <span class="APPLICATION">Privoxy</span> developer manual. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="https://sourceforge.net/projects/ijbswa/" target= + "_top">https://sourceforge.net/projects/ijbswa/</a>, the + Project Page for <span class="APPLICATION">Privoxy</span> on + <a href="http://sourceforge.net" target= + "_top">SourceForge</a>. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a>, the web-based user + interface. <span class="APPLICATION">Privoxy</span> must be + running for this to work. Shortcut: <a href="http://p.p/" + target="_top">http://p.p/</a> + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href= + "https://sourceforge.net/tracker/?group_id=11118&atid=460288" + target= + "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, + to submit <span class="QUOTE">"misses"</span> and other + configuration related suggestions to the developers. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.junkbusters.com/ht/en/cookies.html" + target= + "_top">http://www.junkbusters.com/ht/en/cookies.html</a>, an + explanation how cookies are used to track web users. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.junkbusters.com/ijb.html" target= + "_top">http://www.junkbusters.com/ijb.html</a>, the original + Internet Junkbuster. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.squid-cache.org/" target= + "_top">http://www.squid-cache.org/</a>, a popular caching + proxy, which is often used together with <span class= + "APPLICATION">Privoxy</span>. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.pps.jussieu.fr/~jch/software/polipo/" + target= + "_top">http://www.pps.jussieu.fr/~jch/software/polipo/</a>, + <span class="APPLICATION">Polipo</span> is a caching proxy + with advanced features like pipelining, multiplexing and + caching of partial instances. In many setups it can be used + as <span class="APPLICATION">Squid</span> replacement. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="https://www.torproject.org/" target= + "_top">https://www.torproject.org/</a>, <span class= + "APPLICATION">Tor</span> can help anonymize web browsing, web + publishing, instant messaging, IRC, SSH, and other + applications. + </td> + </tr> + </tbody> + </table> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="MICROSUCK">4.25. I've noticed that Privoxy changes <span + class="QUOTE">"Microsoft"</span> to <span class= + "QUOTE">"MicroSuck"</span>! Why are you manipulating my + browsing?</a> + </h3> + <p> + We're not. The text substitutions that you are seeing are disabled + in the default configuration as shipped. You have either manually + activated the <span class="QUOTE">"<tt class= + "LITERAL">fun</tt>"</span> filter which is clearly labeled <span + class="QUOTE">"Text replacements for subversive browsing + fun!"</span> or you are using an older Privoxy version and have + implicitly activated it by choosing the <span class= + "QUOTE">"Advanced"</span> profile in the web-based editor. Please + upgrade. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="VALID">4.26. Does Privoxy produce <span class= + "QUOTE">"valid"</span> HTML (or XHTML)?</a> + </h3> + <p> + Privoxy generates HTML in both its own <span class= + "QUOTE">"templates"</span>, and possibly whenever there are text + substitutions via a <span class="APPLICATION">Privoxy</span> + filter. While this should always conform to the HTML 4.01 + specifications, it has not been validated against this or any other + standard. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="SURPRISE-PRIVOXY">4.27. How did you manage to get Privoxy + on my computer without my consent?</a> + </h3> + <p> + We didn't. We make Privoxy available for download, but we don't go + around installing it on other people's systems behind their back. + If you discover Privoxy running on your system and are sure you + didn't install it yourself, somebody else did. You may not even be + running the real Privoxy, but maybe something else that only + pretends to be Privoxy, or maybe something that is based on the + real Privoxy, but has been modified. + </p> + <p> + Lately there have been reports of problems with some kind of + Privoxy versions that come preinstalled on some Netbooks. Some of + the problems described are inconsistent with the behaviour of + official Privoxy versions, which suggests that the preinstalled + software may contain vendor modifications that we don't know about + and thus can't debug. + </p> + <p> + Privoxy's <a href="copyright.html">license</a> allows vendor + modifications, but the vendor has to comply with the license, which + involves informing the user about the changes and to make the + changes available under the same license as Privoxy itself. + </p> + <p> + If you are having trouble with a modified Privoxy version, please + try to talk to whoever made the modifications before reporting the + problem to us. Please also try to convince whoever made the + modifications to talk to us. If you think somebody gave you a + modified Privoxy version without complying to the license, please + let us know. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="configuration.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="trouble.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Configuration + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Troubleshooting + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/faq/trouble.html b/doc/webserver/faq/trouble.html index 2f8374e2..141a835e 100644 --- a/doc/webserver/faq/trouble.html +++ b/doc/webserver/faq/trouble.html @@ -1,239 +1,167 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Troubleshooting</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy Frequently Asked Questions" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Miscellaneous" -HREF="misc.html"><LINK -REL="NEXT" -TITLE="Contacting the developers, Bug Reporting and Feature Requests" -HREF="contact.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"></HEAD -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy Frequently Asked Questions</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="misc.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="contact.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="TROUBLE" ->5. Troubleshooting</A -></H1 -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN1091" ->5.1. I cannot connect to any websites. Or, I am getting -<SPAN -CLASS="QUOTE" ->"connection refused"</SPAN -> message with every web page. Why?</A -></H3 -><P -> There are several possibilities:</P -><P -><P -></P -><UL -><LI -><P -><SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is not running. Solution: verify - that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is installed correctly, has not crashed, and is indeed running. - Turn on <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> logging, and look at the logs to see what they say.</P -></LI -><LI -><P ->Or your browser is configured for a different port than what - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is using. Solution: verify that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - and your browser are set to the same port (<TT -CLASS="LITERAL" ->listen-address</TT ->).</P -></LI -><LI -><P ->Or if using a forwarding rule, you have a configuration problem or a - problem with a host in the forwarding chain. Solution: temporarily alter your - configuration and take the forwarders out of the equation.</P -></LI -><LI -><P -> Or you have a firewall that is interfering and blocking you. Solution: - try disabling or removing the firewall as a simple test. - </P -></LI -></UL -></P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="ERROR503" ->5.2. Why am I getting a 503 Error (WSAECONNREFUSED) on every page?</A -></H3 -><P -> More than likely this is a problem with your TCP/IP networking. ZoneAlarm has - been reported to cause this symptom -- even if not running! The solution is - to either fight the ZA configuration, or uninstall ZoneAlarm, and then find - something better behaved in its place. Other personal firewall type products - may cause similar type problems if not configured correctly. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="AEN1114" ->5.3. I just added a new rule, but the steenkin ad is -still getting through. How?</A -></H3 -><P -> If the ad had been displayed before you added its URL, it will probably be - held in the browser's cache for some time, so it will be displayed without - the need for any request to the server, and <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - will not be involved. Flush the browser's caches, and then try again.</P -><P -> If this doesn't help, you probably have an error in the rule you - applied. Try pasting the full URL of the offending ad into <A -HREF="http://config.privoxy.org/show-url-info" -TARGET="_top" ->http://config.privoxy.org/show-url-info</A -> - and see if it really matches your new rule. Blocking ads is like blocking - spam: a lot of tinkering is required to stay ahead of the game. And - remember you need to block the URL of the ad in question, which may be - entirely different from the site URL itself. Most ads are hosted on different - servers than the main site itself. If you right-click on the ad, you should - be able to get all the relevant information you need. Alternately, you can - find the correct URL by looking at <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> logs - (you may need to enable logging in the main config file if its disabled).</P -><P -> Below is a slightly modified real-life log snippet that originates with one - requested URL: <TT -CLASS="LITERAL" ->www.example.com</TT -> (name of site was changed - for this example, the number of requests is real). You can see in this the - complexity of what goes into making up this one <SPAN -CLASS="QUOTE" ->"page"</SPAN ->. There - are eight different domains involved here, with thirty two separate URLs - requested in all, making up all manner of images, Shockwave Flash, - JavaScript, CSS stylesheets, scripts, and other related content. Some of this - content is obviously <SPAN -CLASS="QUOTE" ->"good"</SPAN -> or <SPAN -CLASS="QUOTE" ->"bad"</SPAN ->, but not all. - Many of the more questionable looking requests, are going to outside domains - that seem to be identifying themselves with suspicious looking names, making - our job a little easier. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has <SPAN -CLASS="QUOTE" ->"crunched"</SPAN -> (meaning caught - and BLOCKED) quite a few items in this example, but perhaps missed a few as well. </P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->Request: www.example.com/ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Troubleshooting + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy Frequently Asked Questions" href= + "index.html"> + <link rel="PREVIOUS" title="Miscellaneous" href="misc.html"> + <link rel="NEXT" title= + "Contacting the developers, Bug Reporting and Feature Requests" href= + "contact.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy Frequently Asked Questions + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="misc.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="contact.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="TROUBLE">5. Troubleshooting</a> + </h1> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN1091">5.1. I cannot connect to any websites. Or, I am + getting <span class="QUOTE">"connection refused"</span> message + with every web page. Why?</a> + </h3> + <p> + There are several possibilities: + </p> + <ul> + <li> + <p> + <span class="APPLICATION">Privoxy</span> is not running. + Solution: verify that <span class="APPLICATION">Privoxy</span> + is installed correctly, has not crashed, and is indeed running. + Turn on <span class="APPLICATION">Privoxy's</span> logging, and + look at the logs to see what they say. + </p> + </li> + <li> + <p> + Or your browser is configured for a different port than what + <span class="APPLICATION">Privoxy</span> is using. Solution: + verify that <span class="APPLICATION">Privoxy</span> and your + browser are set to the same port (<tt class= + "LITERAL">listen-address</tt>). + </p> + </li> + <li> + <p> + Or if using a forwarding rule, you have a configuration problem + or a problem with a host in the forwarding chain. Solution: + temporarily alter your configuration and take the forwarders + out of the equation. + </p> + </li> + <li> + <p> + Or you have a firewall that is interfering and blocking you. + Solution: try disabling or removing the firewall as a simple + test. + </p> + </li> + </ul> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="ERROR503">5.2. Why am I getting a 503 Error + (WSAECONNREFUSED) on every page?</a> + </h3> + <p> + More than likely this is a problem with your TCP/IP networking. + ZoneAlarm has been reported to cause this symptom -- even if not + running! The solution is to either fight the ZA configuration, or + uninstall ZoneAlarm, and then find something better behaved in its + place. Other personal firewall type products may cause similar type + problems if not configured correctly. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="AEN1114">5.3. I just added a new rule, but the steenkin ad + is still getting through. How?</a> + </h3> + <p> + If the ad had been displayed before you added its URL, it will + probably be held in the browser's cache for some time, so it will + be displayed without the need for any request to the server, and + <span class="APPLICATION">Privoxy</span> will not be involved. + Flush the browser's caches, and then try again. + </p> + <p> + If this doesn't help, you probably have an error in the rule you + applied. Try pasting the full URL of the offending ad into <a href= + "http://config.privoxy.org/show-url-info" target= + "_top">http://config.privoxy.org/show-url-info</a> and see if it + really matches your new rule. Blocking ads is like blocking spam: a + lot of tinkering is required to stay ahead of the game. And + remember you need to block the URL of the ad in question, which may + be entirely different from the site URL itself. Most ads are hosted + on different servers than the main site itself. If you right-click + on the ad, you should be able to get all the relevant information + you need. Alternately, you can find the correct URL by looking at + <span class="APPLICATION">Privoxy's</span> logs (you may need to + enable logging in the main config file if its disabled). + </p> + <p> + Below is a slightly modified real-life log snippet that originates + with one requested URL: <tt class="LITERAL">www.example.com</tt> + (name of site was changed for this example, the number of requests + is real). You can see in this the complexity of what goes into + making up this one <span class="QUOTE">"page"</span>. There are + eight different domains involved here, with thirty two separate + URLs requested in all, making up all manner of images, Shockwave + Flash, JavaScript, CSS stylesheets, scripts, and other related + content. Some of this content is obviously <span class= + "QUOTE">"good"</span> or <span class="QUOTE">"bad"</span>, but not + all. Many of the more questionable looking requests, are going to + outside domains that seem to be identifying themselves with + suspicious looking names, making our job a little easier. <span + class="APPLICATION">Privoxy</span> has <span class= + "QUOTE">"crunched"</span> (meaning caught and BLOCKED) quite a few + items in this example, but perhaps missed a few as well. + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +Request: www.example.com/ Request: www.example.com/favicon.ico Request: img.example.com/main.css Request: img.example.com/sr.js @@ -243,8 +171,8 @@ Request: img.example.com/pb.png Request: www.google-analytics.com/urchin.js crunch! (Blocked) Request: www.advertising-department.com/ats/switch.ps.php?26856 crunch! (Blocked) Request: img.example.com/p.gif -Request: www.popuptraffic.com/assign.php?l=example&mode=behind crunch! (Blocked) -Request: www.popuptraffic.com/scripts/popup.php?hid=5c3cf&tmpl=PBa.tmpl crunch! (Blocked) +Request: www.popuptraffic.com/assign.php?l=example&mode=behind crunch! (Blocked) +Request: www.popuptraffic.com/scripts/popup.php?hid=5c3cf&tmpl=PBa.tmpl crunch! (Blocked) Request: www.popuptraffic.com/assign.php?l=example crunch! (Blocked) Request: www.lik-sang.com/Banners/best_sellers/best_sellers.css Request: www.adtrak.net/adx.js crunch! (Blocked) @@ -253,1024 +181,650 @@ Request: img.example.com/example.jpg Request: img.example.com/mt.png Request: img.example.com/mm.png Request: img.example.com/mb.png -Request: www.popuptraffic.com/scripts/popup.php?hid=a71b91fa5&tmpl=Ua.tmp crunch! (Blocked) +Request: www.popuptraffic.com/scripts/popup.php?hid=a71b91fa5&tmpl=Ua.tmp crunch! (Blocked) Request: www.example.com/tracker.js Request: www.lik-sang.com/Banners/best_sellers/lsi_head.gif -Request: www.adtrak.net/adjs.php?n=020548130&what=zone:61 crunch! (Blocked) -Request: www.adtrak.net/adjs.php?n=463594413&what=zone:58&source=Ua crunch! (Blocked) +Request: www.adtrak.net/adjs.php?n=020548130&what=zone:61 crunch! (Blocked) +Request: www.adtrak.net/adjs.php?n=463594413&what=zone:58&source=Ua crunch! (Blocked) Request: www.lik-sang.com/Banners/best_sellers/bottomani.swf -Request: mmm.elitemediagroup.net/install.php?allowpop=no&popupmincook=0&allowsp2=1 crunch! (Blocked) -Request: www.example.com/tracker.js?screen=1400x1050&win=962x693 -Request: www.adtrak.net/adlog.php?bannerid=1309&clientid=439&zoneid=61 crunch! (Blocked) -Request: 66.70.21.80/scripts/click.php?hid=5c3cf599a9efd0320d26&si +Request: mmm.elitemediagroup.net/install.php?allowpop=no&popupmincook=0&allowsp2=1 crunch! (Blocked) +Request: www.example.com/tracker.js?screen=1400x1050&win=962x693 +Request: www.adtrak.net/adlog.php?bannerid=1309&clientid=439&zoneid=61 crunch! (Blocked) +Request: 66.70.21.80/scripts/click.php?hid=5c3cf599a9efd0320d26&si Request: 66.70.21.80/img/pixel.gif -Request: www.adtrak.net/adlog.php?bannerid=1309&clientid=439&zoneid=58&source=Ua&block=86400 crunch! (Blocked) -Request: 66.70.21.80/scripts/click.php?hid=a71b9f6504b0c5681fa5&si=Ua</PRE -></TD -></TR -></TABLE -></P -><P -> Despite 12 out of 32 requests being blocked, the page looked, and seemed to - behave perfectly <SPAN -CLASS="QUOTE" ->"normal"</SPAN -> (minus some ads, of course).</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="BADSITE" ->5.4. One of my favorite sites does not work with Privoxy. -What can I do?</A -></H3 -><P -> First verify that it is indeed a <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> problem, - by toggling off <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> through <A -HREF="http://config.privoxy.org/toggle" -TARGET="_top" ->http://config.privoxy.org/toggle</A -> - (the toggle feature may need to be enabled in the main - <TT -CLASS="FILENAME" ->config</TT ->), - and then shift-reloading the problem page (i.e. holding down the shift key - while clicking reload. Alternatively, flush your browser's disk and memory - caches).</P -><P -> If the problem went away, we know we have a configuration related problem. - Now go to <A -HREF="http://config.privoxy.org/show-url-info" -TARGET="_top" ->http://config.privoxy.org/show-url-info</A -> - and paste the full URL of the page in question into the prompt. See which - actions are being applied to the URL, and which matches in which actions - files are responsible for that. It might be helpful also to look at your logs - for this site too, to see what else might be happening (note: logging may need - to be enabled in the main config file). Many sites are - complex and require a number of related pages to help present their content. - Look at what else might be used by the page in question, and what of that - might be <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->required</I -></SPAN ->. - Now, armed with this information, go to - <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A -> - and select the appropriate actions files for editing. </P -><P -> You can now either look for a section which disables the actions that - you suspect to cause the problem and add a pattern for your site there, - or make up a completely new section for your site. In any case, the recommended - way is to disable only the prime suspect, reload the problem page, and only - if the problem persists, disable more and more actions until you have - identified the culprit. You may or may not want to turn the other actions - on again. Remember to flush your browser's caches in between any such changes!</P -><P -> Alternately, if you are comfortable with a text editor, you can accomplish - the same thing by editing the appropriate actions file. Probably the easiest - way to deal with such problems when editing by hand is to add your - site to a <TT -CLASS="LITERAL" ->{ fragile }</TT -> section in <TT -CLASS="FILENAME" ->user.action</TT ->, - which is an alias that turns off most <SPAN -CLASS="QUOTE" ->"dangerous"</SPAN -> - actions, but is also likely to turn off more actions then needed, and thus lower - your privacy and protection more than necessary, </P -><P -> Troubleshooting actions is discussed in more detail in the <A -HREF="../user-manual/appendix.html#ACTIONSANAT" -TARGET="_top" ->User Manual appendix, - Troubleshooting: the Anatomy of an Action</A ->. - There is also an <A -HREF="../user-manual/actions-file.html#ACT-EXAMPLES" -TARGET="_top" ->actions tutorial</A -> - with general configuration information and examples.</P -><P -> As a last resort, you can always see if your browser has a setting that will - bypass the proxy setting for selective sites. Modern browsers can do this.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DUN" ->5.5. After installing Privoxy, I have to log in -every time I start IE. What gives?</A -></H3 -><P -> This is a quirk that effects the installation of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, in conjunction with Internet Explorer and - Internet Connection Sharing on Windows 2000 and Windows XP. The symptoms may - appear to be corrupted or invalid DUN settings, or passwords.</P -><P -> When setting up an NT based Windows system with - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> you may find that things do not seem to be - doing what you expect. When you set your system up you will probably have set - up Internet Connection Sharing (ICS) with Dial up Networking (DUN) when - logged in with administrator privileges. You will probably have made this DUN - connection available to other accounts that you may have set-up on your - system. E.g. Mum or Dad sets up the system and makes accounts suitably - configured for the kids.</P -><P -> When setting up <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in this environment you - will have to alter the proxy set-up of Internet Explorer (IE) for the - specific DUN connection on which you wish to use - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. When you do this the ICS DUN set-up - becomes user specific. In this instance you will see no difference if you - change the DUN connection under the account used to set-up the connection. - However when you do this from another user you will notice that the DUN - connection changes to make available to "Me only". You will also find that - you have to store the password under each different user!</P -><P -> The reason for this is that each user's set-up for IE is user specific. Each - set-up DUN connection and each LAN connection in IE store the settings for - each user individually. As such this enforces individual configurations - rather than common ones. Hence the first time you use a DUN connection after - re-booting your system it may not perform as you expect, and prompt you for - the password. Just set and save the password again and all should be OK.</P -><P ->[Thanks to Ray Griffith for this submission.]</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="FTP" ->5.6. I cannot connect to any FTP sites. Privoxy - is blocking me.</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> cannot act as a proxy for FTP traffic, - so do not configure your browser to use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - as an FTP proxy. The same is true for <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->any protocol other than HTTP - or HTTPS (SSL)</I -></SPAN ->. - </P -><P -> Most browsers understand FTP as well as HTTP. If you connect to a site, with - a URL like <TT -CLASS="LITERAL" ->ftp://ftp.example.com</TT ->, your browser is making - an FTP connection, and not a HTTP connection. So while your browser may - speak FTP, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> does not, and cannot proxy - such traffic. - </P -><P -> To complicate matters, some systems may have a generic <SPAN -CLASS="QUOTE" ->"proxy"</SPAN -> - setting, which will enable various protocols, including - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->both</I -></SPAN -> HTTP and FTP proxying! So it is possible to - accidentally enable FTP proxying in these cases. And of course, if this - happens, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will indeed cause problems since - it does not know FTP. Newer version will give a sane error - message if a FTP connection is attempted. Just disable the FTP setting - and all will be well again. - </P -><P -> Will <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> ever proxy FTP traffic? Unlikely. - There just is not much reason, and the work to make this happen is more than - it may seem. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="MACOSXIE" ->5.7. In Mac OS X, I can't configure Microsoft Internet Explorer to use - Privoxy as the HTTP proxy.</A -></H3 -><P -> Microsoft Internet Explorer (in versions like 5.1) respects system-wide - network settings. In order to change the HTTP proxy, open System - Preferences, and click on the Network icon. In the settings pane that - comes up, click on the Proxies tab. Ensure the "Web Proxy (HTTP)" checkbox - is checked and enter <TT -CLASS="LITERAL" ->127.0.0.1</TT -> in the entry field. - Enter <TT -CLASS="LITERAL" ->8118</TT -> in the Port field. The next time you start - IE, it should reflect these values. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="MACOSXUNINSTALL" ->5.8. In Mac OS X, I dragged the Privoxy folder to the trash in order to - uninstall it. Now the finder tells me I don't have sufficient privileges to - empty the trash.</A -></H3 -><P -> Note: This ONLY applies to privoxy 3.0.6 and earlier. - </P -><P -> Just dragging the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> folder to the trash is - not enough to delete it. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> supplies an - <SPAN -CLASS="APPLICATION" ->uninstall.command</SPAN -> file that takes care of - these details. Open the trash, drag the <SPAN -CLASS="APPLICATION" ->uninstall.command</SPAN -> - file out of the trash and double-click on it. You will be prompted for - confirmation and the administration password. - </P -><P -> The trash may still appear full after this command; emptying the trash - from the desktop should make it appear empty again. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="MACOSXIMAGES" ->5.9. In Mac OS X Panther (10.3), images often fail to load and/or I - experience random delays in page loading. I'm using - <TT -CLASS="LITERAL" ->localhost</TT -> as my browser's proxy setting.</A -></H3 -><P -> We believe this is due to an IPv6-related bug in Mac OS X, but don't fully - understand the issue yet. In any case, changing the proxy setting to - <TT -CLASS="LITERAL" ->127.0.0.1</TT -> instead of <TT -CLASS="LITERAL" ->localhost</TT -> - works around the problem. - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="BLANKPAGE" ->5.10. I get a completely blank page at one site. <SPAN -CLASS="QUOTE" ->"View Source"</SPAN -> - shows only: <SPAN -CLASS="MARKUP" -><html><body></body></html></SPAN ->. Without - Privoxy the page loads fine.</A -></H3 -><P -> Chances are that the site suffers from a bug in - <A -HREF="http://www.php.net/" -TARGET="_top" -><SPAN -CLASS="APPLICATION" ->PHP</SPAN -></A ->, - which results in empty pages being sent if the client explicitly requests - an uncompressed page, like <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> does. - This bug has been fixed in PHP 4.2.3. - </P -><P -> To find out if this is in fact the source of the problem, try adding - the site to a <TT -CLASS="LITERAL" ->-prevent-compression</TT -> section in - <TT -CLASS="FILENAME" ->user.action</TT ->: - </P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # Make exceptions for ill-behaved sites: - # - {-prevent-compression} - .example.com</PRE -></TD -></TR -></TABLE -><P -> If that works, you may also want to report the problem to the - site's webmasters, telling them to use zlib.output_compression - instead of ob_gzhandler in their PHP applications (workaround) - or upgrade to PHP 4.2.3 or later (fix). - </P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="NOHOSTNAME" ->5.11. My logs show many <SPAN -CLASS="QUOTE" ->"Unable to get my own hostname"</SPAN -> lines. -Why?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> tries to get the hostname of the system - its running on from the IP address of the system interface it is bound to - (from the <TT -CLASS="FILENAME" ->config</TT -> file - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->listen-address</I -></SPAN -> setting). If the system cannot supply - this information, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> logs this condition. </P -><P -> Typically, this would be considered a minor system configuration error. It is - not a fatal error to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> however, but may - result in a much slower response from <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on - some platforms due to DNS timeouts.</P -><P -> This can be caused by a problem with the local <TT -CLASS="FILENAME" ->hosts</TT -> - file. If this file has been changed from the original, try reverting it to - see if that helps. Make sure whatever name(s) are used for the local system, - that they resolve both ways.</P -><P -> You should also be able to work around the problem with the - <A -HREF="../user-manual/config.html#HOSTNAME" -TARGET="_top" ->hostname option</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="INUSE" ->5.12. When I try to launch Privoxy, I get an -error message <SPAN -CLASS="QUOTE" ->"port 8118 is already in use"</SPAN -> (or similar wording). -Why?</A -></H3 -><P -> Port 8118 is <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> default TCP - <SPAN -CLASS="QUOTE" ->"listening"</SPAN -> port. Typically this message would mean that there - is already one instance of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> running, and - your system is actually trying to start a second - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on the same port, which will not work. - (You can have multiple instances but they must be assigned different ports.) - How and why this might happen varies from platform to platform, but you need - to check your installation and start-up procedures.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DEMORONIZER" ->5.13. Pages with UTF-8 fonts are garbled.</A -></H3 -><P -> This is caused by the <SPAN -CLASS="QUOTE" ->"demoronizer"</SPAN -> filter. You should either - upgrade <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, or at least upgrade to the most - recent <TT -CLASS="FILENAME" ->default.action</TT -> file available from <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->SourceForge</A ->. - Or you can simply disable the demoronizer filter.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DEMORONIZER2" ->5.14. Why are binary files (such as images) corrupted when Privoxy - is used?</A -></H3 -><P -> This may also be caused by the <SPAN -CLASS="QUOTE" ->"demoronizer"</SPAN -> filter, - in conjunction with a web server that is misreporting the content type. Binary - files are exempted from <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> filtering - (unless the web server by mistake says the file is something else). Either - upgrade <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, or go to the most recent - <TT -CLASS="FILENAME" ->default.action</TT -> file available from <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->SourceForge</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DEMORONIZER3" ->5.15. What is the <SPAN -CLASS="QUOTE" ->"demoronizer"</SPAN -> and why is it there?</A -></H3 -><P -> The original demoronizer was a Perl script that cleaned up HTML pages which - were created with certain Microsoft products. MS has used proprietary extensions - to standardized font encodings (ISO 8859-1), which has caused problems for pages - that are viewed with non-Microsoft products (and are expecting to see a - standard set of fonts). The demoronizer corrected these errors so the pages - displayed correctly. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> borrowed from this - script, introducing a filter based on the original demoronizer, which in turn could - correct these errors on the fly. </P -><P -> But this is only needed in some situations, and will cause serious problems in some - other situations.</P -><P -> If you are using Microsoft products, you do not need it. If you need to view - pages with UTF-8 characters (such as Cyrillic or Chinese), then it will - cause corruption of the fonts, and thus <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->should not be on</I -></SPAN ->.</P -><P -> On the other hand, if you use non-Microsoft products, and you occasionally - notice weird characters on pages, you might want to try it.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="WINDOWOPEN" ->5.16. Why do I keep seeing <SPAN -CLASS="QUOTE" ->"PrivoxyWindowOpen()"</SPAN -> in raw source code?</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is attempting to disable malicious - <A -HREF="http://en.wikipedia.org/wiki/Javascript" -TARGET="_top" ->Javascript</A -> - in this case, with the <TT -CLASS="LITERAL" ->unsolicited-popups</TT -> - filter. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> cannot tell very well - <SPAN -CLASS="QUOTE" ->"good"</SPAN -> code snippets from <SPAN -CLASS="QUOTE" ->"bad"</SPAN -> code snippets.</P -><P -> If you see this in HTML source, and the page displays without problems, then - this is good, and likely some pop-up window was disabled. If you see this - where it is causing a problem, such as a downloaded program source code file, - then you should set an exception for this site or page such that the - integrity of the page stays in tact by disabling all filtering.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="DNSERRORS" ->5.17. I am getting too many DNS errors like <SPAN -CLASS="QUOTE" ->"404 No Such Domain"</SPAN ->. Why - can't Privoxy do this better?</A -></H3 -><P -> There are potentially several factors here. First of all, the DNS resolution - is done by the underlying operating system -- not - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> itself. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - merely initiates the process and hands it off, and then later reports - whatever the outcome was and tries to give a coherent message if there seems - to be a problem. In some cases, this might otherwise be mitigated by the - browser itself which might try some work-arounds and alternate approaches (e.g - adding <SPAN -CLASS="QUOTE" ->"www."</SPAN -> to the URL).</P -><P -> In other cases, if <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is being chained - with another proxy, this could complicate the issue, and cause undue - delays and timeouts. In the case of a <SPAN -CLASS="QUOTE" ->"socks4a"</SPAN -> proxy, the socks - server handles all the DNS. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> would just be - the <SPAN -CLASS="QUOTE" ->"messenger"</SPAN -> which is reporting whatever problem occurred - downstream, and not the root cause of the error.</P -><P -> In any case, versions newer than 3.0.3 include various improvements to help - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> better handle these cases.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="ALLCPU" ->5.18. At one site Privoxy just hangs, and starts taking - all CPU. Why is this?</A -></H3 -><P -> This is probably a manifestation of the <SPAN -CLASS="QUOTE" ->"100% cpu"</SPAN -> problem that - occurs on pages containing many (thousands upon thousands) of blank lines. The blank lines - are in the raw HTML source of the page, and the browser just ignores them. But the - pattern matching in <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> page filtering - mechanism is trying to match against absurdly long strings and this becomes - very CPU-intensive, taking a long, long time to complete.</P -><P -> Until a better solution comes along, disable filtering on these pages, - particularly the <TT -CLASS="LITERAL" ->js-annoyances</TT -> and - <TT -CLASS="LITERAL" ->unsolicited-popups</TT -> filters. If you run into this problem - with a recent <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version, please send a problem report.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="SLOWCRAWL" ->5.19. I just installed Privoxy, and all my -browsing has slowed to a crawl. What gives?</A -></H3 -><P -> This should not happen, and for the overwhelming number of users world-wide, - it does not happen. I would suspect some inadvertent interaction of software - components such as anti-virus software, spyware protectors, personal - firewalls or similar components. Try disabling (or uninstalling) these one - at a time and see if that helps. Either way, if you are using a - recent <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version, please report the problem.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="PREVENTCOMP" ->5.20. Why do my filters work on some sites but not on others?</A -></H3 -><P -> It's probably due to compression. It is a common practice for web servers to - send their content <SPAN -CLASS="QUOTE" ->"compressed"</SPAN -> in order to speed things up, and - then let the browser <SPAN -CLASS="QUOTE" ->"uncompress"</SPAN -> them. When compiled with zlib support - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can decompress content before filtering, otherwise you may want to enable -<A -HREF="../user-manual/actions-file.html#PREVENT-COMPRESSION" -TARGET="_top" ->prevent-compression</A ->.</P -><P -> As of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.9, zlib support is enabled in the default builds.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="SSL-WARNINGS" ->5.21. On some HTTPS sites my browser warns me about unauthenticated content, - the URL bar doesn't get highlighted and the lock symbol appears to be broken. - What's going on?</A -></H3 -><P -> Probably the browser is requesting ads through HTTPS and <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is blocking the requests. Privoxy's error messages are delivered - unencrypted and while it's obvious for the browser that the HTTPS - request is already blocked by the proxy, some warn about unauthenticated - content anyway.</P -><P -> To work around the problem you can redirect those requests to an invalid - local address instead of blocking them. While the redirects aren't - encrypted either, many browsers don't care. They simply follow the - redirect, fail to reach a server and display an error message instead - of the ad.</P -><P -> To do that, enable logging to figure out which requests get blocked by - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and add the hosts (no path patterns) to a section like this:</P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{+redirect{http://127.0.0.1:0/} -block -limit-connect} -.ivwbox.de:443/</PRE -></TD -></TR -></TABLE -></P -><P -> Additionally you have to configure your browser to contact - <SPAN -CLASS="QUOTE" ->"127.0.0.1:0"</SPAN -> directly (instead of through <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->).</P -><P -> To add a proxy exception in <SPAN -CLASS="APPLICATION" ->Mozilla Firefox</SPAN -> - open the <SPAN -CLASS="QUOTE" ->"Preferences"</SPAN ->, click the <SPAN -CLASS="QUOTE" ->"Settings"</SPAN -> - button located on the <SPAN -CLASS="QUOTE" ->"Network"</SPAN -> tab in the <SPAN -CLASS="QUOTE" ->"Advanced"</SPAN -> - section, and add <SPAN -CLASS="QUOTE" ->"127.0.0.1:0"</SPAN -> in the <SPAN -CLASS="QUOTE" ->"No Proxy for:"</SPAN -> - field.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="SE-LINUX" ->5.22. I get selinux error messages. How can I fix this?</A -></H3 -><P -> Please report the problem to the creator of your selinux policies.</P -><P -> The problem is that some selinux policy writers aren't familiar - with the application they are trying to <SPAN -CLASS="QUOTE" ->"secure"</SPAN -> and - thus create policies that make no sense.</P -><P -> In <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> case the problem usually - is that the policy only allows outgoing connections for certain - destination ports (e.g. 80 and 443). While this may cover the - standard ports, websites occasionally use other ports as well. - This isn't a security problem and therefore <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - default configuration doesn't block these requests.</P -><P -> If you really want to block these ports (and don't be able - to load websites that don't use standard ports), you should - configure Privoxy to block these ports as well, so it doesn't - trigger the selinux warnings.</P -></DIV -><DIV -CLASS="SECT2" -><H3 -CLASS="SECT2" -><A -NAME="GENTOO-RICERS" ->5.23. I compiled <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with Gentoo's portage and it appears to be very slow. Why?</A -></H3 -><P -> Probably you unintentionally compiled <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> without threading support - in which case requests have to be serialized and only one can be served - at the same time.</P -><P -> Check your <SPAN -CLASS="QUOTE" ->"USE"</SPAN -> flags and make sure they include - <SPAN -CLASS="QUOTE" ->"threads"</SPAN ->. If they don't, add the flag and rebuild <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->.</P -><P -> If you compiled <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with threading support (on POSIX-based systems), - the <SPAN -CLASS="QUOTE" ->"Conditional #defines"</SPAN -> section on <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A -> - will list <SPAN -CLASS="QUOTE" ->"FEATURE_PTHREAD"</SPAN -> as <SPAN -CLASS="QUOTE" ->"enabled"</SPAN ->. </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="misc.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="contact.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Miscellaneous</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Contacting the developers, Bug Reporting and Feature Requests</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +Request: www.adtrak.net/adlog.php?bannerid=1309&clientid=439&zoneid=58&source=Ua&block=86400 crunch! (Blocked) +Request: 66.70.21.80/scripts/click.php?hid=a71b9f6504b0c5681fa5&si=Ua +</pre> + </td> + </tr> + </table> + + <p> + Despite 12 out of 32 requests being blocked, the page looked, and + seemed to behave perfectly <span class="QUOTE">"normal"</span> + (minus some ads, of course). + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="BADSITE">5.4. One of my favorite sites does not work with + Privoxy. What can I do?</a> + </h3> + <p> + First verify that it is indeed a <span class= + "APPLICATION">Privoxy</span> problem, by toggling off <span class= + "APPLICATION">Privoxy</span> through <a href= + "http://config.privoxy.org/toggle" target= + "_top">http://config.privoxy.org/toggle</a> (the toggle feature may + need to be enabled in the main <tt class="FILENAME">config</tt>), + and then shift-reloading the problem page (i.e. holding down the + shift key while clicking reload. Alternatively, flush your + browser's disk and memory caches). + </p> + <p> + If the problem went away, we know we have a configuration related + problem. Now go to <a href= + "http://config.privoxy.org/show-url-info" target= + "_top">http://config.privoxy.org/show-url-info</a> and paste the + full URL of the page in question into the prompt. See which actions + are being applied to the URL, and which matches in which actions + files are responsible for that. It might be helpful also to look at + your logs for this site too, to see what else might be happening + (note: logging may need to be enabled in the main config file). + Many sites are complex and require a number of related pages to + help present their content. Look at what else might be used by the + page in question, and what of that might be <span class= + "emphasis"><i class="EMPHASIS">required</i></span>. Now, armed with + this information, go to <a href= + "http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a> and select the + appropriate actions files for editing. + </p> + <p> + You can now either look for a section which disables the actions + that you suspect to cause the problem and add a pattern for your + site there, or make up a completely new section for your site. In + any case, the recommended way is to disable only the prime suspect, + reload the problem page, and only if the problem persists, disable + more and more actions until you have identified the culprit. You + may or may not want to turn the other actions on again. Remember to + flush your browser's caches in between any such changes! + </p> + <p> + Alternately, if you are comfortable with a text editor, you can + accomplish the same thing by editing the appropriate actions file. + Probably the easiest way to deal with such problems when editing by + hand is to add your site to a <tt class="LITERAL">{ fragile }</tt> + section in <tt class="FILENAME">user.action</tt>, which is an alias + that turns off most <span class="QUOTE">"dangerous"</span> actions, + but is also likely to turn off more actions then needed, and thus + lower your privacy and protection more than necessary, + </p> + <p> + Troubleshooting actions is discussed in more detail in the <a href= + "../user-manual/appendix.html#ACTIONSANAT" target="_top">User + Manual appendix, Troubleshooting: the Anatomy of an Action</a>. + There is also an <a href= + "../user-manual/actions-file.html#ACT-EXAMPLES" target= + "_top">actions tutorial</a> with general configuration information + and examples. + </p> + <p> + As a last resort, you can always see if your browser has a setting + that will bypass the proxy setting for selective sites. Modern + browsers can do this. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DUN">5.5. After installing Privoxy, I have to log in every + time I start IE. What gives?</a> + </h3> + <p> + This is a quirk that effects the installation of <span class= + "APPLICATION">Privoxy</span>, in conjunction with Internet Explorer + and Internet Connection Sharing on Windows 2000 and Windows XP. The + symptoms may appear to be corrupted or invalid DUN settings, or + passwords. + </p> + <p> + When setting up an NT based Windows system with <span class= + "APPLICATION">Privoxy</span> you may find that things do not seem + to be doing what you expect. When you set your system up you will + probably have set up Internet Connection Sharing (ICS) with Dial up + Networking (DUN) when logged in with administrator privileges. You + will probably have made this DUN connection available to other + accounts that you may have set-up on your system. E.g. Mum or Dad + sets up the system and makes accounts suitably configured for the + kids. + </p> + <p> + When setting up <span class="APPLICATION">Privoxy</span> in this + environment you will have to alter the proxy set-up of Internet + Explorer (IE) for the specific DUN connection on which you wish to + use <span class="APPLICATION">Privoxy</span>. When you do this the + ICS DUN set-up becomes user specific. In this instance you will see + no difference if you change the DUN connection under the account + used to set-up the connection. However when you do this from + another user you will notice that the DUN connection changes to + make available to "Me only". You will also find that you have to + store the password under each different user! + </p> + <p> + The reason for this is that each user's set-up for IE is user + specific. Each set-up DUN connection and each LAN connection in IE + store the settings for each user individually. As such this + enforces individual configurations rather than common ones. Hence + the first time you use a DUN connection after re-booting your + system it may not perform as you expect, and prompt you for the + password. Just set and save the password again and all should be + OK. + </p> + <p> + [Thanks to Ray Griffith for this submission.] + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="FTP">5.6. I cannot connect to any FTP sites. Privoxy is + blocking me.</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> cannot act as a proxy for + FTP traffic, so do not configure your browser to use <span class= + "APPLICATION">Privoxy</span> as an FTP proxy. The same is true for + <span class="emphasis"><i class="EMPHASIS">any protocol other than + HTTP or HTTPS (SSL)</i></span>. + </p> + <p> + Most browsers understand FTP as well as HTTP. If you connect to a + site, with a URL like <tt class= + "LITERAL">ftp://ftp.example.com</tt>, your browser is making an FTP + connection, and not a HTTP connection. So while your browser may + speak FTP, <span class="APPLICATION">Privoxy</span> does not, and + cannot proxy such traffic. + </p> + <p> + To complicate matters, some systems may have a generic <span class= + "QUOTE">"proxy"</span> setting, which will enable various + protocols, including <span class="emphasis"><i class= + "EMPHASIS">both</i></span> HTTP and FTP proxying! So it is possible + to accidentally enable FTP proxying in these cases. And of course, + if this happens, <span class="APPLICATION">Privoxy</span> will + indeed cause problems since it does not know FTP. Newer version + will give a sane error message if a FTP connection is attempted. + Just disable the FTP setting and all will be well again. + </p> + <p> + Will <span class="APPLICATION">Privoxy</span> ever proxy FTP + traffic? Unlikely. There just is not much reason, and the work to + make this happen is more than it may seem. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="MACOSXIE">5.7. In Mac OS X, I can't configure Microsoft + Internet Explorer to use Privoxy as the HTTP proxy.</a> + </h3> + <p> + Microsoft Internet Explorer (in versions like 5.1) respects + system-wide network settings. In order to change the HTTP proxy, + open System Preferences, and click on the Network icon. In the + settings pane that comes up, click on the Proxies tab. Ensure the + "Web Proxy (HTTP)" checkbox is checked and enter <tt class= + "LITERAL">127.0.0.1</tt> in the entry field. Enter <tt class= + "LITERAL">8118</tt> in the Port field. The next time you start IE, + it should reflect these values. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="MACOSXUNINSTALL">5.8. In Mac OS X, I dragged the Privoxy + folder to the trash in order to uninstall it. Now the finder tells + me I don't have sufficient privileges to empty the trash.</a> + </h3> + <p> + Note: This ONLY applies to privoxy 3.0.6 and earlier. + </p> + <p> + Just dragging the <span class="APPLICATION">Privoxy</span> folder + to the trash is not enough to delete it. <span class= + "APPLICATION">Privoxy</span> supplies an <span class= + "APPLICATION">uninstall.command</span> file that takes care of + these details. Open the trash, drag the <span class= + "APPLICATION">uninstall.command</span> file out of the trash and + double-click on it. You will be prompted for confirmation and the + administration password. + </p> + <p> + The trash may still appear full after this command; emptying the + trash from the desktop should make it appear empty again. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="MACOSXIMAGES">5.9. In Mac OS X Panther (10.3), images + often fail to load and/or I experience random delays in page + loading. I'm using <tt class="LITERAL">localhost</tt> as my + browser's proxy setting.</a> + </h3> + <p> + We believe this is due to an IPv6-related bug in Mac OS X, but + don't fully understand the issue yet. In any case, changing the + proxy setting to <tt class="LITERAL">127.0.0.1</tt> instead of <tt + class="LITERAL">localhost</tt> works around the problem. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="BLANKPAGE">5.10. I get a completely blank page at one + site. <span class="QUOTE">"View Source"</span> shows only: <span + class= + "MARKUP"><html><body></body></html></span>. + Without Privoxy the page loads fine.</a> + </h3> + <p> + Chances are that the site suffers from a bug in <a href= + "http://www.php.net/" target="_top"><span class= + "APPLICATION">PHP</span></a>, which results in empty pages being + sent if the client explicitly requests an uncompressed page, like + <span class="APPLICATION">Privoxy</span> does. This bug has been + fixed in PHP 4.2.3. + </p> + <p> + To find out if this is in fact the source of the problem, try + adding the site to a <tt class="LITERAL">-prevent-compression</tt> + section in <tt class="FILENAME">user.action</tt>: + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # Make exceptions for ill-behaved sites: + # + {-prevent-compression} + .example.com +</pre> + </td> + </tr> + </table> + <p> + If that works, you may also want to report the problem to the + site's webmasters, telling them to use zlib.output_compression + instead of ob_gzhandler in their PHP applications (workaround) or + upgrade to PHP 4.2.3 or later (fix). + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="NOHOSTNAME">5.11. My logs show many <span class= + "QUOTE">"Unable to get my own hostname"</span> lines. Why?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> tries to get the hostname + of the system its running on from the IP address of the system + interface it is bound to (from the <tt class="FILENAME">config</tt> + file <span class="emphasis"><i class= + "EMPHASIS">listen-address</i></span> setting). If the system cannot + supply this information, <span class="APPLICATION">Privoxy</span> + logs this condition. + </p> + <p> + Typically, this would be considered a minor system configuration + error. It is not a fatal error to <span class= + "APPLICATION">Privoxy</span> however, but may result in a much + slower response from <span class="APPLICATION">Privoxy</span> on + some platforms due to DNS timeouts. + </p> + <p> + This can be caused by a problem with the local <tt class= + "FILENAME">hosts</tt> file. If this file has been changed from the + original, try reverting it to see if that helps. Make sure whatever + name(s) are used for the local system, that they resolve both ways. + </p> + <p> + You should also be able to work around the problem with the <a + href="../user-manual/config.html#HOSTNAME" target="_top">hostname + option</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="INUSE">5.12. When I try to launch Privoxy, I get an error + message <span class="QUOTE">"port 8118 is already in use"</span> + (or similar wording). Why?</a> + </h3> + <p> + Port 8118 is <span class="APPLICATION">Privoxy's</span> default TCP + <span class="QUOTE">"listening"</span> port. Typically this message + would mean that there is already one instance of <span class= + "APPLICATION">Privoxy</span> running, and your system is actually + trying to start a second <span class="APPLICATION">Privoxy</span> + on the same port, which will not work. (You can have multiple + instances but they must be assigned different ports.) How and why + this might happen varies from platform to platform, but you need to + check your installation and start-up procedures. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DEMORONIZER">5.13. Pages with UTF-8 fonts are garbled.</a> + </h3> + <p> + This is caused by the <span class="QUOTE">"demoronizer"</span> + filter. You should either upgrade <span class= + "APPLICATION">Privoxy</span>, or at least upgrade to the most + recent <tt class="FILENAME">default.action</tt> file available from + <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">SourceForge</a>. Or you can simply disable the + demoronizer filter. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DEMORONIZER2">5.14. Why are binary files (such as images) + corrupted when Privoxy is used?</a> + </h3> + <p> + This may also be caused by the <span class= + "QUOTE">"demoronizer"</span> filter, in conjunction with a web + server that is misreporting the content type. Binary files are + exempted from <span class="APPLICATION">Privoxy's</span> filtering + (unless the web server by mistake says the file is something else). + Either upgrade <span class="APPLICATION">Privoxy</span>, or go to + the most recent <tt class="FILENAME">default.action</tt> file + available from <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">SourceForge</a>. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DEMORONIZER3">5.15. What is the <span class= + "QUOTE">"demoronizer"</span> and why is it there?</a> + </h3> + <p> + The original demoronizer was a Perl script that cleaned up HTML + pages which were created with certain Microsoft products. MS has + used proprietary extensions to standardized font encodings (ISO + 8859-1), which has caused problems for pages that are viewed with + non-Microsoft products (and are expecting to see a standard set of + fonts). The demoronizer corrected these errors so the pages + displayed correctly. <span class="APPLICATION">Privoxy</span> + borrowed from this script, introducing a filter based on the + original demoronizer, which in turn could correct these errors on + the fly. + </p> + <p> + But this is only needed in some situations, and will cause serious + problems in some other situations. + </p> + <p> + If you are using Microsoft products, you do not need it. If you + need to view pages with UTF-8 characters (such as Cyrillic or + Chinese), then it will cause corruption of the fonts, and thus + <span class="emphasis"><i class="EMPHASIS">should not be + on</i></span>. + </p> + <p> + On the other hand, if you use non-Microsoft products, and you + occasionally notice weird characters on pages, you might want to + try it. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="WINDOWOPEN">5.16. Why do I keep seeing <span class= + "QUOTE">"PrivoxyWindowOpen()"</span> in raw source code?</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> is attempting to disable + malicious <a href="http://en.wikipedia.org/wiki/Javascript" target= + "_top">Javascript</a> in this case, with the <tt class= + "LITERAL">unsolicited-popups</tt> filter. <span class= + "APPLICATION">Privoxy</span> cannot tell very well <span class= + "QUOTE">"good"</span> code snippets from <span class= + "QUOTE">"bad"</span> code snippets. + </p> + <p> + If you see this in HTML source, and the page displays without + problems, then this is good, and likely some pop-up window was + disabled. If you see this where it is causing a problem, such as a + downloaded program source code file, then you should set an + exception for this site or page such that the integrity of the page + stays in tact by disabling all filtering. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="DNSERRORS">5.17. I am getting too many DNS errors like + <span class="QUOTE">"404 No Such Domain"</span>. Why can't Privoxy + do this better?</a> + </h3> + <p> + There are potentially several factors here. First of all, the DNS + resolution is done by the underlying operating system -- not <span + class="APPLICATION">Privoxy</span> itself. <span class= + "APPLICATION">Privoxy</span> merely initiates the process and hands + it off, and then later reports whatever the outcome was and tries + to give a coherent message if there seems to be a problem. In some + cases, this might otherwise be mitigated by the browser itself + which might try some work-arounds and alternate approaches (e.g + adding <span class="QUOTE">"www."</span> to the URL). + </p> + <p> + In other cases, if <span class="APPLICATION">Privoxy</span> is + being chained with another proxy, this could complicate the issue, + and cause undue delays and timeouts. In the case of a <span class= + "QUOTE">"socks4a"</span> proxy, the socks server handles all the + DNS. <span class="APPLICATION">Privoxy</span> would just be the + <span class="QUOTE">"messenger"</span> which is reporting whatever + problem occurred downstream, and not the root cause of the error. + </p> + <p> + In any case, versions newer than 3.0.3 include various improvements + to help <span class="APPLICATION">Privoxy</span> better handle + these cases. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="ALLCPU">5.18. At one site Privoxy just hangs, and starts + taking all CPU. Why is this?</a> + </h3> + <p> + This is probably a manifestation of the <span class="QUOTE">"100% + cpu"</span> problem that occurs on pages containing many (thousands + upon thousands) of blank lines. The blank lines are in the raw HTML + source of the page, and the browser just ignores them. But the + pattern matching in <span class="APPLICATION">Privoxy's</span> page + filtering mechanism is trying to match against absurdly long + strings and this becomes very CPU-intensive, taking a long, long + time to complete. + </p> + <p> + Until a better solution comes along, disable filtering on these + pages, particularly the <tt class="LITERAL">js-annoyances</tt> and + <tt class="LITERAL">unsolicited-popups</tt> filters. If you run + into this problem with a recent <span class= + "APPLICATION">Privoxy</span> version, please send a problem report. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="SLOWCRAWL">5.19. I just installed Privoxy, and all my + browsing has slowed to a crawl. What gives?</a> + </h3> + <p> + This should not happen, and for the overwhelming number of users + world-wide, it does not happen. I would suspect some inadvertent + interaction of software components such as anti-virus software, + spyware protectors, personal firewalls or similar components. Try + disabling (or uninstalling) these one at a time and see if that + helps. Either way, if you are using a recent <span class= + "APPLICATION">Privoxy</span> version, please report the problem. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="PREVENTCOMP">5.20. Why do my filters work on some sites + but not on others?</a> + </h3> + <p> + It's probably due to compression. It is a common practice for web + servers to send their content <span class= + "QUOTE">"compressed"</span> in order to speed things up, and then + let the browser <span class="QUOTE">"uncompress"</span> them. When + compiled with zlib support <span class="APPLICATION">Privoxy</span> + can decompress content before filtering, otherwise you may want to + enable <a href= + "../user-manual/actions-file.html#PREVENT-COMPRESSION" target= + "_top">prevent-compression</a>. + </p> + <p> + As of <span class="APPLICATION">Privoxy</span> 3.0.9, zlib support + is enabled in the default builds. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="SSL-WARNINGS">5.21. On some HTTPS sites my browser warns + me about unauthenticated content, the URL bar doesn't get + highlighted and the lock symbol appears to be broken. What's going + on?</a> + </h3> + <p> + Probably the browser is requesting ads through HTTPS and <span + class="APPLICATION">Privoxy</span> is blocking the requests. + Privoxy's error messages are delivered unencrypted and while it's + obvious for the browser that the HTTPS request is already blocked + by the proxy, some warn about unauthenticated content anyway. + </p> + <p> + To work around the problem you can redirect those requests to an + invalid local address instead of blocking them. While the redirects + aren't encrypted either, many browsers don't care. They simply + follow the redirect, fail to reach a server and display an error + message instead of the ad. + </p> + <p> + To do that, enable logging to figure out which requests get blocked + by <span class="APPLICATION">Privoxy</span> and add the hosts (no + path patterns) to a section like this: + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{+redirect{http://127.0.0.1:0/} -block -limit-connect} +.ivwbox.de:443/ +</pre> + </td> + </tr> + </table> + + <p> + Additionally you have to configure your browser to contact <span + class="QUOTE">"127.0.0.1:0"</span> directly (instead of through + <span class="APPLICATION">Privoxy</span>). + </p> + <p> + To add a proxy exception in <span class="APPLICATION">Mozilla + Firefox</span> open the <span class="QUOTE">"Preferences"</span>, + click the <span class="QUOTE">"Settings"</span> button located on + the <span class="QUOTE">"Network"</span> tab in the <span class= + "QUOTE">"Advanced"</span> section, and add <span class= + "QUOTE">"127.0.0.1:0"</span> in the <span class="QUOTE">"No Proxy + for:"</span> field. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="SE-LINUX">5.22. I get selinux error messages. How can I + fix this?</a> + </h3> + <p> + Please report the problem to the creator of your selinux policies. + </p> + <p> + The problem is that some selinux policy writers aren't familiar + with the application they are trying to <span class= + "QUOTE">"secure"</span> and thus create policies that make no + sense. + </p> + <p> + In <span class="APPLICATION">Privoxy's</span> case the problem + usually is that the policy only allows outgoing connections for + certain destination ports (e.g. 80 and 443). While this may cover + the standard ports, websites occasionally use other ports as well. + This isn't a security problem and therefore <span class= + "APPLICATION">Privoxy's</span> default configuration doesn't block + these requests. + </p> + <p> + If you really want to block these ports (and don't be able to load + websites that don't use standard ports), you should configure + Privoxy to block these ports as well, so it doesn't trigger the + selinux warnings. + </p> + </div> + <div class="SECT2"> + <h3 class="SECT2"> + <a name="GENTOO-RICERS">5.23. I compiled <span class= + "APPLICATION">Privoxy</span> with Gentoo's portage and it appears + to be very slow. Why?</a> + </h3> + <p> + Probably you unintentionally compiled <span class= + "APPLICATION">Privoxy</span> without threading support in which + case requests have to be serialized and only one can be served at + the same time. + </p> + <p> + Check your <span class="QUOTE">"USE"</span> flags and make sure + they include <span class="QUOTE">"threads"</span>. If they don't, + add the flag and rebuild <span class="APPLICATION">Privoxy</span>. + </p> + <p> + If you compiled <span class="APPLICATION">Privoxy</span> with + threading support (on POSIX-based systems), the <span class= + "QUOTE">"Conditional #defines"</span> section on <a href= + "http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a> will list <span + class="QUOTE">"FEATURE_PTHREAD"</span> as <span class= + "QUOTE">"enabled"</span>. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="misc.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="contact.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Miscellaneous + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Contacting the developers, Bug Reporting and Feature Requests + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/index.html b/doc/webserver/index.html index 1c2be28b..4920dc4e 100644 --- a/doc/webserver/index.html +++ b/doc/webserver/index.html @@ -1,348 +1,234 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy - Home Page</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><META -NAME="KEYWORD" -CONTENT="privoxy"><META -NAME="KEYWORD" -CONTENT="HTTP"><META -NAME="KEYWORD" -CONTENT="proxy"><META -NAME="KEYWORD" -CONTENT="privacy"><META -NAME="KEYWORD" -CONTENT="popups"><META -NAME="KEYWORD" -CONTENT="po-ups"><META -NAME="KEYWORD" -CONTENT="HTML"><META -NAME="KEYWORD" -CONTENT="JavaScript"><META -NAME="KEYWORD" -CONTENT="cleaning"><META -NAME="KEYWORD" -CONTENT="blocking"><META -NAME="KEYWORD" -CONTENT="cleaner"><META -NAME="KEYWORD" -CONTENT="blocker"><META -NAME="KEYWORD" -CONTENT="filter"><META -NAME="KEYWORD" -CONTENT="proxy"><META -NAME="KEYWORD" -CONTENT="junk"><META -NAME="KEYWORD" -CONTENT="ad"><META -NAME="KEYWORD" -CONTENT="advertisement"><META -NAME="KEYWORD" -CONTENT="banner"><META -NAME="KEYWORD" -CONTENT="webbugs"><META -NAME="KEYWORD" -CONTENT="web-bugs"><META -NAME="KEYWORD" -CONTENT="werbung"><META -NAME="KEYWORD" -CONTENT="junkbusters"><META -NAME="KEYWORD" -CONTENT="junkbuster"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<meta name="description" content="Privoxy helps users to protect their privacy."> -<meta name="MSSmartTagsPreventParsing" content="TRUE"></HEAD -><BODY -CLASS="ARTICLE" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="ARTICLE" -><DIV -CLASS="TITLEPAGE" -><H1 -CLASS="TITLE" -><A -NAME="AEN2" ->Privoxy - Home Page</A -></H1 -><DIV -><DIV -CLASS="ABSTRACT" -><P -></P -><A -NAME="AEN28" -></A -><P -> Privoxy is a non-caching web proxy with advanced filtering capabilities - for enhancing privacy, modifying web page data and HTTP headers, controlling - access, and removing ads and other obnoxious Internet junk. Privoxy has a - flexible configuration and can be customized to suit individual needs and tastes. - It has application for both stand-alone systems and multi-user networks.</P -><P -> Privoxy is Free Software and licensed under the GNU GPLv2.</P -><P -> Privoxy is an associated project of Software in the Public Interest (SPI).</P -><P -> Helping hands and donations are welcome: - <P -></P -><UL -><LI -><P -> <A -HREF="http://www.privoxy.org/faq/general.html#PARTICIPATE" -TARGET="_top" ->http://www.privoxy.org/faq/general.html#PARTICIPATE</A -> - </P -></LI -><LI -><P -> <A -HREF="http://www.privoxy.org/faq/general.html#DONATE" -TARGET="_top" ->http://www.privoxy.org/faq/general.html#DONATE</A -> - </P -></LI -></UL -></P -><P -> The most recent release is <A -HREF="announce.txt" -TARGET="_top" ->3.0.18 (UNRELEASED)</A ->. - </P -><P -></P -></DIV -></DIV -><HR></DIV -><DIV -CLASS="SECT1" -><H3 -CLASS="SECT1" -><A -NAME="DOWNLOAD" ->Download</A -></H3 -><P -> <P -></P -><UL -><LI -><P -> <A -HREF="https://sourceforge.net/projects/ijbswa/files/" -TARGET="_top" ->Download recent releases</A -> - </P -></LI -><LI -><P -> <A -HREF="user-manual/quickstart.html" -TARGET="_top" ->Quickstart after installation</A -> - </P -></LI -></UL -></P -></DIV -><DIV -CLASS="SECT1" -><HR><H3 -CLASS="SECT1" -><A -NAME="DOCS" ->Documentation</A -></H3 -><P -> <P -></P -><UL -><LI -><P -> <A -HREF="user-manual/index.html" -TARGET="_top" ->User manual</A -> - </P -></LI -><LI -><P -> <A -HREF="faq/index.html" -TARGET="_top" ->Frequently Asked Questions</A -> - </P -></LI -><LI -><P -> <A -HREF="developer-manual/index.html" -TARGET="_top" ->Developer Manual</A -> - </P -></LI -><LI -><P -> <A -HREF="man-page/privoxy-man-page.html" -TARGET="_top" ->Classic Man Page</A -> - </P -></LI -></UL -></P -></DIV -><DIV -CLASS="SECT1" -><HR><H3 -CLASS="SECT1" -><A -NAME="MOREINFO" ->More information</A -></H3 -><P -> <P -></P -><UL -><LI -><P -> <A -HREF="user-manual/contact.html" -TARGET="_top" ->Support & Service</A -> - </P -></LI -><LI -><P -> <A -HREF="user-manual/copyright.html" -TARGET="_top" ->Copyright, License, History & Authors</A -> - </P -></LI -><LI -><P -> <A -HREF="user-manual/introduction.html#FEATURES" -TARGET="_top" ->List of (new) Features</A -> - </P -></LI -><LI -><P -> <A -HREF="https://sourceforge.net/projects/ijbswa/" -TARGET="_top" ->The project page</A -> - </P -></LI -><LI -><P -> <A -HREF="user-manual/seealso.html" -TARGET="_top" ->Related links</A -> - </P -></LI -><LI -><P -> - - <A -HREF="http://www.privoxy.org/team/index.html" -TARGET="_top" ->Pictures of the Privoxy Team</A -> - </P -></LI -></UL -></P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="AEN90" -></A -></H2 -><P -><DIV -CLASS="INFORMALTABLE" -><P -></P -><A -NAME="AEN93" -></A -><TABLE -BORDER="0" -FRAME="void" -RULES="all" -WIDTH="100%" -CLASS="CALSTABLE" -><COL -WIDTH="100%" -ALIGN="CENTER" -TITLE="C1"><TBODY -><TR -><TD -ALIGN="CENTER" ->Privoxy is developed on:</TD -></TR -><TR -><TD -ALIGN="CENTER" -> <A -HREF="http://sourceforge.net/" -TARGET="_top" -> <IMG -SRC="http://sourceforge.net/sflogo.php?group_id=11118&type=1&dummy=.gif"> - </A -> - </TD -></TR -></TBODY -></TABLE -><P -></P -></DIV -></P -><P -> <SUB -> Copyright © 2001-2010 by Privoxy Developers - </SUB -></P -></DIV -></DIV -></BODY -></HTML -> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy - Home Page + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <meta name="KEYWORD" content="privoxy"> + <meta name="KEYWORD" content="HTTP"> + <meta name="KEYWORD" content="proxy"> + <meta name="KEYWORD" content="privacy"> + <meta name="KEYWORD" content="popups"> + <meta name="KEYWORD" content="po-ups"> + <meta name="KEYWORD" content="HTML"> + <meta name="KEYWORD" content="JavaScript"> + <meta name="KEYWORD" content="cleaning"> + <meta name="KEYWORD" content="blocking"> + <meta name="KEYWORD" content="cleaner"> + <meta name="KEYWORD" content="blocker"> + <meta name="KEYWORD" content="filter"> + <meta name="KEYWORD" content="proxy"> + <meta name="KEYWORD" content="junk"> + <meta name="KEYWORD" content="ad"> + <meta name="KEYWORD" content="advertisement"> + <meta name="KEYWORD" content="banner"> + <meta name="KEYWORD" content="webbugs"> + <meta name="KEYWORD" content="web-bugs"> + <meta name="KEYWORD" content="werbung"> + <meta name="KEYWORD" content="junkbusters"> + <meta name="KEYWORD" content="junkbuster"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <meta name="description" content= + "Privoxy helps users to protect their privacy."> + <meta name="MSSmartTagsPreventParsing" content="TRUE"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + col.c1 {text-align: center} +</style> + </head> + <body class="ARTICLE"> + <div class="ARTICLE"> + <div class="TITLEPAGE"> + <h1 class="TITLE"> + <a name="AEN2">Privoxy - Home Page</a> + </h1> + <div> + <a name="AEN28"></a> + <p> + Privoxy is a non-caching web proxy with advanced filtering + capabilities for enhancing privacy, modifying web page data and + HTTP headers, controlling access, and removing ads and other + obnoxious Internet junk. Privoxy has a flexible configuration and + can be customized to suit individual needs and tastes. It has + application for both stand-alone systems and multi-user networks. + </p> + <p> + Privoxy is Free Software and licensed under the GNU GPLv2. + </p> + <p> + Privoxy is an associated project of Software in the Public + Interest (SPI). + </p> + <p> + Helping hands and donations are welcome: + </p> + <ul> + <li> + <p> + <a href="http://www.privoxy.org/faq/general.html#PARTICIPATE" + target= + "_top">http://www.privoxy.org/faq/general.html#PARTICIPATE</a> + </p> + </li> + <li> + <p> + <a href="http://www.privoxy.org/faq/general.html#DONATE" + target= + "_top">http://www.privoxy.org/faq/general.html#DONATE</a> + </p> + </li> + </ul> + + <p> + The most recent release is <a href="announce.txt" target= + "_top">3.0.18 (UNRELEASED)</a>. + </p> + </div> + <hr> + </div> + <div class="SECT1"> + <h3 class="SECT1"> + <a name="DOWNLOAD">Download</a> + </h3> + <p> + </p> + <ul> + <li> + <p> + <a href="https://sourceforge.net/projects/ijbswa/files/" + target="_top">Download recent releases</a> + </p> + </li> + <li> + <p> + <a href="user-manual/quickstart.html" target="_top">Quickstart + after installation</a> + </p> + </li> + </ul> + </div> + <div class="SECT1"> + <hr> + <h3 class="SECT1"> + <a name="DOCS">Documentation</a> + </h3> + <p> + </p> + <ul> + <li> + <p> + <a href="user-manual/index.html" target="_top">User manual</a> + </p> + </li> + <li> + <p> + <a href="faq/index.html" target="_top">Frequently Asked + Questions</a> + </p> + </li> + <li> + <p> + <a href="developer-manual/index.html" target="_top">Developer + Manual</a> + </p> + </li> + <li> + <p> + <a href="man-page/privoxy-man-page.html" target="_top">Classic + Man Page</a> + </p> + </li> + </ul> + </div> + <div class="SECT1"> + <hr> + <h3 class="SECT1"> + <a name="MOREINFO">More information</a> + </h3> + <p> + </p> + <ul> + <li> + <p> + <a href="user-manual/contact.html" target="_top">Support & + Service</a> + </p> + </li> + <li> + <p> + <a href="user-manual/copyright.html" target="_top">Copyright, + License, History & Authors</a> + </p> + </li> + <li> + <p> + <a href="user-manual/introduction.html#FEATURES" target= + "_top">List of (new) Features</a> + </p> + </li> + <li> + <p> + <a href="https://sourceforge.net/projects/ijbswa/" target= + "_top">The project page</a> + </p> + </li> + <li> + <p> + <a href="user-manual/seealso.html" target="_top">Related + links</a> + </p> + </li> + <li> + <p> + <a href="http://www.privoxy.org/team/index.html" target= + "_top">Pictures of the Privoxy Team</a> + </p> + </li> + </ul> + </div> + <div class="SECT1"> + <hr> + <h2 class="SECT1"> + <a name="AEN90"></a> + </h2> + <div class="INFORMALTABLE"> + <a name="AEN93"></a> + <table border="0" frame="void" rules="all" width="100%" class= + "CALSTABLE"> + <col width="100%" title="C1" class="c1"> + <tbody> + <tr> + <td align="CENTER"> + Privoxy is developed on: + </td> + </tr> + <tr> + <td align="CENTER"> + <a href="http://sourceforge.net/" target="_top"><img src= + "http://sourceforge.net/sflogo.php?group_id=11118&type=1&dummy=.gif"> + </a> + </td> + </tr> + </tbody> + </table> + </div> + + <p> + <sub>Copyright © 2001-2010 by Privoxy Developers</sub> + </p> + </div> + </div> + </body> +</html> + diff --git a/doc/webserver/man-page/privoxy-man-page.html b/doc/webserver/man-page/privoxy-man-page.html index 01a19d4f..1bb72e28 100644 --- a/doc/webserver/man-page/privoxy-man-page.html +++ b/doc/webserver/man-page/privoxy-man-page.html @@ -1,182 +1,226 @@ -<html><head><title>Privoxy Man page</title><link rel="stylesheet" type="text/css" href="../p_web.css"></head><body><H2>NAME</H2> -<PRE> +<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy Man page + </title> + <link rel="stylesheet" type="text/css" href="../p_web.css"> + </head> + <body> + <h2> + NAME + </h2> +<pre> <!-- Manpage converted by man2html 3.0.1 --> -</PRE> -<H2>SYNOPSIS</H2><PRE> - <B>privoxy</B> [<B>--help</B> ] [<B>--version</B> ] [<B>--no-daemon</B> ] [<B>--pidfile</B> <I>pidfile</I> ] - [<B>--user</B> <I>user[.group]</I> ] [<B>--chroot</B> ] [<B>--pre-chroot-nslookup</B> <I>hostname</I> ] - [<I>configfile</I> ] - - - -</PRE> -<H2>OPTIONS</H2><PRE> - <B>Privoxy</B> may be invoked with the following command line options: - - <B>--help</B> Print brief usage info and exit. - - <B>--version</B> - Print version info and exit. - - <B>--no-daemon</B> - Don't become a daemon, i.e. don't fork and become process - group leader, don't detach from controlling tty, and do all log- - ging there. - - <B>--pidfile</B> <I>pidfile</I> - On startup, write the process ID to <I>pidfile</I>. Delete the <I>pidfile</I> - on exit. Failure to create or delete the <I>pidfile</I> is non-fatal. - If no <B>--pidfile</B> option is given, no PID file will be used. - - <B>--user</B> <I>user[.group]</I> - After (optionally) writing the PID file, assume the user ID of - <I>user</I> and the GID of <I>group</I>, or, if the optional <I>group</I> was not - given, the default group of <I>user</I>. Exit if the privileges are not - sufficient to do so. - - <B>--chroot</B> - Before changing to the user ID given in the --user option, - chroot to that user's home directory, i.e. make the kernel pre- - tend to the <B>Privoxy</B> process that the directory tree starts - there. If set up carefully, this can limit the impact of possi- - ble vulnerabilities in <B>Privoxy</B> to the files contained in that - hierarchy. - - <B>--pre-chroot-nslookup</B> <I>hostname</I> - Initialize the resolver library using <I>hostname</I> before - chroot'ing. On some systems this reduces the number of files - that must be copied into the chroot tree. - - If the <I>configfile</I> is not specified on the command line, <B>Privoxy</B> - will look for a file named <I>config</I> in the current directory. If no <I>con-</I> - <I>figfile</I> is found, <B>Privoxy</B> will fail to start. - - -</PRE> -<H2>DESCRIPTION</H2><PRE> - Privoxy is a non-caching web proxy with advanced filtering capabilities - for enhancing privacy, modifying web page data and HTTP headers, con- - trolling access, and removing ads and other obnoxious Internet junk. - Privoxy has a flexible configuration and can be customized to suit - - -</PRE> -<H2>INSTALLATION AND USAGE</H2><PRE> - Browsers can either be individually configured to use <B>Privoxy</B> as a HTTP - proxy (recommended), or <B>Privoxy</B> can be combined with a packet filter to - build an intercepting proxy (see <I>config</I>). The default setting is for +</pre> + <h2> + SYNOPSIS + </h2> +<pre> + <b>privoxy</b> [<b>--help</b> ] [<b>--version</b> ] [<b>--no-daemon</b> ] [<b>--pidfile</b> <i>pidfile</i> ] + [<b>--user</b> <i>user[.group]</i> ] [<b>--chroot</b> ] [<b>--pre-chroot-nslookup</b> <i>hostname</i> ] + [<i>configfile</i> ] + + + +</pre> + <h2> + OPTIONS + </h2> +<pre> + <b>Privoxy</b> may be invoked with the following command line options: + + <b>--help</b> Print brief usage info and exit. + + <b>--version</b> + Print version info and exit. + + <b>--no-daemon</b> + Don't become a daemon, i.e. don't fork and become process + group leader, don't detach from controlling tty, and do all log- + ging there. + + <b>--pidfile</b> <i>pidfile</i> + On startup, write the process ID to <i>pidfile</i>. Delete the <i>pidfile</i> + on exit. Failure to create or delete the <i>pidfile</i> is non-fatal. + If no <b>--pidfile</b> option is given, no PID file will be used. + + <b>--user</b> <i>user[.group]</i> + After (optionally) writing the PID file, assume the user ID of + <i>user</i> and the GID of <i>group</i>, or, if the optional <i>group</i> was not + given, the default group of <i>user</i>. Exit if the privileges are not + sufficient to do so. + + <b>--chroot</b> + Before changing to the user ID given in the --user option, + chroot to that user's home directory, i.e. make the kernel pre- + tend to the <b>Privoxy</b> process that the directory tree starts + there. If set up carefully, this can limit the impact of possi- + ble vulnerabilities in <b>Privoxy</b> to the files contained in that + hierarchy. + + <b>--pre-chroot-nslookup</b> <i>hostname</i> + Initialize the resolver library using <i>hostname</i> before + chroot'ing. On some systems this reduces the number of files + that must be copied into the chroot tree. + + If the <i>configfile</i> is not specified on the command line, <b>Privoxy</b> + will look for a file named <i>config</i> in the current directory. If no <i>con-</i> + <i>figfile</i> is found, <b>Privoxy</b> will fail to start. + + +</pre> + <h2> + DESCRIPTION + </h2> +<pre> + Privoxy is a non-caching web proxy with advanced filtering capabilities + for enhancing privacy, modifying web page data and HTTP headers, con- + trolling access, and removing ads and other obnoxious Internet junk. + Privoxy has a flexible configuration and can be customized to suit + + +</pre> + <h2> + INSTALLATION AND USAGE + </h2> +<pre> + Browsers can either be individually configured to use <b>Privoxy</b> as a HTTP + proxy (recommended), or <b>Privoxy</b> can be combined with a packet filter to + build an intercepting proxy (see <i>config</i>). The default setting is for localhost, on port 8118 (configurable in the main config file). To - set the HTTP proxy in Firefox, go through: <B>Tools</B>; <B>Options</B>; <B>General</B>; - <B>Connection</B> <B>Settings</B>; <B>Manual</B> <B>Proxy</B> <B>Configuration</B>. + set the HTTP proxy in Firefox, go through: <b>Tools</b>; <b>Options</b>; <b>General</b>; + <b>Connection</b> <b>Settings</b>; <b>Manual</b> <b>Proxy</b> <b>Configuration</b>. - For Internet Explorer, go through: <B>Tools</B>; <B>Internet</B> <B>Properties</B>; <B>Connec-</B> - <B>tions</B>; <B>LAN</B> <B>Settings</B>. + For Internet Explorer, go through: <b>Tools</b>; <b>Internet</b> <b>Properties</b>; <b>Connec-</b> + <b>tions</b>; <b>LAN</b> <b>Settings</b>. - The Secure (SSL) Proxy should also be set to the same values, otherwise - https: URLs will not be proxied. Note: <B>Privoxy</B> can only proxy HTTP and - HTTPS traffic. Do not try it with FTP or other protocols. HTTPS - presents some limitations, and not all features will work with HTTPS + The Secure (SSL) Proxy should also be set to the same values, otherwise + https: URLs will not be proxied. Note: <b>Privoxy</b> can only proxy HTTP and + HTTPS traffic. Do not try it with FTP or other protocols. HTTPS + presents some limitations, and not all features will work with HTTPS connections. For other browsers, check the documentation. -</PRE> -<H2>CONFIGURATION</H2><PRE> - <B>Privoxy</B> can be configured with the various configuration files. The - default configuration files are: <I>config</I>, <I>default.filter</I>, <I>default.action</I> - and <I>default.action</I>. <I>user.action</I> should be used for locally defined - exceptions to the default rules in <I>match-all.action</I> and <I>default.action</I>, - and <I>user.filter</I> for locally defined filters. These are well commented. - On Unix and Unix-like systems, these are located in <I>/etc/privoxy/</I> by +</pre> + <h2> + CONFIGURATION + </h2> +<pre> + <b>Privoxy</b> can be configured with the various configuration files. The + default configuration files are: <i>config</i>, <i>default.filter</i>, <i>default.action</i> + and <i>default.action</i>. <i>user.action</i> should be used for locally defined + exceptions to the default rules in <i>match-all.action</i> and <i>default.action</i>, + and <i>user.filter</i> for locally defined filters. These are well commented. + On Unix and Unix-like systems, these are located in <i>/etc/privoxy/</i> by default. - <B>Privoxy</B> uses the concept of <B>actions</B> in order to manipulate the data + <b>Privoxy</b> uses the concept of <b>actions</b> in order to manipulate the data stream between the browser and remote sites. There are various actions - available with specific functions for such things as blocking web - sites, managing cookies, etc. These actions can be invoked individually - or combined, and used against individual URLs, or groups of URLs that + available with specific functions for such things as blocking web + sites, managing cookies, etc. These actions can be invoked individually + or combined, and used against individual URLs, or groups of URLs that can be defined using wildcards and regular expressions. The result is - that the user has greatly enhanced control and freedom. + that the user has greatly enhanced control and freedom. The actions list (ad blocks, etc) can also be configured with your web - browser at http://config.privoxy.org/ (assuming the configuration - allows it). <B>Privoxy's</B> configuration parameters can also be viewed at - the same page. In addition, <B>Privoxy</B> can be toggled on/off. This is an - internal page, and does not require Internet access. - - See the <I>User</I> <I>Manual</I> for a detailed explanation of installation, general - usage, all configuration options, new features and notes on upgrading. - - -</PRE> -<H2>FILES</H2><PRE> - <I>/usr/sbin/privoxy</I> - <I>/etc/privoxy/config</I> - <I>/etc/privoxy/match-all.action</I> - <I>/etc/privoxy/default.action</I> - <I>/etc/privoxy/user.action</I> - <I>/etc/privoxy/default.filter</I> + browser at http://config.privoxy.org/ (assuming the configuration + allows it). <b>Privoxy's</b> configuration parameters can also be viewed at + the same page. In addition, <b>Privoxy</b> can be toggled on/off. This is an + internal page, and does not require Internet access. + + See the <i>User</i> <i>Manual</i> for a detailed explanation of installation, general + usage, all configuration options, new features and notes on upgrading. + + +</pre> + <h2> + FILES + </h2> +<pre> + <i>/usr/sbin/privoxy</i> + <i>/etc/privoxy/config</i> + <i>/etc/privoxy/match-all.action</i> + <i>/etc/privoxy/default.action</i> + <i>/etc/privoxy/user.action</i> + <i>/etc/privoxy/default.filter</i> detect them automatically. -</PRE> -<H2>NOTES</H2><PRE> - This is a UNRELEASED version of <B>Privoxy</B>. Not all features are well +</pre> + <h2> + NOTES + </h2> +<pre> + This is a UNRELEASED version of <b>Privoxy</b>. Not all features are well tested. - Please see the <I>User</I> <I>Manual</I> on how to contact the developers, for fea- - ture requests, reporting problems, and other questions. + Please see the <i>User</i> <i>Manual</i> on how to contact the developers, for fea- + ture requests, reporting problems, and other questions. -</PRE> -<H2>SEE ALSO</H2><PRE> - Other references and sites of interest to <B>Privoxy</B> users: +</pre> + <h2> + SEE ALSO + </h2> +<pre> + Other references and sites of interest to <b>Privoxy</b> users: - http://www.privoxy.org/, the <B>Privoxy</B> Home page. + http://www.privoxy.org/, the <b>Privoxy</b> Home page. - http://www.privoxy.org/faq/, the <B>Privoxy</B> FAQ. + http://www.privoxy.org/faq/, the <b>Privoxy</b> FAQ. - http://www.privoxy.org/developer-manual/, the <B>Privoxy</B> developer manual. + http://www.privoxy.org/developer-manual/, the <b>Privoxy</b> developer manual. - https://sourceforge.net/projects/ijbswa/, the Project Page for <B>Privoxy</B> + https://sourceforge.net/projects/ijbswa/, the Project Page for <b>Privoxy</b> on SourceForge. - http://config.privoxy.org/, the web-based user interface. <B>Privoxy</B> must + http://config.privoxy.org/, the web-based user interface. <b>Privoxy</b> must be running for this to work. Shortcut: http://p.p/ - https://sourceforge.net/tracker/?group_id=11118&atid=460288, to submit + https://sourceforge.net/tracker/?group_id=11118&atid=460288, to submit ``misses'' and other configuration related suggestions to the develop- ers. -</PRE> -<H2>DEVELOPMENT TEAM</H2><PRE> - Fabian Keil, lead developer - David Schmidt, developer - - Hal Burgiss - Mark Miller - Gerry Murphy - Lee Rian - Roland Rosenfeld - - -</PRE> -<H2>COPYRIGHT AND LICENSE</H2><PRE> - <B>COPYRIGHT</B> - Copyright (C) 2001-2011 by Privoxy Developers <ijbswa-develop- +</pre> + <h2> + DEVELOPMENT TEAM + </h2> +<pre> + Fabian Keil, lead developer + David Schmidt, developer + + Hal Burgiss + Mark Miller + Gerry Murphy + Lee Rian + Roland Rosenfeld + + +</pre> + <h2> + COPYRIGHT AND LICENSE + </h2> +<pre> + <b>COPYRIGHT</b> + Copyright (C) 2001-2011 by Privoxy Developers <ijbswa-develop- ers@lists.sourceforge.net> Some source code is based on code Copyright (C) 1997 by Anonymous - Coders and Junkbusters, Inc. and licensed under the <I>GNU</I> <I>General</I> <I>Public</I> - <I>License</I>. + Coders and Junkbusters, Inc. and licensed under the <i>GNU</i> <i>General</i> <i>Public</i> + <i>License</i>. - <B>LICENSE</B> - <B>Privoxy</B> is free software; you can redistribute it and/or modify it - under the terms of the <I>GNU</I> <I>General</I> <I>Public</I> <I>License</I>, version 2, as pub- + <b>LICENSE</b> + <b>Privoxy</b> is free software; you can redistribute it and/or modify it + under the terms of the <i>GNU</i> <i>General</i> <i>Public</i> <i>License</i>, version 2, as pub- lished by the Free Software Foundation. -</PRE> -</body></html> +</pre> + </body> +</html> + diff --git a/doc/webserver/privoxy-index.html b/doc/webserver/privoxy-index.html index 54a65962..83d05985 100644 --- a/doc/webserver/privoxy-index.html +++ b/doc/webserver/privoxy-index.html @@ -1,303 +1,209 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy - The Privacy Enhancing Proxy</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><META -NAME="KEYWORD" -CONTENT="privoxy"><META -NAME="KEYWORD" -CONTENT="HTTP"><META -NAME="KEYWORD" -CONTENT="proxy"><META -NAME="KEYWORD" -CONTENT="privacy"><META -NAME="KEYWORD" -CONTENT="popups"><META -NAME="KEYWORD" -CONTENT="po-ups"><META -NAME="KEYWORD" -CONTENT="HTML"><META -NAME="KEYWORD" -CONTENT="JavaScript"><META -NAME="KEYWORD" -CONTENT="cleaning"><META -NAME="KEYWORD" -CONTENT="blocking"><META -NAME="KEYWORD" -CONTENT="cleaner"><META -NAME="KEYWORD" -CONTENT="blocker"><META -NAME="KEYWORD" -CONTENT="filter"><META -NAME="KEYWORD" -CONTENT="proxy"><META -NAME="KEYWORD" -CONTENT="junk"><META -NAME="KEYWORD" -CONTENT="ad"><META -NAME="KEYWORD" -CONTENT="advertisement"><META -NAME="KEYWORD" -CONTENT="banner"><META -NAME="KEYWORD" -CONTENT="webbugs"><META -NAME="KEYWORD" -CONTENT="web-bugs"><META -NAME="KEYWORD" -CONTENT="werbung"><META -NAME="KEYWORD" -CONTENT="junkbusters"><META -NAME="KEYWORD" -CONTENT="junkbuster"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<meta name="description" content="Privoxy helps users to protect their privacy."> -<meta name="MSSmartTagsPreventParsing" content="TRUE"></HEAD -><BODY -CLASS="ARTICLE" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="ARTICLE" -><DIV -CLASS="TITLEPAGE" -><H1 -CLASS="TITLE" -><A -NAME="AEN2" ->Privoxy - The Privacy Enhancing Proxy</A -></H1 -><H2 -CLASS="SUBTITLE" ->Project Index Page v3.0.18</H2 -><DIV -><DIV -CLASS="ABSTRACT" -><P -></P -><A -NAME="AEN29" -></A -><P -> Privoxy is a non-caching web proxy with advanced filtering capabilities - for enhancing privacy, modifying web page data and HTTP headers, controlling - access, and removing ads and other obnoxious Internet junk. Privoxy has a - flexible configuration and can be customized to suit individual needs and tastes. - It has application for both stand-alone systems and multi-user networks.</P -><P -> Privoxy is Free Software and licensed under the GNU GPLv2.</P -><P -> Privoxy is an associated project of Software in the Public Interest (SPI).</P -><P -> Helping hands and donations are welcome: - <P -></P -><UL -><LI -><P -> <A -HREF="http://www.privoxy.org/faq/general.html#PARTICIPATE" -TARGET="_top" ->http://www.privoxy.org/faq/general.html#PARTICIPATE</A -> - </P -></LI -><LI -><P -> <A -HREF="http://www.privoxy.org/faq/general.html#DONATE" -TARGET="_top" ->http://www.privoxy.org/faq/general.html#DONATE</A -> - </P -></LI -></UL -></P -><P -></P -></DIV -></DIV -><HR></DIV -><DIV -CLASS="SECT1" -><H3 -CLASS="SECT1" -><A -NAME="DOWNLOAD" ->Download</A -></H3 -><P -> <P -></P -><UL -><LI -><P -> <A -HREF="https://sourceforge.net/projects/ijbswa/files/" -TARGET="_top" ->Download recent releases</A -> - </P -></LI -><LI -><P -> <A -HREF="user-manual/quickstart.html" -TARGET="_top" ->Quickstart after installation</A -> - </P -></LI -></UL -></P -></DIV -><DIV -CLASS="SECT1" -><HR><H3 -CLASS="SECT1" -><A -NAME="DOCS" ->Documentation</A -></H3 -><P -> <P -></P -><UL -><LI -><P -> <A -HREF="user-manual/index.html" -TARGET="_top" ->User manual</A -> - </P -></LI -><LI -><P -> <A -HREF="faq/index.html" -TARGET="_top" ->Frequently Asked Questions</A -> - </P -></LI -><LI -><P -> <A -HREF="developer-manual/index.html" -TARGET="_top" ->Developer Manual</A -> - </P -></LI -><LI -><P -> <A -HREF="man-page/privoxy-man-page.html" -TARGET="_top" ->Classic Man Page</A -> - </P -></LI -></UL -></P -></DIV -><DIV -CLASS="SECT1" -><HR><H3 -CLASS="SECT1" -><A -NAME="MOREINFO" ->More information</A -></H3 -><P -> <P -></P -><UL -><LI -><P -> <A -HREF="user-manual/contact.html" -TARGET="_top" ->Support & Service</A -> - </P -></LI -><LI -><P -> <A -HREF="user-manual/copyright.html" -TARGET="_top" ->Copyright, License, History & Authors</A -> - </P -></LI -><LI -><P -> <A -HREF="user-manual/introduction.html#FEATURES" -TARGET="_top" ->List of (new) Features</A -> - </P -></LI -><LI -><P -> <A -HREF="https://sourceforge.net/projects/ijbswa/" -TARGET="_top" ->The project page</A -> - </P -></LI -><LI -><P -> <A -HREF="user-manual/seealso.html" -TARGET="_top" ->Related links</A -> - </P -></LI -><LI -><P -> - - <A -HREF="http://www.privoxy.org/team/index.html" -TARGET="_top" ->Pictures of the Privoxy Team</A -> - </P -></LI -></UL -></P -></DIV -><DIV -CLASS="SECT1" -><HR><H2 -CLASS="SECT1" -><A -NAME="AEN89" -></A -></H2 -><P -> <SUB -> Copyright © 2001-2010 by Privoxy Developers - </SUB -></P -></DIV -></DIV -></BODY -></HTML -> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy - The Privacy Enhancing Proxy + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <meta name="KEYWORD" content="privoxy"> + <meta name="KEYWORD" content="HTTP"> + <meta name="KEYWORD" content="proxy"> + <meta name="KEYWORD" content="privacy"> + <meta name="KEYWORD" content="popups"> + <meta name="KEYWORD" content="po-ups"> + <meta name="KEYWORD" content="HTML"> + <meta name="KEYWORD" content="JavaScript"> + <meta name="KEYWORD" content="cleaning"> + <meta name="KEYWORD" content="blocking"> + <meta name="KEYWORD" content="cleaner"> + <meta name="KEYWORD" content="blocker"> + <meta name="KEYWORD" content="filter"> + <meta name="KEYWORD" content="proxy"> + <meta name="KEYWORD" content="junk"> + <meta name="KEYWORD" content="ad"> + <meta name="KEYWORD" content="advertisement"> + <meta name="KEYWORD" content="banner"> + <meta name="KEYWORD" content="webbugs"> + <meta name="KEYWORD" content="web-bugs"> + <meta name="KEYWORD" content="werbung"> + <meta name="KEYWORD" content="junkbusters"> + <meta name="KEYWORD" content="junkbuster"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <meta name="description" content= + "Privoxy helps users to protect their privacy."> + <meta name="MSSmartTagsPreventParsing" content="TRUE"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } +</style> + </head> + <body class="ARTICLE"> + <div class="ARTICLE"> + <div class="TITLEPAGE"> + <h1 class="TITLE"> + <a name="AEN2">Privoxy - The Privacy Enhancing Proxy</a> + </h1> + <h2 class="SUBTITLE"> + Project Index Page v3.0.18 + </h2> + <div> + <a name="AEN29"></a> + <p> + Privoxy is a non-caching web proxy with advanced filtering + capabilities for enhancing privacy, modifying web page data and + HTTP headers, controlling access, and removing ads and other + obnoxious Internet junk. Privoxy has a flexible configuration and + can be customized to suit individual needs and tastes. It has + application for both stand-alone systems and multi-user networks. + </p> + <p> + Privoxy is Free Software and licensed under the GNU GPLv2. + </p> + <p> + Privoxy is an associated project of Software in the Public + Interest (SPI). + </p> + <p> + Helping hands and donations are welcome: + </p> + <ul> + <li> + <p> + <a href="http://www.privoxy.org/faq/general.html#PARTICIPATE" + target= + "_top">http://www.privoxy.org/faq/general.html#PARTICIPATE</a> + </p> + </li> + <li> + <p> + <a href="http://www.privoxy.org/faq/general.html#DONATE" + target= + "_top">http://www.privoxy.org/faq/general.html#DONATE</a> + </p> + </li> + </ul> + </div> + <hr> + </div> + <div class="SECT1"> + <h3 class="SECT1"> + <a name="DOWNLOAD">Download</a> + </h3> + <p> + </p> + <ul> + <li> + <p> + <a href="https://sourceforge.net/projects/ijbswa/files/" + target="_top">Download recent releases</a> + </p> + </li> + <li> + <p> + <a href="user-manual/quickstart.html" target="_top">Quickstart + after installation</a> + </p> + </li> + </ul> + </div> + <div class="SECT1"> + <hr> + <h3 class="SECT1"> + <a name="DOCS">Documentation</a> + </h3> + <p> + </p> + <ul> + <li> + <p> + <a href="user-manual/index.html" target="_top">User manual</a> + </p> + </li> + <li> + <p> + <a href="faq/index.html" target="_top">Frequently Asked + Questions</a> + </p> + </li> + <li> + <p> + <a href="developer-manual/index.html" target="_top">Developer + Manual</a> + </p> + </li> + <li> + <p> + <a href="man-page/privoxy-man-page.html" target="_top">Classic + Man Page</a> + </p> + </li> + </ul> + </div> + <div class="SECT1"> + <hr> + <h3 class="SECT1"> + <a name="MOREINFO">More information</a> + </h3> + <p> + </p> + <ul> + <li> + <p> + <a href="user-manual/contact.html" target="_top">Support & + Service</a> + </p> + </li> + <li> + <p> + <a href="user-manual/copyright.html" target="_top">Copyright, + License, History & Authors</a> + </p> + </li> + <li> + <p> + <a href="user-manual/introduction.html#FEATURES" target= + "_top">List of (new) Features</a> + </p> + </li> + <li> + <p> + <a href="https://sourceforge.net/projects/ijbswa/" target= + "_top">The project page</a> + </p> + </li> + <li> + <p> + <a href="user-manual/seealso.html" target="_top">Related + links</a> + </p> + </li> + <li> + <p> + <a href="http://www.privoxy.org/team/index.html" target= + "_top">Pictures of the Privoxy Team</a> + </p> + </li> + </ul> + </div> + <div class="SECT1"> + <hr> + <h2 class="SECT1"> + <a name="AEN89"></a> + </h2> + <p> + <sub>Copyright © 2001-2010 by Privoxy Developers</sub> + </p> + </div> + </div> + </body> +</html> + diff --git a/doc/webserver/team/index.html b/doc/webserver/team/index.html index 2903bcf5..0d093d1a 100644 --- a/doc/webserver/team/index.html +++ b/doc/webserver/team/index.html @@ -1,26 +1,62 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> - <head> - <meta http-equiv="Content-Type"content="text/html; charset=iso-8859-1"> - <title>Privoxy - Team Photos</title> - <link rel="stylesheet" type="text/css" href="../p_doc.css"> - </head> - <body> - <h1 style="margin-left: 0%">Privoxy - Team Photos</h1> - <hr> - <p>In our day jobs, we're all models ;-)</p> - <table align="center"> - <tr> - <td><a href="01stefanw.jpg"><img src="01stefanw_t.jpg" width="80" height="80" border="0" title="Stefan Waldherr"></a></td> - <td><a href="02jon.jpg"><img src="02jon_t.jpg" width="80" height="80" border="0" title="Jon Foster"></a></td> - <td><a href="03andreas.jpg"><img src="03andreas_t.jpg" width="80" height="80" border="0" title="Andreas Oesterhelt"></a></td> - <td><a href="04rodney.jpg"><img src="04rodney_t.jpg" width="80" height="80" border="0" title="Rodney Stromlund"></a></td> - </tr> - <tr> - <td><a href="05david.jpg"><img src="05david_t.jpg" width="80" height="80" border="0" title="David Schmidt"></a></td> - <td><a href="06member.jpg"><img src="06member_t.jpg" width="80" height="80" border="0" title="N/A"></a></td> - <td><a href="07member.jpg"><img src="07member_t.jpg" width="80" height="80" border="0" title="N/A"></a></td> - <td><a href="08member.jpg"><img src="08member_t.jpg" width="80" height="80" border="0" title="N/A"></a></td> - </tr> - </table> - </body> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <title> + Privoxy - Team Photos + </title> + <link rel="stylesheet" type="text/css" href="../p_doc.css"> +<style type="text/css"> + h1.c1 {margin-left: 0%} +</style> + </head> + <body> + <h1 class="c1"> + Privoxy - Team Photos + </h1> + <hr> + <p> + In our day jobs, we're all models ;-) + </p> + <table align="center"> + <tr> + <td> + <a href="01stefanw.jpg"><img src="01stefanw_t.jpg" width="80" + height="80" border="0" title="Stefan Waldherr"></a> + </td> + <td> + <a href="02jon.jpg"><img src="02jon_t.jpg" width="80" height="80" + border="0" title="Jon Foster"></a> + </td> + <td> + <a href="03andreas.jpg"><img src="03andreas_t.jpg" width="80" + height="80" border="0" title="Andreas Oesterhelt"></a> + </td> + <td> + <a href="04rodney.jpg"><img src="04rodney_t.jpg" width="80" height= + "80" border="0" title="Rodney Stromlund"></a> + </td> + </tr> + <tr> + <td> + <a href="05david.jpg"><img src="05david_t.jpg" width="80" height= + "80" border="0" title="David Schmidt"></a> + </td> + <td> + <a href="06member.jpg"><img src="06member_t.jpg" width="80" height= + "80" border="0" title="N/A"></a> + </td> + <td> + <a href="07member.jpg"><img src="07member_t.jpg" width="80" height= + "80" border="0" title="N/A"></a> + </td> + <td> + <a href="08member.jpg"><img src="08member_t.jpg" width="80" height= + "80" border="0" title="N/A"></a> + </td> + </tr> + </table> + </body> </html> + diff --git a/doc/webserver/user-manual/actions-file.html b/doc/webserver/user-manual/actions-file.html index d7e687c6..cbffcee7 100644 --- a/doc/webserver/user-manual/actions-file.html +++ b/doc/webserver/user-manual/actions-file.html @@ -1,2293 +1,1554 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Actions Files</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="The Main Configuration File" -HREF="config.html"><LINK -REL="NEXT" -TITLE="Filter Files" -HREF="filter-file.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="config.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="filter-file.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="ACTIONS-FILE" ->8. Actions Files</A -></H1 -><P -> The actions files are used to define what <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->actions</I -></SPAN -> - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 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 a number of such actions, with a wide range of functionality. - Each action does something a little different. - These actions give us a veritable arsenal of tools with which to exert - our control, preferences and independence. Actions can be combined so that - their effects are aggregated when applied against a given set of URLs.</P -><P -> There - are three action files included with <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with - differing purposes:</P -><P -> <P -></P -><UL -><LI -><P -> <TT -CLASS="FILENAME" ->match-all.action</TT -> - is used to define which - <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> relating to banner-blocking, images, pop-ups, - content modification, cookie handling etc should be applied by default. - It should be the first actions file loaded - </P -></LI -><LI -><P -> <TT -CLASS="FILENAME" ->default.action</TT -> - defines many exceptions (both - positive and negative) from the default set of actions that's configured - in <TT -CLASS="FILENAME" ->match-all.action</TT ->. It is a set of rules that should - work reasonably well as-is for most users. This file is only supposed to - be edited by the developers. It should be the second actions file loaded. - </P -></LI -><LI -><P -> <TT -CLASS="FILENAME" ->user.action</TT -> - is intended to be for local site - preferences and exceptions. As an example, if your ISP or your bank - has specific requirements, and need special handling, this kind of - thing should go here. This file will not be upgraded. - </P -></LI -><LI -><P -> <SPAN -CLASS="GUIBUTTON" ->Edit</SPAN -> <SPAN -CLASS="GUIBUTTON" ->Set to Cautious</SPAN -> <SPAN -CLASS="GUIBUTTON" ->Set to Medium</SPAN -> <SPAN -CLASS="GUIBUTTON" ->Set to Advanced</SPAN -> - </P -><P -> These have increasing levels of aggressiveness <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->and have no - influence on your browsing unless you select them explicitly in the - editor</I -></SPAN ->. A default installation should be pre-set to - <TT -CLASS="LITERAL" ->Cautious</TT ->. New users should try this for a while before - adjusting the settings to more aggressive levels. The more aggressive - the settings, then the more likelihood there is of problems such as sites - not working as they should. - </P -><P -> The <SPAN -CLASS="GUIBUTTON" ->Edit</SPAN -> button allows you to turn each - action on/off individually for fine-tuning. The <SPAN -CLASS="GUIBUTTON" ->Cautious</SPAN -> - button changes the actions list to low/safe settings which will activate - ad blocking and a minimal set of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s features, and subsequently - there will be less of a chance for accidental problems. The - <SPAN -CLASS="GUIBUTTON" ->Medium</SPAN -> button sets the list to a medium level of - other features and a low level set of privacy features. The - <SPAN -CLASS="GUIBUTTON" ->Advanced</SPAN -> button sets the list to a high level of - ad blocking and medium level of privacy. See the chart below. The latter - three buttons over-ride any changes via with the - <SPAN -CLASS="GUIBUTTON" ->Edit</SPAN -> button. More fine-tuning can be done in the - lower sections of this internal page. - </P -><P -> While the actions file editor allows to enable these settings in all - actions files, they are only supposed to be enabled in the first one - to make sure you don't unintentionally overrule earlier rules. - </P -><P -> The default profiles, and their associated actions, as pre-defined in - <TT -CLASS="FILENAME" ->default.action</TT -> are: - </P -><P -> <DIV -CLASS="TABLE" -><A -NAME="AEN2625" -></A -><P -><B ->Table 1. Default Configurations</B -></P -><TABLE -BORDER="1" -FRAME="border" -RULES="all" -CLASS="CALSTABLE" -><COL -WIDTH="1*" -TITLE="C1"><COL -WIDTH="1*" -TITLE="C2"><COL -WIDTH="1*" -TITLE="C3"><COL -WIDTH="1*" -TITLE="C4"><THEAD -><TR -><TH ->Feature</TH -><TH ->Cautious</TH -><TH ->Medium</TH -><TH ->Advanced</TH -></TR -></THEAD -><TBODY -><TR -><TD ->Ad-blocking Aggressiveness</TD -><TD ->medium</TD -><TD ->high</TD -><TD ->high</TD -></TR -><TR -><TD ->Ad-filtering by size</TD -><TD ->no</TD -><TD ->yes</TD -><TD ->yes</TD -></TR -><TR -><TD ->Ad-filtering by link</TD -><TD ->no</TD -><TD ->no</TD -><TD ->yes</TD -></TR -><TR -><TD ->Pop-up killing</TD -><TD ->blocks only</TD -><TD ->blocks only</TD -><TD ->blocks only</TD -></TR -><TR -><TD ->Privacy Features</TD -><TD ->low</TD -><TD ->medium</TD -><TD ->medium/high</TD -></TR -><TR -><TD ->Cookie handling</TD -><TD ->none</TD -><TD ->session-only</TD -><TD ->kill</TD -></TR -><TR -><TD ->Referer forging</TD -><TD ->no</TD -><TD ->yes</TD -><TD ->yes</TD -></TR -><TR -><TD ->GIF de-animation</TD -><TD ->no</TD -><TD ->yes</TD -><TD ->yes</TD -></TR -><TR -><TD ->Fast redirects</TD -><TD ->no</TD -><TD ->no</TD -><TD ->yes</TD -></TR -><TR -><TD ->HTML taming</TD -><TD ->no</TD -><TD ->no</TD -><TD ->yes</TD -></TR -><TR -><TD ->JavaScript taming</TD -><TD ->no</TD -><TD ->no</TD -><TD ->yes</TD -></TR -><TR -><TD ->Web-bug killing</TD -><TD ->no</TD -><TD ->yes</TD -><TD ->yes</TD -></TR -><TR -><TD ->Image tag reordering</TD -><TD ->no</TD -><TD ->yes</TD -><TD ->yes</TD -></TR -></TBODY -></TABLE -></DIV -> - </P -></LI -></UL -></P -><P -> The list of actions files to be used are defined in the main configuration - file, and are processed in the order they are defined (e.g. - <TT -CLASS="FILENAME" ->default.action</TT -> is typically processed before - <TT -CLASS="FILENAME" ->user.action</TT ->). The content of these can all be viewed and - edited from <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A ->. - The over-riding principle when applying actions, is that the last action that - matches a given URL wins. The broadest, most general rules go first - (defined in <TT -CLASS="FILENAME" ->default.action</TT ->), - followed by any exceptions (typically also in - <TT -CLASS="FILENAME" ->default.action</TT ->), which are then followed lastly by any - local preferences (typically in <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->user</I -></SPAN -><TT -CLASS="FILENAME" ->.action</TT ->). - Generally, <TT -CLASS="FILENAME" ->user.action</TT -> has the last word. - </P -><P -> An actions file typically has multiple sections. If you want to use - <SPAN -CLASS="QUOTE" ->"aliases"</SPAN -> in an actions file, you have to place the (optional) - <A -HREF="actions-file.html#ALIASES" ->alias section</A -> at the top of that file. - Then comes the default set of rules which will apply universally to all - sites and pages (be <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->very careful</I -></SPAN -> with using such a - universal set in <TT -CLASS="FILENAME" ->user.action</TT -> or any other actions file after - <TT -CLASS="FILENAME" ->default.action</TT ->, because it will override the result - from consulting any previous file). And then below that, - exceptions to the defined universal policies. You can regard - <TT -CLASS="FILENAME" ->user.action</TT -> as an appendix to <TT -CLASS="FILENAME" ->default.action</TT ->, - with the advantage that it is a separate file, which makes preserving your - personal settings across <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> upgrades easier.</P -><P -> - Actions can be used to block anything you want, including ads, banners, or - just some obnoxious URL whose content you would rather not see. Cookies can be accepted - or rejected, or accepted only during the current browser session (i.e. not - written to disk), content can be modified, some JavaScripts tamed, user-tracking - fooled, and much more. See below for a <A -HREF="actions-file.html#ACTIONS" ->complete list - of actions</A ->.</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN2724" ->8.1. Finding the Right Mix</A -></H2 -><P -> Note that some <A -HREF="actions-file.html#ACTIONS" ->actions</A ->, like cookie suppression - or script disabling, may render some sites unusable that rely on these - techniques to work properly. Finding the right mix of actions is not always easy and - certainly a matter of personal taste. And, things can always change, requiring - refinements in the configuration. In general, it can be said that the more - <SPAN -CLASS="QUOTE" ->"aggressive"</SPAN -> your default settings (in the top section of the - actions file) are, the more exceptions for <SPAN -CLASS="QUOTE" ->"trusted"</SPAN -> sites you - will have to make later. If, for example, you want to crunch all cookies per - default, you'll have to make exceptions from that rule for sites that you - regularly use and that require cookies for actually useful purposes, like maybe - your bank, favorite shop, or newspaper.</P -><P -> 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 :).</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN2731" ->8.2. How to Edit</A -></H2 -><P -> The easiest way to edit the actions files is with a browser by - using our browser-based editor, which can be reached from <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A ->. - Note: the config file option <A -HREF="config.html#ENABLE-EDIT-ACTIONS" ->enable-edit-actions</A -> must be enabled for - this to work. The editor allows both fine-grained control over every single - feature on a per-URL basis, and easy choosing from wholesale sets of defaults - like <SPAN -CLASS="QUOTE" ->"Cautious"</SPAN ->, <SPAN -CLASS="QUOTE" ->"Medium"</SPAN -> or - <SPAN -CLASS="QUOTE" ->"Advanced"</SPAN ->. Warning: the <SPAN -CLASS="QUOTE" ->"Advanced"</SPAN -> setting is more - aggressive, and will be more likely to cause problems for some sites. - Experienced users only! - </P -><P -> If you prefer plain text editing to GUIs, you can of course also directly edit the - the actions files with your favorite text editor. Look at - <TT -CLASS="FILENAME" ->default.action</TT -> which is richly commented with many - good examples.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="ACTIONS-APPLY" ->8.3. How Actions are Applied to Requests</A -></H2 -><P -> Actions files are divided into sections. There are special sections, - like the <SPAN -CLASS="QUOTE" ->"<A -HREF="actions-file.html#ALIASES" ->alias</A ->"</SPAN -> 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 and tag patterns, each on a separate line.</P -><P -> To determine which actions apply to a request, the URL of the request is - compared to all URL patterns in each <SPAN -CLASS="QUOTE" ->"action file"</SPAN ->. - Every time it matches, the list of applicable actions for the request is - incrementally updated, using the heading of the section in which the - pattern is located. The same is done again for tags and tag patterns later on.</P -><P -> If multiple applying sections set the same action differently, - the last match wins. If not, the effects are aggregated. - E.g. a URL might match a regular section with a heading line of <TT -CLASS="LITERAL" ->{ - +<A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -> }</TT ->, - then later another one with just <TT -CLASS="LITERAL" ->{ - +<A -HREF="actions-file.html#BLOCK" ->block</A -> }</TT ->, resulting - in <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->both</I -></SPAN -> actions to apply. And there may well be - cases where you will want to combine actions together. Such a section then - might look like:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { +<TT -CLASS="LITERAL" ->handle-as-image</TT -> +<TT -CLASS="LITERAL" ->block{Banner ads.}</TT -> } +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Actions Files + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="The Main Configuration File" href= + "config.html"> + <link rel="NEXT" title="Filter Files" href="filter-file.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + p.c2 {font-weight: bold} + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="config.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="filter-file.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="ACTIONS-FILE">8. Actions Files</a> + </h1> + <p> + The actions files are used to define what <span class="emphasis"><i + class="EMPHASIS">actions</i></span> <span class= + "APPLICATION">Privoxy</span> 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 a number of such actions, with a wide range + of functionality. Each action does something a little different. + These actions give us a veritable arsenal of tools with which to + exert our control, preferences and independence. Actions can be + combined so that their effects are aggregated when applied against a + given set of URLs. + </p> + <p> + There are three action files included with <span class= + "APPLICATION">Privoxy</span> with differing purposes: + </p> + <p> + </p> + <ul> + <li> + <p> + <tt class="FILENAME">match-all.action</tt> - is used to define + which <span class="QUOTE">"actions"</span> relating to + banner-blocking, images, pop-ups, content modification, cookie + handling etc should be applied by default. It should be the first + actions file loaded + </p> + </li> + <li> + <p> + <tt class="FILENAME">default.action</tt> - defines many + exceptions (both positive and negative) from the default set of + actions that's configured in <tt class= + "FILENAME">match-all.action</tt>. It is a set of rules that + should work reasonably well as-is for most users. This file is + only supposed to be edited by the developers. It should be the + second actions file loaded. + </p> + </li> + <li> + <p> + <tt class="FILENAME">user.action</tt> - is intended to be for + local site preferences and exceptions. As an example, if your ISP + or your bank has specific requirements, and need special + handling, this kind of thing should go here. This file will not + be upgraded. + </p> + </li> + <li> + <p> + <span class="GUIBUTTON">Edit</span> <span class="GUIBUTTON">Set + to Cautious</span> <span class="GUIBUTTON">Set to Medium</span> + <span class="GUIBUTTON">Set to Advanced</span> + </p> + <p> + These have increasing levels of aggressiveness <span class= + "emphasis"><i class="EMPHASIS">and have no influence on your + browsing unless you select them explicitly in the + editor</i></span>. A default installation should be pre-set to + <tt class="LITERAL">Cautious</tt>. New users should try this for + a while before adjusting the settings to more aggressive levels. + The more aggressive the settings, then the more likelihood there + is of problems such as sites not working as they should. + </p> + <p> + The <span class="GUIBUTTON">Edit</span> button allows you to turn + each action on/off individually for fine-tuning. The <span class= + "GUIBUTTON">Cautious</span> button changes the actions list to + low/safe settings which will activate ad blocking and a minimal + set of <span class="APPLICATION">Privoxy</span>'s features, and + subsequently there will be less of a chance for accidental + problems. The <span class="GUIBUTTON">Medium</span> button sets + the list to a medium level of other features and a low level set + of privacy features. The <span class="GUIBUTTON">Advanced</span> + button sets the list to a high level of ad blocking and medium + level of privacy. See the chart below. The latter three buttons + over-ride any changes via with the <span class= + "GUIBUTTON">Edit</span> button. More fine-tuning can be done in + the lower sections of this internal page. + </p> + <p> + While the actions file editor allows to enable these settings in + all actions files, they are only supposed to be enabled in the + first one to make sure you don't unintentionally overrule earlier + rules. + </p> + <p> + The default profiles, and their associated actions, as + pre-defined in <tt class="FILENAME">default.action</tt> are: + </p> + <p> + </p> + <div class="TABLE"> + <a name="AEN2625"></a> + <p class="c2"> + Table 1. Default Configurations + </p> + <table border="1" frame="border" rules="all" class="CALSTABLE"> + <col width="1*" title="C1"> + <col width="1*" title="C2"> + <col width="1*" title="C3"> + <col width="1*" title="C4"> + <thead> + <tr> + <th> + Feature + </th> + <th> + Cautious + </th> + <th> + Medium + </th> + <th> + Advanced + </th> + </tr> + </thead> + <tbody> + <tr> + <td> + Ad-blocking Aggressiveness + </td> + <td> + medium + </td> + <td> + high + </td> + <td> + high + </td> + </tr> + <tr> + <td> + Ad-filtering by size + </td> + <td> + no + </td> + <td> + yes + </td> + <td> + yes + </td> + </tr> + <tr> + <td> + Ad-filtering by link + </td> + <td> + no + </td> + <td> + no + </td> + <td> + yes + </td> + </tr> + <tr> + <td> + Pop-up killing + </td> + <td> + blocks only + </td> + <td> + blocks only + </td> + <td> + blocks only + </td> + </tr> + <tr> + <td> + Privacy Features + </td> + <td> + low + </td> + <td> + medium + </td> + <td> + medium/high + </td> + </tr> + <tr> + <td> + Cookie handling + </td> + <td> + none + </td> + <td> + session-only + </td> + <td> + kill + </td> + </tr> + <tr> + <td> + Referer forging + </td> + <td> + no + </td> + <td> + yes + </td> + <td> + yes + </td> + </tr> + <tr> + <td> + GIF de-animation + </td> + <td> + no + </td> + <td> + yes + </td> + <td> + yes + </td> + </tr> + <tr> + <td> + Fast redirects + </td> + <td> + no + </td> + <td> + no + </td> + <td> + yes + </td> + </tr> + <tr> + <td> + HTML taming + </td> + <td> + no + </td> + <td> + no + </td> + <td> + yes + </td> + </tr> + <tr> + <td> + JavaScript taming + </td> + <td> + no + </td> + <td> + no + </td> + <td> + yes + </td> + </tr> + <tr> + <td> + Web-bug killing + </td> + <td> + no + </td> + <td> + yes + </td> + <td> + yes + </td> + </tr> + <tr> + <td> + Image tag reordering + </td> + <td> + no + </td> + <td> + yes + </td> + <td> + yes + </td> + </tr> + </tbody> + </table> + </div> + </li> + </ul> + + <p> + The list of actions files to be used are defined in the main + configuration file, and are processed in the order they are defined + (e.g. <tt class="FILENAME">default.action</tt> is typically processed + before <tt class="FILENAME">user.action</tt>). The content of these + can all be viewed and edited from <a href= + "http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a>. The over-riding + principle when applying actions, is that the last action that matches + a given URL wins. The broadest, most general rules go first (defined + in <tt class="FILENAME">default.action</tt>), followed by any + exceptions (typically also in <tt class= + "FILENAME">default.action</tt>), which are then followed lastly by + any local preferences (typically in <span class="emphasis"><i class= + "EMPHASIS">user</i></span><tt class="FILENAME">.action</tt>). + Generally, <tt class="FILENAME">user.action</tt> has the last word. + </p> + <p> + An actions file typically has multiple sections. If you want to use + <span class="QUOTE">"aliases"</span> in an actions file, you have to + place the (optional) <a href="actions-file.html#ALIASES">alias + section</a> at the top of that file. Then comes the default set of + rules which will apply universally to all sites and pages (be <span + class="emphasis"><i class="EMPHASIS">very careful</i></span> with + using such a universal set in <tt class="FILENAME">user.action</tt> + or any other actions file after <tt class= + "FILENAME">default.action</tt>, because it will override the result + from consulting any previous file). And then below that, exceptions + to the defined universal policies. You can regard <tt class= + "FILENAME">user.action</tt> as an appendix to <tt class= + "FILENAME">default.action</tt>, with the advantage that it is a + separate file, which makes preserving your personal settings across + <span class="APPLICATION">Privoxy</span> upgrades easier. + </p> + <p> + Actions can be used to block anything you want, including ads, + banners, or just some obnoxious URL whose content you would rather + not see. Cookies can be accepted or rejected, or accepted only during + the current browser session (i.e. not written to disk), content can + be modified, some JavaScripts tamed, user-tracking fooled, and much + more. See below for a <a href="actions-file.html#ACTIONS">complete + list of actions</a>. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN2724">8.1. Finding the Right Mix</a> + </h2> + <p> + Note that some <a href="actions-file.html#ACTIONS">actions</a>, + like cookie suppression or script disabling, may render some sites + unusable that rely on these techniques to work properly. Finding + the right mix of actions is not always easy and certainly a matter + of personal taste. And, things can always change, requiring + refinements in the configuration. In general, it can be said that + the more <span class="QUOTE">"aggressive"</span> your default + settings (in the top section of the actions file) are, the more + exceptions for <span class="QUOTE">"trusted"</span> sites you will + have to make later. If, for example, you want to crunch all cookies + per default, you'll have to make exceptions from that rule for + sites that you regularly use and that require cookies for actually + useful purposes, like maybe your bank, favorite shop, or newspaper. + </p> + <p> + 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 :). + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN2731">8.2. How to Edit</a> + </h2> + <p> + The easiest way to edit the actions files is with a browser by + using our browser-based editor, which can be reached from <a href= + "http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a>. Note: the config + file option <a href= + "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a> must be + enabled for this to work. The editor allows both fine-grained + control over every single feature on a per-URL basis, and easy + choosing from wholesale sets of defaults like <span class= + "QUOTE">"Cautious"</span>, <span class="QUOTE">"Medium"</span> or + <span class="QUOTE">"Advanced"</span>. Warning: the <span class= + "QUOTE">"Advanced"</span> setting is more aggressive, and will be + more likely to cause problems for some sites. Experienced users + only! + </p> + <p> + If you prefer plain text editing to GUIs, you can of course also + directly edit the the actions files with your favorite text editor. + Look at <tt class="FILENAME">default.action</tt> which is richly + commented with many good examples. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="ACTIONS-APPLY">8.3. How Actions are Applied to + Requests</a> + </h2> + <p> + Actions files are divided into sections. There are special + sections, like the <span class="QUOTE">"<a href= + "actions-file.html#ALIASES">alias</a>"</span> 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 and tag patterns, each on a separate line. + </p> + <p> + To determine which actions apply to a request, the URL of the + request is compared to all URL patterns in each <span class= + "QUOTE">"action file"</span>. Every time it matches, the list of + applicable actions for the request is incrementally updated, using + the heading of the section in which the pattern is located. The + same is done again for tags and tag patterns later on. + </p> + <p> + If multiple applying sections set the same action differently, the + last match wins. If not, the effects are aggregated. E.g. a URL + might match a regular section with a heading line of <tt class= + "LITERAL">{ +<a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a> }</tt>, + then later another one with just <tt class="LITERAL">{ +<a href= + "actions-file.html#BLOCK">block</a> }</tt>, resulting in <span + class="emphasis"><i class="EMPHASIS">both</i></span> actions to + apply. And there may well be cases where you will want to combine + actions together. Such a section then might look like: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { +<tt class="LITERAL">handle-as-image</tt> +<tt class= +"LITERAL">block{Banner ads.}</tt> } # Block these as if they were images. Send no block page. banners.example.com media.example.com/.*banners - .example.com/images/ads/</PRE -></TD -></TR -></TABLE -> - </P -><P -> You can trace this process for URL patterns and any given URL by visiting <A -HREF="http://config.privoxy.org/show-url-info" -TARGET="_top" ->http://config.privoxy.org/show-url-info</A ->.</P -><P -> Examples and more detail on this is provided in the Appendix, <A -HREF="appendix.html#ACTIONSANAT" -> Troubleshooting: Anatomy of an Action</A -> section.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AF-PATTERNS" ->8.4. Patterns</A -></H2 -><P -> - As mentioned, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> uses <SPAN -CLASS="QUOTE" ->"patterns"</SPAN -> - to determine what <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->actions</I -></SPAN -> might apply to which sites and - pages your browser attempts to access. These <SPAN -CLASS="QUOTE" ->"patterns"</SPAN -> use wild - card type <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->pattern</I -></SPAN -> matching to achieve a high degree of - flexibility. This allows one expression to be expanded and potentially match - against many similar patterns.</P -><P -> Generally, an URL pattern has the form - <TT -CLASS="LITERAL" -><domain><port>/<path></TT ->, where the - <TT -CLASS="LITERAL" -><domain></TT ->, the <TT -CLASS="LITERAL" -><port></TT -> - and the <TT -CLASS="LITERAL" -><path></TT -> are optional. (This is why the special - <TT -CLASS="LITERAL" ->/</TT -> pattern matches all URLs). Note that the protocol - portion of the URL pattern (e.g. <TT -CLASS="LITERAL" ->http://</TT ->) should - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not</I -></SPAN -> be included in the pattern. This is assumed already!</P -><P -> 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 - <A -HREF="http://en.wikipedia.org/wiki/Regular_expressions" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"Regular - Expressions"</SPAN -></A -> (POSIX 1003.2).</P -><P -> The port part of a pattern is a decimal port number preceded by a colon - (<TT -CLASS="LITERAL" ->:</TT ->). If the domain part contains a numerical IPv6 address, - it has to be put into angle brackets - (<TT -CLASS="LITERAL" -><</TT ->, <TT -CLASS="LITERAL" ->></TT ->).</P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT -><TT -CLASS="LITERAL" ->www.example.com/</TT -></DT -><DD -><P -> is a domain-only pattern and will match any request to <TT -CLASS="LITERAL" ->www.example.com</TT ->, - regardless of which document on that server is requested. So ALL pages in - this domain would be covered by the scope of this action. Note that a - simple <TT -CLASS="LITERAL" ->example.com</TT -> is different and would NOT match. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->www.example.com</TT -></DT -><DD -><P -> means exactly the same. For domain-only patterns, the trailing <TT -CLASS="LITERAL" ->/</TT -> may - be omitted. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->www.example.com/index.html</TT -></DT -><DD -><P -> matches all the documents on <TT -CLASS="LITERAL" ->www.example.com</TT -> - whose name starts with <TT -CLASS="LITERAL" ->/index.html</TT ->. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->www.example.com/index.html$</TT -></DT -><DD -><P -> matches only the single document <TT -CLASS="LITERAL" ->/index.html</TT -> - on <TT -CLASS="LITERAL" ->www.example.com</TT ->. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->/index.html$</TT -></DT -><DD -><P -> matches the document <TT -CLASS="LITERAL" ->/index.html</TT ->, regardless of the domain, - i.e. on <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->any</I -></SPAN -> web server anywhere. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->/</TT -></DT -><DD -><P -> Matches any URL because there's no requirement for either the - domain or the path to match anything. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->:8000/</TT -></DT -><DD -><P -> Matches any URL pointing to TCP port 8000. - </P -></DD -><DT -><TT -CLASS="LITERAL" -><2001:db8::1>/</TT -></DT -><DD -><P -> Matches any URL with the host address <TT -CLASS="LITERAL" ->2001:db8::1</TT ->. - (Note that the real URL uses plain brackets, not angle brackets.) - </P -></DD -><DT -><TT -CLASS="LITERAL" ->index.html</TT -></DT -><DD -><P -> matches nothing, since it would be interpreted as a domain name and - there is no top-level domain called <TT -CLASS="LITERAL" ->.html</TT ->. So its - a mistake. - </P -></DD -></DL -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="AEN2843" ->8.4.1. The Domain Pattern</A -></H3 -><P -> 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:</P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT -><TT -CLASS="LITERAL" ->.example.com</TT -></DT -><DD -><P -> matches any domain with first-level domain <TT -CLASS="LITERAL" ->com</TT -> - and second-level domain <TT -CLASS="LITERAL" ->example</TT ->. - For example <TT -CLASS="LITERAL" ->www.example.com</TT ->, - <TT -CLASS="LITERAL" ->example.com</TT -> and <TT -CLASS="LITERAL" ->foo.bar.baz.example.com</TT ->. - Note that it wouldn't match if the second-level domain was <TT -CLASS="LITERAL" ->another-example</TT ->. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->www.</TT -></DT -><DD -><P -> matches any domain that <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->STARTS</I -></SPAN -> with - <TT -CLASS="LITERAL" ->www.</TT -> (It also matches the domain - <TT -CLASS="LITERAL" ->www</TT -> but most of the time that doesn't matter.) - </P -></DD -><DT -><TT -CLASS="LITERAL" ->.example.</TT -></DT -><DD -><P -> matches any domain that <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->CONTAINS</I -></SPAN -> <TT -CLASS="LITERAL" ->.example.</TT ->. - And, by the way, also included would be any files or documents that exist - within that domain since no path limitations are specified. (Correctly - speaking: It matches any FQDN that contains <TT -CLASS="LITERAL" ->example</TT -> as - a domain.) This might be <TT -CLASS="LITERAL" ->www.example.com</TT ->, - <TT -CLASS="LITERAL" ->news.example.de</TT ->, or - <TT -CLASS="LITERAL" ->www.example.net/cgi/testing.pl</TT -> for instance. All these - cases are matched. - </P -></DD -></DL -></DIV -><P -> Additionally, there are wild-cards that you can use in the domain names - themselves. These work similarly to shell globbing type wild-cards: - <SPAN -CLASS="QUOTE" ->"*"</SPAN -> represents zero or more arbitrary characters (this is - equivalent to the - <A -HREF="http://en.wikipedia.org/wiki/Regular_expressions" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"Regular - Expression"</SPAN -></A -> based syntax of <SPAN -CLASS="QUOTE" ->".*"</SPAN ->), - <SPAN -CLASS="QUOTE" ->"?"</SPAN -> represents any single character (this is equivalent to the - regular expression syntax of a simple <SPAN -CLASS="QUOTE" ->"."</SPAN ->), and you can define - <SPAN -CLASS="QUOTE" ->"character classes"</SPAN -> in square brackets which is similar to - the same regular expression technique. All of this can be freely mixed:</P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT -><TT -CLASS="LITERAL" ->ad*.example.com</TT -></DT -><DD -><P -> matches <SPAN -CLASS="QUOTE" ->"adserver.example.com"</SPAN ->, - <SPAN -CLASS="QUOTE" ->"ads.example.com"</SPAN ->, etc but not <SPAN -CLASS="QUOTE" ->"sfads.example.com"</SPAN -> - </P -></DD -><DT -><TT -CLASS="LITERAL" ->*ad*.example.com</TT -></DT -><DD -><P -> matches all of the above, and then some. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->.?pix.com</TT -></DT -><DD -><P -> matches <TT -CLASS="LITERAL" ->www.ipix.com</TT ->, - <TT -CLASS="LITERAL" ->pictures.epix.com</TT ->, <TT -CLASS="LITERAL" ->a.b.c.d.e.upix.com</TT -> etc. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->www[1-9a-ez].example.c*</TT -></DT -><DD -><P -> matches <TT -CLASS="LITERAL" ->www1.example.com</TT ->, - <TT -CLASS="LITERAL" ->www4.example.cc</TT ->, <TT -CLASS="LITERAL" ->wwwd.example.cy</TT ->, - <TT -CLASS="LITERAL" ->wwwz.example.com</TT -> etc., but <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not</I -></SPAN -> - <TT -CLASS="LITERAL" ->wwww.example.com</TT ->. - </P -></DD -></DL -></DIV -><P -> While flexible, this is not the sophistication of full regular expression based syntax.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="AEN2919" ->8.4.2. The Path Pattern</A -></H3 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> uses <SPAN -CLASS="QUOTE" ->"modern"</SPAN -> POSIX 1003.2 - <A -HREF="http://en.wikipedia.org/wiki/Regular_expressions" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"Regular - Expressions"</SPAN -></A -> for matching the path portion (after the slash), - and is thus more flexible.</P -><P -> There is an <A -HREF="appendix.html#REGEX" ->Appendix</A -> with a brief quick-start into regular - expressions, you also might want to have a look at your operating system's documentation - on regular expressions (try <TT -CLASS="LITERAL" ->man re_format</TT ->).</P -><P -> Note that the path pattern is automatically left-anchored at the <SPAN -CLASS="QUOTE" ->"/"</SPAN ->, - i.e. it matches as if it would start with a <SPAN -CLASS="QUOTE" ->"^"</SPAN -> (regular expression speak - for the beginning of a line).</P -><P -> Please also note that matching in the path is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->CASE INSENSITIVE</I -></SPAN -> - by default, but you can switch to case sensitive at any point in the pattern by using the - <SPAN -CLASS="QUOTE" ->"(?-i)"</SPAN -> switch: <TT -CLASS="LITERAL" ->www.example.com/(?-i)PaTtErN.*</TT -> will match - only documents whose path starts with <TT -CLASS="LITERAL" ->PaTtErN</TT -> in - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->exactly</I -></SPAN -> this capitalization.</P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT -><TT -CLASS="LITERAL" ->.example.com/.*</TT -></DT -><DD -><P -> Is equivalent to just <SPAN -CLASS="QUOTE" ->".example.com"</SPAN ->, since any documents - within that domain are matched with or without the <SPAN -CLASS="QUOTE" ->".*"</SPAN -> - regular expression. This is redundant - </P -></DD -><DT -><TT -CLASS="LITERAL" ->.example.com/.*/index.html$</TT -></DT -><DD -><P -> Will match any page in the domain of <SPAN -CLASS="QUOTE" ->"example.com"</SPAN -> that is - named <SPAN -CLASS="QUOTE" ->"index.html"</SPAN ->, and that is part of some path. For - example, it matches <SPAN -CLASS="QUOTE" ->"www.example.com/testing/index.html"</SPAN -> but - NOT <SPAN -CLASS="QUOTE" ->"www.example.com/index.html"</SPAN -> because the regular - expression called for at least two <SPAN -CLASS="QUOTE" ->"/'s"</SPAN ->, thus the path - requirement. It also would match - <SPAN -CLASS="QUOTE" ->"www.example.com/testing/index_html"</SPAN ->, because of the - special meta-character <SPAN -CLASS="QUOTE" ->"."</SPAN ->. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->.example.com/(.*/)?index\.html$</TT -></DT -><DD -><P -> This regular expression is conditional so it will match any page - named <SPAN -CLASS="QUOTE" ->"index.html"</SPAN -> regardless of path which in this case can - have one or more <SPAN -CLASS="QUOTE" ->"/'s"</SPAN ->. And this one must contain exactly - <SPAN -CLASS="QUOTE" ->".html"</SPAN -> (but does not have to end with that!). - </P -></DD -><DT -><TT -CLASS="LITERAL" ->.example.com/(.*/)(ads|banners?|junk)</TT -></DT -><DD -><P -> This regular expression will match any path of <SPAN -CLASS="QUOTE" ->"example.com"</SPAN -> - that contains any of the words <SPAN -CLASS="QUOTE" ->"ads"</SPAN ->, <SPAN -CLASS="QUOTE" ->"banner"</SPAN ->, - <SPAN -CLASS="QUOTE" ->"banners"</SPAN -> (because of the <SPAN -CLASS="QUOTE" ->"?"</SPAN ->) or <SPAN -CLASS="QUOTE" ->"junk"</SPAN ->. - The path does not have to end in these words, just contain them. - </P -></DD -><DT -><TT -CLASS="LITERAL" ->.example.com/(.*/)(ads|banners?|junk)/.*\.(jpe?g|gif|png)$</TT -></DT -><DD -><P -> This is very much the same as above, except now it must end in either - <SPAN -CLASS="QUOTE" ->".jpg"</SPAN ->, <SPAN -CLASS="QUOTE" ->".jpeg"</SPAN ->, <SPAN -CLASS="QUOTE" ->".gif"</SPAN -> or <SPAN -CLASS="QUOTE" ->".png"</SPAN ->. So this - one is limited to common image formats. - </P -></DD -></DL -></DIV -><P -> There are many, many good examples to be found in <TT -CLASS="FILENAME" ->default.action</TT ->, - and more tutorials below in <A -HREF="appendix.html#REGEX" ->Appendix on regular expressions</A ->.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="TAG-PATTERN" ->8.4.3. The Tag Pattern</A -></H3 -><P -> Tag patterns are used to change the applying actions based on the - request's tags. Tags can be created with either the - <A -HREF="actions-file.html#CLIENT-HEADER-TAGGER" ->client-header-tagger</A -> - or the <A -HREF="actions-file.html#SERVER-HEADER-TAGGER" ->server-header-tagger</A -> action.</P -><P -> Tag patterns have to start with <SPAN -CLASS="QUOTE" ->"TAG:"</SPAN ->, so <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - can tell them apart from URL patterns. Everything after the colon - including white space, is interpreted as a regular expression with - path pattern syntax, except that tag patterns aren't left-anchored - automatically (<SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> doesn't silently add a <SPAN -CLASS="QUOTE" ->"^"</SPAN ->, - you have to do it yourself if you need it).</P -><P -> To match all requests that are tagged with <SPAN -CLASS="QUOTE" ->"foo"</SPAN -> - your pattern line should be <SPAN -CLASS="QUOTE" ->"TAG:^foo$"</SPAN ->, - <SPAN -CLASS="QUOTE" ->"TAG:foo"</SPAN -> would work as well, but it would also - match requests whose tags contain <SPAN -CLASS="QUOTE" ->"foo"</SPAN -> somewhere. - <SPAN -CLASS="QUOTE" ->"TAG: foo"</SPAN -> wouldn't work as it requires white space.</P -><P -> Sections can contain URL and tag patterns at the same time, - but tag patterns are checked after the URL patterns and thus - always overrule them, even if they are located before the URL patterns.</P -><P -> Once a new tag is added, Privoxy checks right away if it's matched by one - of the tag patterns and updates the action settings accordingly. As a result - tags can be used to activate other tagger actions, as long as these other - taggers look for headers that haven't already be parsed.</P -><P -> For example you could tag client requests which use the - <TT -CLASS="LITERAL" ->POST</TT -> method, - then use this tag to activate another tagger that adds a tag if cookies - are sent, and then use a block action based on the cookie tag. This allows - the outcome of one action, to be input into a subsequent action. However if - you'd reverse the position of the described taggers, and activated the - method tagger based on the cookie tagger, no method tags would be created. - The method tagger would look for the request line, but at the time - the cookie tag is created, the request line has already been parsed.</P -><P -> While this is a limitation you should be aware of, this kind of - indirection is seldom needed anyway and even the example doesn't - make too much sense.</P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="ACTIONS" ->8.5. Actions</A -></H2 -><P -> All actions are disabled by default, until they are explicitly enabled - somewhere in an actions file. Actions are turned on if preceded with a - <SPAN -CLASS="QUOTE" ->"+"</SPAN ->, and turned off if preceded with a <SPAN -CLASS="QUOTE" ->"-"</SPAN ->. So a - <TT -CLASS="LITERAL" ->+action</TT -> means <SPAN -CLASS="QUOTE" ->"do that action"</SPAN ->, e.g. - <TT -CLASS="LITERAL" ->+block</TT -> means <SPAN -CLASS="QUOTE" ->"please block URLs that match the - following patterns"</SPAN ->, and <TT -CLASS="LITERAL" ->-block</TT -> means <SPAN -CLASS="QUOTE" ->"don't - block URLs that match the following patterns, even if <TT -CLASS="LITERAL" ->+block</TT -> - previously applied."</SPAN -> </P -><P -> - Again, actions are invoked by placing them on a line, enclosed in curly braces and - separated by whitespace, like in - <TT -CLASS="LITERAL" ->{+some-action -some-other-action{some-parameter}}</TT ->, - followed by a list of URL patterns, one per line, to which they apply. - Together, the actions line and the following pattern lines make up a section - of the actions file. </P -><P -> - Actions fall into three categories:</P -><P -> <P -></P -><UL -><LI -><P -> - Boolean, i.e the action can only be <SPAN -CLASS="QUOTE" ->"enabled"</SPAN -> or - <SPAN -CLASS="QUOTE" ->"disabled"</SPAN ->. Syntax: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> +<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT -> # enable action <TT -CLASS="REPLACEABLE" -><I ->name</I -></TT -> - -<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT -> # disable action <TT -CLASS="REPLACEABLE" -><I ->name</I -></TT -></PRE -></TD -></TR -></TABLE -> - </P -><P -> - Example: <TT -CLASS="LITERAL" ->+handle-as-image</TT -> - </P -></LI -><LI -><P -> - Parameterized, where some value is required in order to enable this type of action. - Syntax: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> +<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT ->{<TT -CLASS="REPLACEABLE" -><I ->param</I -></TT ->} # enable action and set parameter to <TT -CLASS="REPLACEABLE" -><I ->param</I -></TT ->, + .example.com/images/ads/ +</pre> + </td> + </tr> + </table> + + <p> + You can trace this process for URL patterns and any given URL by + visiting <a href="http://config.privoxy.org/show-url-info" target= + "_top">http://config.privoxy.org/show-url-info</a>. + </p> + <p> + Examples and more detail on this is provided in the Appendix, <a + href="appendix.html#ACTIONSANAT">Troubleshooting: Anatomy of an + Action</a> section. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AF-PATTERNS">8.4. Patterns</a> + </h2> + <p> + As mentioned, <span class="APPLICATION">Privoxy</span> uses <span + class="QUOTE">"patterns"</span> to determine what <span class= + "emphasis"><i class="EMPHASIS">actions</i></span> might apply to + which sites and pages your browser attempts to access. These <span + class="QUOTE">"patterns"</span> use wild card type <span class= + "emphasis"><i class="EMPHASIS">pattern</i></span> matching to + achieve a high degree of flexibility. This allows one expression to + be expanded and potentially match against many similar patterns. + </p> + <p> + Generally, an URL pattern has the form <tt class= + "LITERAL"><domain><port>/<path></tt>, where the + <tt class="LITERAL"><domain></tt>, the <tt class= + "LITERAL"><port></tt> and the <tt class= + "LITERAL"><path></tt> are optional. (This is why the special + <tt class="LITERAL">/</tt> pattern matches all URLs). Note that the + protocol portion of the URL pattern (e.g. <tt class= + "LITERAL">http://</tt>) should <span class="emphasis"><i class= + "EMPHASIS">not</i></span> be included in the pattern. This is + assumed already! + </p> + <p> + 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 <a href= + "http://en.wikipedia.org/wiki/Regular_expressions" target= + "_top"><span class="QUOTE">"Regular Expressions"</span></a> (POSIX + 1003.2). + </p> + <p> + The port part of a pattern is a decimal port number preceded by a + colon (<tt class="LITERAL">:</tt>). If the domain part contains a + numerical IPv6 address, it has to be put into angle brackets (<tt + class="LITERAL"><</tt>, <tt class="LITERAL">></tt>). + </p> + <div class="VARIABLELIST"> + <dl> + <dt> + <tt class="LITERAL">www.example.com/</tt> + </dt> + <dd> + <p> + is a domain-only pattern and will match any request to <tt + class="LITERAL">www.example.com</tt>, regardless of which + document on that server is requested. So ALL pages in this + domain would be covered by the scope of this action. Note + that a simple <tt class="LITERAL">example.com</tt> is + different and would NOT match. + </p> + </dd> + <dt> + <tt class="LITERAL">www.example.com</tt> + </dt> + <dd> + <p> + means exactly the same. For domain-only patterns, the + trailing <tt class="LITERAL">/</tt> may be omitted. + </p> + </dd> + <dt> + <tt class="LITERAL">www.example.com/index.html</tt> + </dt> + <dd> + <p> + matches all the documents on <tt class= + "LITERAL">www.example.com</tt> whose name starts with <tt + class="LITERAL">/index.html</tt>. + </p> + </dd> + <dt> + <tt class="LITERAL">www.example.com/index.html$</tt> + </dt> + <dd> + <p> + matches only the single document <tt class= + "LITERAL">/index.html</tt> on <tt class= + "LITERAL">www.example.com</tt>. + </p> + </dd> + <dt> + <tt class="LITERAL">/index.html$</tt> + </dt> + <dd> + <p> + matches the document <tt class="LITERAL">/index.html</tt>, + regardless of the domain, i.e. on <span class="emphasis"><i + class="EMPHASIS">any</i></span> web server anywhere. + </p> + </dd> + <dt> + <tt class="LITERAL">/</tt> + </dt> + <dd> + <p> + Matches any URL because there's no requirement for either the + domain or the path to match anything. + </p> + </dd> + <dt> + <tt class="LITERAL">:8000/</tt> + </dt> + <dd> + <p> + Matches any URL pointing to TCP port 8000. + </p> + </dd> + <dt> + <tt class="LITERAL"><2001:db8::1>/</tt> + </dt> + <dd> + <p> + Matches any URL with the host address <tt class= + "LITERAL">2001:db8::1</tt>. (Note that the real URL uses + plain brackets, not angle brackets.) + </p> + </dd> + <dt> + <tt class="LITERAL">index.html</tt> + </dt> + <dd> + <p> + matches nothing, since it would be interpreted as a domain + name and there is no top-level domain called <tt class= + "LITERAL">.html</tt>. So its a mistake. + </p> + </dd> + </dl> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="AEN2843">8.4.1. The Domain Pattern</a> + </h3> + <p> + 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: + </p> + <div class="VARIABLELIST"> + <dl> + <dt> + <tt class="LITERAL">.example.com</tt> + </dt> + <dd> + <p> + matches any domain with first-level domain <tt class= + "LITERAL">com</tt> and second-level domain <tt class= + "LITERAL">example</tt>. For example <tt class= + "LITERAL">www.example.com</tt>, <tt class= + "LITERAL">example.com</tt> and <tt class= + "LITERAL">foo.bar.baz.example.com</tt>. Note that it + wouldn't match if the second-level domain was <tt class= + "LITERAL">another-example</tt>. + </p> + </dd> + <dt> + <tt class="LITERAL">www.</tt> + </dt> + <dd> + <p> + matches any domain that <span class="emphasis"><i class= + "EMPHASIS">STARTS</i></span> with <tt class= + "LITERAL">www.</tt> (It also matches the domain <tt class= + "LITERAL">www</tt> but most of the time that doesn't + matter.) + </p> + </dd> + <dt> + <tt class="LITERAL">.example.</tt> + </dt> + <dd> + <p> + matches any domain that <span class="emphasis"><i class= + "EMPHASIS">CONTAINS</i></span> <tt class= + "LITERAL">.example.</tt>. And, by the way, also included + would be any files or documents that exist within that + domain since no path limitations are specified. (Correctly + speaking: It matches any FQDN that contains <tt class= + "LITERAL">example</tt> as a domain.) This might be <tt + class="LITERAL">www.example.com</tt>, <tt class= + "LITERAL">news.example.de</tt>, or <tt class= + "LITERAL">www.example.net/cgi/testing.pl</tt> for instance. + All these cases are matched. + </p> + </dd> + </dl> + </div> + <p> + Additionally, there are wild-cards that you can use in the domain + names themselves. These work similarly to shell globbing type + wild-cards: <span class="QUOTE">"*"</span> represents zero or + more arbitrary characters (this is equivalent to the <a href= + "http://en.wikipedia.org/wiki/Regular_expressions" target= + "_top"><span class="QUOTE">"Regular Expression"</span></a> based + syntax of <span class="QUOTE">".*"</span>), <span class= + "QUOTE">"?"</span> represents any single character (this is + equivalent to the regular expression syntax of a simple <span + class="QUOTE">"."</span>), and you can define <span class= + "QUOTE">"character classes"</span> in square brackets which is + similar to the same regular expression technique. All of this can + be freely mixed: + </p> + <div class="VARIABLELIST"> + <dl> + <dt> + <tt class="LITERAL">ad*.example.com</tt> + </dt> + <dd> + <p> + matches <span class="QUOTE">"adserver.example.com"</span>, + <span class="QUOTE">"ads.example.com"</span>, etc but not + <span class="QUOTE">"sfads.example.com"</span> + </p> + </dd> + <dt> + <tt class="LITERAL">*ad*.example.com</tt> + </dt> + <dd> + <p> + matches all of the above, and then some. + </p> + </dd> + <dt> + <tt class="LITERAL">.?pix.com</tt> + </dt> + <dd> + <p> + matches <tt class="LITERAL">www.ipix.com</tt>, <tt class= + "LITERAL">pictures.epix.com</tt>, <tt class= + "LITERAL">a.b.c.d.e.upix.com</tt> etc. + </p> + </dd> + <dt> + <tt class="LITERAL">www[1-9a-ez].example.c*</tt> + </dt> + <dd> + <p> + matches <tt class="LITERAL">www1.example.com</tt>, <tt + class="LITERAL">www4.example.cc</tt>, <tt class= + "LITERAL">wwwd.example.cy</tt>, <tt class= + "LITERAL">wwwz.example.com</tt> etc., but <span class= + "emphasis"><i class="EMPHASIS">not</i></span> <tt class= + "LITERAL">wwww.example.com</tt>. + </p> + </dd> + </dl> + </div> + <p> + While flexible, this is not the sophistication of full regular + expression based syntax. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="AEN2919">8.4.2. The Path Pattern</a> + </h3> + <p> + <span class="APPLICATION">Privoxy</span> uses <span class= + "QUOTE">"modern"</span> POSIX 1003.2 <a href= + "http://en.wikipedia.org/wiki/Regular_expressions" target= + "_top"><span class="QUOTE">"Regular Expressions"</span></a> for + matching the path portion (after the slash), and is thus more + flexible. + </p> + <p> + There is an <a href="appendix.html#REGEX">Appendix</a> with a + brief quick-start into regular expressions, you also might want + to have a look at your operating system's documentation on + regular expressions (try <tt class="LITERAL">man re_format</tt>). + </p> + <p> + Note that the path pattern is automatically left-anchored at the + <span class="QUOTE">"/"</span>, i.e. it matches as if it would + start with a <span class="QUOTE">"^"</span> (regular expression + speak for the beginning of a line). + </p> + <p> + Please also note that matching in the path is <span class= + "emphasis"><i class="EMPHASIS">CASE INSENSITIVE</i></span> by + default, but you can switch to case sensitive at any point in the + pattern by using the <span class="QUOTE">"(?-i)"</span> switch: + <tt class="LITERAL">www.example.com/(?-i)PaTtErN.*</tt> will + match only documents whose path starts with <tt class= + "LITERAL">PaTtErN</tt> in <span class="emphasis"><i class= + "EMPHASIS">exactly</i></span> this capitalization. + </p> + <div class="VARIABLELIST"> + <dl> + <dt> + <tt class="LITERAL">.example.com/.*</tt> + </dt> + <dd> + <p> + Is equivalent to just <span class= + "QUOTE">".example.com"</span>, since any documents within + that domain are matched with or without the <span class= + "QUOTE">".*"</span> regular expression. This is redundant + </p> + </dd> + <dt> + <tt class="LITERAL">.example.com/.*/index.html$</tt> + </dt> + <dd> + <p> + Will match any page in the domain of <span class= + "QUOTE">"example.com"</span> that is named <span class= + "QUOTE">"index.html"</span>, and that is part of some path. + For example, it matches <span class= + "QUOTE">"www.example.com/testing/index.html"</span> but NOT + <span class="QUOTE">"www.example.com/index.html"</span> + because the regular expression called for at least two + <span class="QUOTE">"/'s"</span>, thus the path + requirement. It also would match <span class= + "QUOTE">"www.example.com/testing/index_html"</span>, + because of the special meta-character <span class= + "QUOTE">"."</span>. + </p> + </dd> + <dt> + <tt class="LITERAL">.example.com/(.*/)?index\.html$</tt> + </dt> + <dd> + <p> + This regular expression is conditional so it will match any + page named <span class="QUOTE">"index.html"</span> + regardless of path which in this case can have one or more + <span class="QUOTE">"/'s"</span>. And this one must contain + exactly <span class="QUOTE">".html"</span> (but does not + have to end with that!). + </p> + </dd> + <dt> + <tt class= + "LITERAL">.example.com/(.*/)(ads|banners?|junk)</tt> + </dt> + <dd> + <p> + This regular expression will match any path of <span class= + "QUOTE">"example.com"</span> that contains any of the words + <span class="QUOTE">"ads"</span>, <span class= + "QUOTE">"banner"</span>, <span class= + "QUOTE">"banners"</span> (because of the <span class= + "QUOTE">"?"</span>) or <span class="QUOTE">"junk"</span>. + The path does not have to end in these words, just contain + them. + </p> + </dd> + <dt> + <tt class= + "LITERAL">.example.com/(.*/)(ads|banners?|junk)/.*\.(jpe?g|gif|png)$</tt> + </dt> + <dd> + <p> + This is very much the same as above, except now it must end + in either <span class="QUOTE">".jpg"</span>, <span class= + "QUOTE">".jpeg"</span>, <span class="QUOTE">".gif"</span> + or <span class="QUOTE">".png"</span>. So this one is + limited to common image formats. + </p> + </dd> + </dl> + </div> + <p> + There are many, many good examples to be found in <tt class= + "FILENAME">default.action</tt>, and more tutorials below in <a + href="appendix.html#REGEX">Appendix on regular expressions</a>. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="TAG-PATTERN">8.4.3. The Tag Pattern</a> + </h3> + <p> + Tag patterns are used to change the applying actions based on the + request's tags. Tags can be created with either the <a href= + "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a> + or the <a href= + "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a> + action. + </p> + <p> + Tag patterns have to start with <span class= + "QUOTE">"TAG:"</span>, so <span class= + "APPLICATION">Privoxy</span> can tell them apart from URL + patterns. Everything after the colon including white space, is + interpreted as a regular expression with path pattern syntax, + except that tag patterns aren't left-anchored automatically + (<span class="APPLICATION">Privoxy</span> doesn't silently add a + <span class="QUOTE">"^"</span>, you have to do it yourself if you + need it). + </p> + <p> + To match all requests that are tagged with <span class= + "QUOTE">"foo"</span> your pattern line should be <span class= + "QUOTE">"TAG:^foo$"</span>, <span class="QUOTE">"TAG:foo"</span> + would work as well, but it would also match requests whose tags + contain <span class="QUOTE">"foo"</span> somewhere. <span class= + "QUOTE">"TAG: foo"</span> wouldn't work as it requires white + space. + </p> + <p> + Sections can contain URL and tag patterns at the same time, but + tag patterns are checked after the URL patterns and thus always + overrule them, even if they are located before the URL patterns. + </p> + <p> + Once a new tag is added, Privoxy checks right away if it's + matched by one of the tag patterns and updates the action + settings accordingly. As a result tags can be used to activate + other tagger actions, as long as these other taggers look for + headers that haven't already be parsed. + </p> + <p> + For example you could tag client requests which use the <tt + class="LITERAL">POST</tt> method, then use this tag to activate + another tagger that adds a tag if cookies are sent, and then use + a block action based on the cookie tag. This allows the outcome + of one action, to be input into a subsequent action. However if + you'd reverse the position of the described taggers, and + activated the method tagger based on the cookie tagger, no method + tags would be created. The method tagger would look for the + request line, but at the time the cookie tag is created, the + request line has already been parsed. + </p> + <p> + While this is a limitation you should be aware of, this kind of + indirection is seldom needed anyway and even the example doesn't + make too much sense. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="ACTIONS">8.5. Actions</a> + </h2> + <p> + All actions are disabled by default, until they are explicitly + enabled somewhere in an actions file. Actions are turned on if + preceded with a <span class="QUOTE">"+"</span>, and turned off if + preceded with a <span class="QUOTE">"-"</span>. So a <tt class= + "LITERAL">+action</tt> means <span class="QUOTE">"do that + action"</span>, e.g. <tt class="LITERAL">+block</tt> means <span + class="QUOTE">"please block URLs that match the following + patterns"</span>, and <tt class="LITERAL">-block</tt> means <span + class="QUOTE">"don't block URLs that match the following patterns, + even if <tt class="LITERAL">+block</tt> previously + applied."</span> + </p> + <p> + Again, actions are invoked by placing them on a line, enclosed in + curly braces and separated by whitespace, like in <tt class= + "LITERAL">{+some-action -some-other-action{some-parameter}}</tt>, + followed by a list of URL patterns, one per line, to which they + apply. Together, the actions line and the following pattern lines + make up a section of the actions file. + </p> + <p> + Actions fall into three categories: + </p> + <p> + </p> + <ul> + <li> + <p> + Boolean, i.e the action can only be <span class= + "QUOTE">"enabled"</span> or <span class= + "QUOTE">"disabled"</span>. Syntax: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + +<tt class="REPLACEABLE"><i>name</i></tt> # enable action <tt class= +"REPLACEABLE"><i>name</i></tt> + -<tt class="REPLACEABLE"><i>name</i></tt> # disable action <tt +class="REPLACEABLE"><i>name</i></tt> +</pre> + </td> + </tr> + </table> + + <p> + Example: <tt class="LITERAL">+handle-as-image</tt> + </p> + </li> + <li> + <p> + Parameterized, where some value is required in order to enable + this type of action. Syntax: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + +<tt class="REPLACEABLE"><i>name</i></tt>{<tt class= +"REPLACEABLE"><i>param</i></tt>} # enable action and set parameter to <tt +class="REPLACEABLE"><i>param</i></tt>, # overwriting parameter from previous match if necessary - -<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT -> # disable action. The parameter can be omitted</PRE -></TD -></TR -></TABLE -> - </P -><P -> Note that if the URL matches multiple positive forms of a parameterized action, - the last match wins, i.e. the params from earlier matches are simply ignored. - </P -><P -> - Example: <TT -CLASS="LITERAL" ->+hide-user-agent{Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.4) Gecko/20070602 Firefox/2.0.0.4}</TT -> - </P -></LI -><LI -><P -> - Multi-value. These look exactly like parameterized actions, - but they behave differently: If the action applies multiple times to the - same URL, but with different parameters, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> the parameters - from <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> matches are remembered. This is used for actions - that can be executed for the same request repeatedly, like adding multiple - headers, or filtering through multiple filters. Syntax: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> +<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT ->{<TT -CLASS="REPLACEABLE" -><I ->param</I -></TT ->} # enable action and add <TT -CLASS="REPLACEABLE" -><I ->param</I -></TT -> to the list of parameters - -<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT ->{<TT -CLASS="REPLACEABLE" -><I ->param</I -></TT ->} # remove the parameter <TT -CLASS="REPLACEABLE" -><I ->param</I -></TT -> from the list of parameters + -<tt class= +"REPLACEABLE"><i>name</i></tt> # disable action. The parameter can be omitted +</pre> + </td> + </tr> + </table> + + <p> + Note that if the URL matches multiple positive forms of a + parameterized action, the last match wins, i.e. the params from + earlier matches are simply ignored. + </p> + <p> + Example: <tt class="LITERAL">+hide-user-agent{Mozilla/5.0 (X11; + U; FreeBSD i386; en-US; rv:1.8.1.4) Gecko/20070602 + Firefox/2.0.0.4}</tt> + </p> + </li> + <li> + <p> + Multi-value. These look exactly like parameterized actions, but + they behave differently: If the action applies multiple times + to the same URL, but with different parameters, <span class= + "emphasis"><i class="EMPHASIS">all</i></span> the parameters + from <span class="emphasis"><i class="EMPHASIS">all</i></span> + matches are remembered. This is used for actions that can be + executed for the same request repeatedly, like adding multiple + headers, or filtering through multiple filters. Syntax: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + +<tt class="REPLACEABLE"><i>name</i></tt>{<tt class= +"REPLACEABLE"><i>param</i></tt>} # enable action and add <tt class= +"REPLACEABLE"><i>param</i></tt> to the list of parameters + -<tt class="REPLACEABLE"><i>name</i></tt>{<tt class= +"REPLACEABLE"><i>param</i></tt>} # remove the parameter <tt class= +"REPLACEABLE"><i>param</i></tt> from the list of parameters # If it was the last one left, disable the action. - <TT -CLASS="REPLACEABLE" -><I ->-name</I -></TT -> # disable this action completely and remove all parameters from the list</PRE -></TD -></TR -></TABLE -> - </P -><P -> - Examples: <TT -CLASS="LITERAL" ->+add-header{X-Fun-Header: Some text}</TT -> and - <TT -CLASS="LITERAL" ->+filter{html-annoyances}</TT -> - </P -></LI -></UL -></P -><P -> If nothing is specified in any actions file, no <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> are - taken. So in this case <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> would just be a - normal, non-blocking, non-filtering proxy. You must specifically enable the - privacy and blocking features you need (although the provided default actions - files will give a good starting point).</P -><P -> Later defined action sections always over-ride earlier ones of the same type. - 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 such - as <TT -CLASS="FILENAME" ->user.action</TT ->). 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 <TT -CLASS="FILENAME" ->config</TT -> (the default - installation has three actions files). It also quite possible for any given - URL to match more than one <SPAN -CLASS="QUOTE" ->"pattern"</SPAN -> (because of wildcards and - regular expressions), and thus to trigger more than one set of actions! Last - match wins.</P -><P -> The list of valid <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> actions are:</P -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ADD-HEADER" ->8.5.1. add-header</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Confuse log analysis, custom applications</P -></DD -><DT ->Effect:</DT -><DD -><P -> Sends a user defined HTTP header to the web server. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Multi-value.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Any string value is possible. Validity of the defined HTTP headers is not checked. - It is recommended that you use the <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->X-</TT ->"</SPAN -> prefix - for custom headers. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> 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 - <SPAN -CLASS="QUOTE" ->"HTTP headers"</SPAN -> are, you definitely don't need to worry about this - one. - </P -><P -> Headers added by this action are not modified by other actions. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+add-header{X-User-Tracking: sucks}</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="BLOCK" ->8.5.2. block</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Block ads or other unwanted content</P -></DD -><DT ->Effect:</DT -><DD -><P -> Requests for URLs to which this action applies are blocked, i.e. the - requests are trapped by <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and the requested URL is never retrieved, - but is answered locally with a substitute page or image, as determined by - the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></TT ->, - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker</A -></TT ->, and - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" ->handle-as-empty-document</A -></TT -> actions. - - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P ->A block reason that should be given to the user.</P -></DD -><DT ->Notes:</DT -><DD -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> sends a special <SPAN -CLASS="QUOTE" ->"BLOCKED"</SPAN -> page - for requests to blocked pages. This page contains the block reason given as - parameter, a link to find out why the block action applies, and a click-through - to the blocked content (the latter only if the force feature is available and - enabled). - </P -><P -> - A very important exception occurs if <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->both</I -></SPAN -> - <TT -CLASS="LITERAL" ->block</TT -> and <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></TT ->, - apply to the same request: it will then be replaced by an image. If - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker</A -></TT -> - (see below) also applies, the type of image will be determined by its parameter, - if not, the standard checkerboard pattern is sent. - </P -><P -> It is important to understand this process, in order - to understand how <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> deals with - ads and other unwanted content. Blocking is a core feature, and one - upon which various other features depend. - </P -><P -> The <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->filter</A -></TT -> - action can perform a very similar task, by <SPAN -CLASS="QUOTE" ->"blocking"</SPAN -> - banner images and other content through rewriting the relevant URLs in the - document's HTML source, so they don't get requested in the first place. - Note that this is a totally different technique, and it's easy to confuse the two. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{+block{No nasty stuff for you.}} + <tt class= +"REPLACEABLE"><i>-name</i></tt> # disable this action completely and remove all parameters from the list +</pre> + </td> + </tr> + </table> + + <p> + Examples: <tt class="LITERAL">+add-header{X-Fun-Header: Some + text}</tt> and <tt class= + "LITERAL">+filter{html-annoyances}</tt> + </p> + </li> + </ul> + + <p> + If nothing is specified in any actions file, no <span class= + "QUOTE">"actions"</span> are taken. So in this case <span class= + "APPLICATION">Privoxy</span> would just be a normal, non-blocking, + non-filtering proxy. You must specifically enable the privacy and + blocking features you need (although the provided default actions + files will give a good starting point). + </p> + <p> + Later defined action sections always over-ride earlier ones of the + same type. 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 such as <tt class= + "FILENAME">user.action</tt>). 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 <tt class= + "FILENAME">config</tt> (the default installation has three actions + files). It also quite possible for any given URL to match more than + one <span class="QUOTE">"pattern"</span> (because of wildcards and + regular expressions), and thus to trigger more than one set of + actions! Last match wins. + </p> + <p> + The list of valid <span class="APPLICATION">Privoxy</span> actions + are: + </p> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ADD-HEADER">8.5.1. add-header</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Confuse log analysis, custom applications + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Sends a user defined HTTP header to the web server. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Multi-value. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Any string value is possible. Validity of the defined HTTP + headers is not checked. It is recommended that you use the + <span class="QUOTE">"<tt class="LITERAL">X-</tt>"</span> + prefix for custom headers. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + 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 <span class= + "QUOTE">"HTTP headers"</span> are, you definitely don't + need to worry about this one. + </p> + <p> + Headers added by this action are not modified by other + actions. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++add-header{X-User-Tracking: sucks} +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="BLOCK">8.5.2. block</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Block ads or other unwanted content + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Requests for URLs to which this action applies are blocked, + i.e. the requests are trapped by <span class= + "APPLICATION">Privoxy</span> and the requested URL is never + retrieved, but is answered locally with a substitute page + or image, as determined by the <tt class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>, + <tt class="LITERAL"><a href= + "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>, + and <tt class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt> + actions. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + A block reason that should be given to the user. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + <span class="APPLICATION">Privoxy</span> sends a special + <span class="QUOTE">"BLOCKED"</span> page for requests to + blocked pages. This page contains the block reason given as + parameter, a link to find out why the block action applies, + and a click-through to the blocked content (the latter only + if the force feature is available and enabled). + </p> + <p> + A very important exception occurs if <span class= + "emphasis"><i class="EMPHASIS">both</i></span> <tt class= + "LITERAL">block</tt> and <tt class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>, + apply to the same request: it will then be replaced by an + image. If <tt class="LITERAL"><a href= + "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> + (see below) also applies, the type of image will be + determined by its parameter, if not, the standard + checkerboard pattern is sent. + </p> + <p> + It is important to understand this process, in order to + understand how <span class="APPLICATION">Privoxy</span> + deals with ads and other unwanted content. Blocking is a + core feature, and one upon which various other features + depend. + </p> + <p> + The <tt class="LITERAL"><a href= + "actions-file.html#FILTER">filter</a></tt> action can + perform a very similar task, by <span class= + "QUOTE">"blocking"</span> banner images and other content + through rewriting the relevant URLs in the document's HTML + source, so they don't get requested in the first place. + Note that this is a totally different technique, and it's + easy to confuse the two. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +{+block{No nasty stuff for you.}} # Block and replace with "blocked" page .nasty-stuff.example.com -{+block{Doubleclick banners.} +handle-as-image} +{+block{Doubleclick banners.} +handle-as-image} # Block and replace with image .ad.doubleclick.net .ads.r.us/banners/ -{+block{Layered ads.} +handle-as-empty-document} +{+block{Layered ads.} +handle-as-empty-document} # Block and then ignore - adserver.example.net/.*\.js$</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CHANGE-X-FORWARDED-FOR" ->8.5.3. change-x-forwarded-for</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Improve privacy by not forwarding the source of the request in the HTTP headers.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes the <SPAN -CLASS="QUOTE" ->"X-Forwarded-For:"</SPAN -> HTTP header from the client request, - or adds a new one. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -></P -><UL -><LI -><P -><SPAN -CLASS="QUOTE" ->"block"</SPAN -> to delete the header.</P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"add"</SPAN -> to create the header (or append - the client's IP address to an already existing one). - </P -></LI -></UL -></DD -><DT ->Notes:</DT -><DD -><P -> It is safe and recommended to use <TT -CLASS="LITERAL" ->block</TT ->. - </P -><P -> Forwarding the source address of the request may make - sense in some multi-user setups but is also a privacy risk. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+change-x-forwarded-for{block}</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CLIENT-HEADER-FILTER" ->8.5.4. client-header-filter</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Rewrite or remove single client headers. - </P -></DD -><DT ->Effect:</DT -><DD -><P -> All client headers to which this action applies are filtered on-the-fly through - the specified regular expression based substitutions. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> The name of a client-header filter, as defined in one of the - <A -HREF="filter-file.html" ->filter files</A ->. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Client-header filters are applied to each header on its own, not to - all at once. This makes it easier to diagnose problems, but on the downside - you can't write filters that only change header x if header y's value is z. - You can do that by using tags though. - </P -><P -> Client-header filters are executed after the other header actions have finished - and use their output as input. - </P -><P -> If the request URL gets changed, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will detect that and use the new - one. This can be used to rewrite the request destination behind the client's - back, for example to specify a Tor exit relay for certain requests. - </P -><P -> Please refer to the <A -HREF="filter-file.html" ->filter file chapter</A -> - to learn which client-header filters are available by default, and how to - create your own. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Hide Tor exit notation in Host and Referer Headers + adserver.example.net/.*\.js$ +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CHANGE-X-FORWARDED-FOR">8.5.3. + change-x-forwarded-for</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Improve privacy by not forwarding the source of the request + in the HTTP headers. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes the <span class="QUOTE">"X-Forwarded-For:"</span> + HTTP header from the client request, or adds a new one. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <ul> + <li> + <p> + <span class="QUOTE">"block"</span> to delete the + header. + </p> + </li> + <li> + <p> + <span class="QUOTE">"add"</span> to create the header + (or append the client's IP address to an already + existing one). + </p> + </li> + </ul> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + It is safe and recommended to use <tt class= + "LITERAL">block</tt>. + </p> + <p> + Forwarding the source address of the request may make sense + in some multi-user setups but is also a privacy risk. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++change-x-forwarded-for{block} +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CLIENT-HEADER-FILTER">8.5.4. client-header-filter</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Rewrite or remove single client headers. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + All client headers to which this action applies are + filtered on-the-fly through the specified regular + expression based substitutions. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + The name of a client-header filter, as defined in one of + the <a href="filter-file.html">filter files</a>. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Client-header filters are applied to each header on its + own, not to all at once. This makes it easier to diagnose + problems, but on the downside you can't write filters that + only change header x if header y's value is z. You can do + that by using tags though. + </p> + <p> + Client-header filters are executed after the other header + actions have finished and use their output as input. + </p> + <p> + If the request URL gets changed, <span class= + "APPLICATION">Privoxy</span> will detect that and use the + new one. This can be used to rewrite the request + destination behind the client's back, for example to + specify a Tor exit relay for certain requests. + </p> + <p> + Please refer to the <a href="filter-file.html">filter file + chapter</a> to learn which client-header filters are + available by default, and how to create your own. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Hide Tor exit notation in Host and Referer Headers {+client-header-filter{hide-tor-exit-notation}} / - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CLIENT-HEADER-TAGGER" ->8.5.5. client-header-tagger</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Block requests based on their headers. - </P -></DD -><DT ->Effect:</DT -><DD -><P -> Client headers to which this action applies are filtered on-the-fly through - the specified regular expression based substitutions, the result is used as - tag. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> The name of a client-header tagger, as defined in one of the - <A -HREF="filter-file.html" ->filter files</A ->. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Client-header taggers are applied to each header on its own, - and as the header isn't modified, each tagger <SPAN -CLASS="QUOTE" ->"sees"</SPAN -> - the original. - </P -><P -> Client-header taggers are the first actions that are executed - and their tags can be used to control every other action. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Tag every request with the User-Agent header + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CLIENT-HEADER-TAGGER">8.5.5. client-header-tagger</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Block requests based on their headers. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Client headers to which this action applies are filtered + on-the-fly through the specified regular expression based + substitutions, the result is used as tag. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + The name of a client-header tagger, as defined in one of + the <a href="filter-file.html">filter files</a>. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Client-header taggers are applied to each header on its + own, and as the header isn't modified, each tagger <span + class="QUOTE">"sees"</span> the original. + </p> + <p> + Client-header taggers are the first actions that are + executed and their tags can be used to control every other + action. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Tag every request with the User-Agent header {+client-header-tagger{user-agent}} / @@ -2309,2180 +1570,1632 @@ TAG:^User-Agent: RPM APT-HTTP/ TAG:^User-Agent: fetch libfetch/ TAG:^User-Agent: Ubuntu APT-HTTP/ TAG:^User-Agent: MPlayer/ - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CONTENT-TYPE-OVERWRITE" ->8.5.6. content-type-overwrite</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Stop useless download menus from popping up, or change the browser's rendering mode</P -></DD -><DT ->Effect:</DT -><DD -><P -> Replaces the <SPAN -CLASS="QUOTE" ->"Content-Type:"</SPAN -> HTTP server header. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Any string. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> The <SPAN -CLASS="QUOTE" ->"Content-Type:"</SPAN -> HTTP server header is used by the - browser to decide what to do with the document. The value of this - header can cause the browser to open a download menu instead of - displaying the document by itself, even if the document's format is - supported by the browser. - </P -><P -> The declared content type can also affect which rendering mode - the browser chooses. If XHTML is delivered as <SPAN -CLASS="QUOTE" ->"text/html"</SPAN ->, - many browsers treat it as yet another broken HTML document. - If it is send as <SPAN -CLASS="QUOTE" ->"application/xml"</SPAN ->, browsers with - XHTML support will only display it, if the syntax is correct. - </P -><P -> If you see a web site that proudly uses XHTML buttons, but sets - <SPAN -CLASS="QUOTE" ->"Content-Type: text/html"</SPAN ->, you can use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - to overwrite it with <SPAN -CLASS="QUOTE" ->"application/xml"</SPAN -> and validate - the web master's claim inside your XHTML-supporting browser. - If the syntax is incorrect, the browser will complain loudly. - </P -><P -> You can also go the opposite direction: if your browser prints - error messages instead of rendering a document falsely declared - as XHTML, you can overwrite the content type with - <SPAN -CLASS="QUOTE" ->"text/html"</SPAN -> and have it rendered as broken HTML document. - </P -><P -> By default <TT -CLASS="LITERAL" ->content-type-overwrite</TT -> only replaces - <SPAN -CLASS="QUOTE" ->"Content-Type:"</SPAN -> headers that look like some kind of text. - If you want to overwrite it unconditionally, you have to combine it with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FORCE-TEXT-MODE" ->force-text-mode</A -></TT ->. - This limitation exists for a reason, think twice before circumventing it. - </P -><P -> Most of the time it's easier to replace this action with a custom - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SERVER-HEADER-FILTER" ->server-header filter</A -></TT ->. - It allows you to activate it for every document of a certain site and it will still - only replace the content types you aimed at. - </P -><P -> Of course you can apply <TT -CLASS="LITERAL" ->content-type-overwrite</TT -> - to a whole site and then make URL based exceptions, but it's a lot - more work to get the same precision. - </P -></DD -><DT ->Example usage (sections):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Check if www.example.net/ really uses valid XHTML + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CONTENT-TYPE-OVERWRITE">8.5.6. + content-type-overwrite</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Stop useless download menus from popping up, or change the + browser's rendering mode + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Replaces the <span class="QUOTE">"Content-Type:"</span> + HTTP server header. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Any string. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The <span class="QUOTE">"Content-Type:"</span> HTTP server + header is used by the browser to decide what to do with the + document. The value of this header can cause the browser to + open a download menu instead of displaying the document by + itself, even if the document's format is supported by the + browser. + </p> + <p> + The declared content type can also affect which rendering + mode the browser chooses. If XHTML is delivered as <span + class="QUOTE">"text/html"</span>, many browsers treat it as + yet another broken HTML document. If it is send as <span + class="QUOTE">"application/xml"</span>, browsers with XHTML + support will only display it, if the syntax is correct. + </p> + <p> + If you see a web site that proudly uses XHTML buttons, but + sets <span class="QUOTE">"Content-Type: text/html"</span>, + you can use <span class="APPLICATION">Privoxy</span> to + overwrite it with <span class= + "QUOTE">"application/xml"</span> and validate the web + master's claim inside your XHTML-supporting browser. If the + syntax is incorrect, the browser will complain loudly. + </p> + <p> + You can also go the opposite direction: if your browser + prints error messages instead of rendering a document + falsely declared as XHTML, you can overwrite the content + type with <span class="QUOTE">"text/html"</span> and have + it rendered as broken HTML document. + </p> + <p> + By default <tt class="LITERAL">content-type-overwrite</tt> + only replaces <span class="QUOTE">"Content-Type:"</span> + headers that look like some kind of text. If you want to + overwrite it unconditionally, you have to combine it with + <tt class="LITERAL"><a href= + "actions-file.html#FORCE-TEXT-MODE">force-text-mode</a></tt>. + This limitation exists for a reason, think twice before + circumventing it. + </p> + <p> + Most of the time it's easier to replace this action with a + custom <tt class="LITERAL"><a href= + "actions-file.html#SERVER-HEADER-FILTER">server-header + filter</a></tt>. It allows you to activate it for every + document of a certain site and it will still only replace + the content types you aimed at. + </p> + <p> + Of course you can apply <tt class= + "LITERAL">content-type-overwrite</tt> to a whole site and + then make URL based exceptions, but it's a lot more work to + get the same precision. + </p> + </dd> + <dt> + Example usage (sections): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Check if www.example.net/ really uses valid XHTML { +content-type-overwrite{application/xml} } www.example.net/ # but leave the content type unmodified if the URL looks like a style sheet {-content-type-overwrite} www.example.net/.*\.css$ -www.example.net/.*style</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CRUNCH-CLIENT-HEADER" ->8.5.7. crunch-client-header</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Remove a client header <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has no dedicated action for.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes every header sent by the client that contains the string the user supplied as parameter. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Any string. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This action allows you to block client headers for which no dedicated - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> action exists. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will remove every client header that - contains the string you supplied as parameter. - </P -><P -> Regular expressions are <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not supported</I -></SPAN -> and you can't - use this action to block different headers in the same request, unless - they contain the same string. - </P -><P -> <TT -CLASS="LITERAL" ->crunch-client-header</TT -> is only meant for quick tests. - If you have to block several different headers, or only want to modify - parts of them, you should use a - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CLIENT-HEADER-FILTER" ->client-header filter</A -></TT ->. - </P -><DIV -CLASS="WARNING" -><P -></P -><TABLE -CLASS="WARNING" -BORDER="1" -WIDTH="90%" -><TR -><TD -ALIGN="CENTER" -><B ->Warning</B -></TD -></TR -><TR -><TD -ALIGN="LEFT" -><P -> Don't block any header without understanding the consequences. - </P -></TD -></TR -></TABLE -></DIV -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Block the non-existent "Privacy-Violation:" client header +www.example.net/.*style +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CRUNCH-CLIENT-HEADER">8.5.7. crunch-client-header</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Remove a client header <span class= + "APPLICATION">Privoxy</span> has no dedicated action for. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes every header sent by the client that contains the + string the user supplied as parameter. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Any string. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This action allows you to block client headers for which no + dedicated <span class="APPLICATION">Privoxy</span> action + exists. <span class="APPLICATION">Privoxy</span> will + remove every client header that contains the string you + supplied as parameter. + </p> + <p> + Regular expressions are <span class="emphasis"><i class= + "EMPHASIS">not supported</i></span> and you can't use this + action to block different headers in the same request, + unless they contain the same string. + </p> + <p> + <tt class="LITERAL">crunch-client-header</tt> is only meant + for quick tests. If you have to block several different + headers, or only want to modify parts of them, you should + use a <tt class="LITERAL"><a href= + "actions-file.html#CLIENT-HEADER-FILTER">client-header + filter</a></tt>. + </p> + <div class="WARNING"> + <table class="WARNING" border="1" width="90%"> + <tr> + <td align="CENTER"> + <b>Warning</b> + </td> + </tr> + <tr> + <td align="LEFT"> + <p> + Don't block any header without understanding the + consequences. + </p> + </td> + </tr> + </table> + </div> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Block the non-existent "Privacy-Violation:" client header { +crunch-client-header{Privacy-Violation:} } / - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CRUNCH-IF-NONE-MATCH" ->8.5.8. crunch-if-none-match</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Prevent yet another way to track the user's steps between sessions.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes the <SPAN -CLASS="QUOTE" ->"If-None-Match:"</SPAN -> HTTP client header. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Removing the <SPAN -CLASS="QUOTE" ->"If-None-Match:"</SPAN -> HTTP client header - is useful for filter testing, where you want to force a real - reload instead of getting status code <SPAN -CLASS="QUOTE" ->"304"</SPAN -> which - would cause the browser to use a cached copy of the page. - </P -><P -> It is also useful to make sure the header isn't used as a cookie - replacement (unlikely but possible). - </P -><P -> Blocking the <SPAN -CLASS="QUOTE" ->"If-None-Match:"</SPAN -> header shouldn't cause any - caching problems, as long as the <SPAN -CLASS="QUOTE" ->"If-Modified-Since:"</SPAN -> header - isn't blocked or missing as well. - </P -><P -> It is recommended to use this action together with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HIDE-IF-MODIFIED-SINCE" ->hide-if-modified-since</A -></TT -> - and - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#OVERWRITE-LAST-MODIFIED" ->overwrite-last-modified</A -></TT ->. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Let the browser revalidate cached documents but don't + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CRUNCH-IF-NONE-MATCH">8.5.8. crunch-if-none-match</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Prevent yet another way to track the user's steps between + sessions. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes the <span class="QUOTE">"If-None-Match:"</span> + HTTP client header. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Removing the <span class="QUOTE">"If-None-Match:"</span> + HTTP client header is useful for filter testing, where you + want to force a real reload instead of getting status code + <span class="QUOTE">"304"</span> which would cause the + browser to use a cached copy of the page. + </p> + <p> + It is also useful to make sure the header isn't used as a + cookie replacement (unlikely but possible). + </p> + <p> + Blocking the <span class="QUOTE">"If-None-Match:"</span> + header shouldn't cause any caching problems, as long as the + <span class="QUOTE">"If-Modified-Since:"</span> header + isn't blocked or missing as well. + </p> + <p> + It is recommended to use this action together with <tt + class="LITERAL"><a href= + "actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a></tt> + and <tt class="LITERAL"><a href= + "actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a></tt>. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Let the browser revalidate cached documents but don't # allow the server to use the revalidation headers for user tracking. {+hide-if-modified-since{-60} \ +overwrite-last-modified{randomize} \ +crunch-if-none-match} -/ </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CRUNCH-INCOMING-COOKIES" ->8.5.9. crunch-incoming-cookies</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Prevent the web server from setting HTTP cookies on your system - </P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes any <SPAN -CLASS="QUOTE" ->"Set-Cookie:"</SPAN -> HTTP headers from server replies. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This action is only concerned with <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->incoming</I -></SPAN -> HTTP cookies. For - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->outgoing</I -></SPAN -> HTTP cookies, use - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -></TT ->. - Use <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->both</I -></SPAN -> to disable HTTP cookies completely. - </P -><P -> It makes <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->no sense at all</I -></SPAN -> to use this action in conjunction - with the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SESSION-COOKIES-ONLY" ->session-cookies-only</A -></TT -> action, - since it would prevent the session cookies from being set. See also - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER-CONTENT-COOKIES" ->filter-content-cookies</A -></TT ->. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+crunch-incoming-cookies</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CRUNCH-SERVER-HEADER" ->8.5.10. crunch-server-header</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Remove a server header <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has no dedicated action for.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes every header sent by the server that contains the string the user supplied as parameter. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Any string. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This action allows you to block server headers for which no dedicated - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> action exists. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - will remove every server header that contains the string you supplied as parameter. - </P -><P -> Regular expressions are <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not supported</I -></SPAN -> and you can't - use this action to block different headers in the same request, unless - they contain the same string. - </P -><P -> <TT -CLASS="LITERAL" ->crunch-server-header</TT -> is only meant for quick tests. - If you have to block several different headers, or only want to modify - parts of them, you should use a custom - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SERVER-HEADER-FILTER" ->server-header filter</A -></TT ->. - </P -><DIV -CLASS="WARNING" -><P -></P -><TABLE -CLASS="WARNING" -BORDER="1" -WIDTH="90%" -><TR -><TD -ALIGN="CENTER" -><B ->Warning</B -></TD -></TR -><TR -><TD -ALIGN="LEFT" -><P -> Don't block any header without understanding the consequences. - </P -></TD -></TR -></TABLE -></DIV -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Crunch server headers that try to prevent caching +/ +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CRUNCH-INCOMING-COOKIES">8.5.9. + crunch-incoming-cookies</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Prevent the web server from setting HTTP cookies on your + system + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes any <span class="QUOTE">"Set-Cookie:"</span> HTTP + headers from server replies. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This action is only concerned with <span class= + "emphasis"><i class="EMPHASIS">incoming</i></span> HTTP + cookies. For <span class="emphasis"><i class= + "EMPHASIS">outgoing</i></span> HTTP cookies, use <tt class= + "LITERAL"><a href= + "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>. + Use <span class="emphasis"><i class= + "EMPHASIS">both</i></span> to disable HTTP cookies + completely. + </p> + <p> + It makes <span class="emphasis"><i class="EMPHASIS">no + sense at all</i></span> to use this action in conjunction + with the <tt class="LITERAL"><a href= + "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt> + action, since it would prevent the session cookies from + being set. See also <tt class="LITERAL"><a href= + "actions-file.html#FILTER-CONTENT-COOKIES">filter-content-cookies</a></tt>. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++crunch-incoming-cookies +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CRUNCH-SERVER-HEADER">8.5.10. crunch-server-header</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Remove a server header <span class= + "APPLICATION">Privoxy</span> has no dedicated action for. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes every header sent by the server that contains the + string the user supplied as parameter. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Any string. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This action allows you to block server headers for which no + dedicated <span class="APPLICATION">Privoxy</span> action + exists. <span class="APPLICATION">Privoxy</span> will + remove every server header that contains the string you + supplied as parameter. + </p> + <p> + Regular expressions are <span class="emphasis"><i class= + "EMPHASIS">not supported</i></span> and you can't use this + action to block different headers in the same request, + unless they contain the same string. + </p> + <p> + <tt class="LITERAL">crunch-server-header</tt> is only meant + for quick tests. If you have to block several different + headers, or only want to modify parts of them, you should + use a custom <tt class="LITERAL"><a href= + "actions-file.html#SERVER-HEADER-FILTER">server-header + filter</a></tt>. + </p> + <div class="WARNING"> + <table class="WARNING" border="1" width="90%"> + <tr> + <td align="CENTER"> + <b>Warning</b> + </td> + </tr> + <tr> + <td align="LEFT"> + <p> + Don't block any header without understanding the + consequences. + </p> + </td> + </tr> + </table> + </div> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Crunch server headers that try to prevent caching { +crunch-server-header{no-cache} } -/ </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CRUNCH-OUTGOING-COOKIES" ->8.5.11. crunch-outgoing-cookies</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Prevent the web server from reading any HTTP cookies from your system - </P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes any <SPAN -CLASS="QUOTE" ->"Cookie:"</SPAN -> HTTP headers from client requests. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This action is only concerned with <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->outgoing</I -></SPAN -> HTTP cookies. For - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->incoming</I -></SPAN -> HTTP cookies, use - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -></TT ->. - Use <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->both</I -></SPAN -> to disable HTTP cookies completely. - </P -><P -> It makes <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->no sense at all</I -></SPAN -> to use this action in conjunction - with the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SESSION-COOKIES-ONLY" ->session-cookies-only</A -></TT -> action, - since it would prevent the session cookies from being read. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+crunch-outgoing-cookies</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="DEANIMATE-GIFS" ->8.5.12. deanimate-gifs</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Stop those annoying, distracting animated GIF images.</P -></DD -><DT ->Effect:</DT -><DD -><P -> De-animate GIF animations, i.e. reduce them to their first or last image. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> <SPAN -CLASS="QUOTE" ->"last"</SPAN -> or <SPAN -CLASS="QUOTE" ->"first"</SPAN -> - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This will also shrink the images considerably (in bytes, not pixels!). If - the option <SPAN -CLASS="QUOTE" ->"first"</SPAN -> is given, the first frame of the animation - is used as the replacement. If <SPAN -CLASS="QUOTE" ->"last"</SPAN -> 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). - </P -><P -> You can safely use this action with patterns that will also match non-GIF - objects, because no attempt will be made at anything that doesn't look like - a GIF. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+deanimate-gifs{last}</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="DOWNGRADE-HTTP-VERSION" ->8.5.13. downgrade-http-version</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Work around (very rare) problems with HTTP/1.1</P -></DD -><DT ->Effect:</DT -><DD -><P -> Downgrades HTTP/1.1 client requests and server replies to HTTP/1.0. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This is a left-over from the time when <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - didn't support important HTTP/1.1 features well. It is left here for the - unlikely case that you experience HTTP/1.1 related problems with some server - out there. Not all HTTP/1.1 features and requirements are supported yet, - so there is a chance you might need this action. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{+downgrade-http-version} -problem-host.example.com</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="FAST-REDIRECTS" ->8.5.14. fast-redirects</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Fool some click-tracking scripts and speed up indirect links.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Detects redirection URLs and redirects the browser without contacting - the redirection server first. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -></P -><UL -><LI -><P -> <SPAN -CLASS="QUOTE" ->"simple-check"</SPAN -> to just search for the string <SPAN -CLASS="QUOTE" ->"http://"</SPAN -> - to detect redirection URLs. - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"check-decoded-url"</SPAN -> to decode URLs (if necessary) before searching - for redirection URLs. - </P -></LI -></UL -></DD -><DT ->Notes:</DT -><DD -><P -> - Many sites, like yahoo.com, don't just link to other sites. Instead, they - will link to some script on their own servers, giving the destination as a - parameter, which will then redirect you to the final target. URLs - resulting from this scheme typically look like: - <SPAN -CLASS="QUOTE" ->"http://www.example.org/click-tracker.cgi?target=http%3a//www.example.net/"</SPAN ->. - </P -><P -> 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 asks the server for one redirect after the other. Plus, it feeds - the advertisers. - </P -><P -> This feature is currently not very smart and is scheduled for improvement. - If it is enabled by default, you will have to create some exceptions to - this action. It can lead to failures in several ways: - </P -><P -> Not every URLs with other URLs as parameters is evil. - Some sites offer a real service that requires this information to work. - For example a validation service needs to know, which document to validate. - <TT -CLASS="LITERAL" ->fast-redirects</TT -> assumes that every URL parameter that - looks like another URL is a redirection target, and will always redirect to - the last one. Most of the time the assumption is correct, but if it isn't, - the user gets redirected anyway. - </P -><P -> Another failure occurs if the URL contains other parameters after the URL parameter. - The URL: - <SPAN -CLASS="QUOTE" ->"http://www.example.org/?redirect=http%3a//www.example.net/&foo=bar"</SPAN ->. - contains the redirection URL <SPAN -CLASS="QUOTE" ->"http://www.example.net/"</SPAN ->, - followed by another parameter. <TT -CLASS="LITERAL" ->fast-redirects</TT -> doesn't know that - and will cause a redirect to <SPAN -CLASS="QUOTE" ->"http://www.example.net/&foo=bar"</SPAN ->. - Depending on the target server configuration, the parameter will be silently ignored - or lead to a <SPAN -CLASS="QUOTE" ->"page not found"</SPAN -> error. You can prevent this problem by - first using the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#REDIRECT" ->redirect</A -></TT -> action - to remove the last part of the URL, but it requires a little effort. - </P -><P -> To detect a redirection URL, <TT -CLASS="LITERAL" ->fast-redirects</TT -> only - looks for the string <SPAN -CLASS="QUOTE" ->"http://"</SPAN ->, either in plain text - (invalid but often used) or encoded as <SPAN -CLASS="QUOTE" ->"http%3a//"</SPAN ->. - Some sites use their own URL encoding scheme, encrypt the address - of the target server or replace it with a database id. In theses cases - <TT -CLASS="LITERAL" ->fast-redirects</TT -> is fooled and the request reaches the - redirection server where it probably gets logged. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { +fast-redirects{simple-check} } - one.example.com +/ +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CRUNCH-OUTGOING-COOKIES">8.5.11. + crunch-outgoing-cookies</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Prevent the web server from reading any HTTP cookies from + your system + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes any <span class="QUOTE">"Cookie:"</span> HTTP + headers from client requests. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This action is only concerned with <span class= + "emphasis"><i class="EMPHASIS">outgoing</i></span> HTTP + cookies. For <span class="emphasis"><i class= + "EMPHASIS">incoming</i></span> HTTP cookies, use <tt class= + "LITERAL"><a href= + "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt>. + Use <span class="emphasis"><i class= + "EMPHASIS">both</i></span> to disable HTTP cookies + completely. + </p> + <p> + It makes <span class="emphasis"><i class="EMPHASIS">no + sense at all</i></span> to use this action in conjunction + with the <tt class="LITERAL"><a href= + "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a></tt> + action, since it would prevent the session cookies from + being read. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++crunch-outgoing-cookies +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="DEANIMATE-GIFS">8.5.12. deanimate-gifs</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Stop those annoying, distracting animated GIF images. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + De-animate GIF animations, i.e. reduce them to their first + or last image. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + <span class="QUOTE">"last"</span> or <span class= + "QUOTE">"first"</span> + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This will also shrink the images considerably (in bytes, + not pixels!). If the option <span class= + "QUOTE">"first"</span> is given, the first frame of the + animation is used as the replacement. If <span class= + "QUOTE">"last"</span> 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). + </p> + <p> + You can safely use this action with patterns that will also + match non-GIF objects, because no attempt will be made at + anything that doesn't look like a GIF. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++deanimate-gifs{last} +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="DOWNGRADE-HTTP-VERSION">8.5.13. + downgrade-http-version</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Work around (very rare) problems with HTTP/1.1 + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Downgrades HTTP/1.1 client requests and server replies to + HTTP/1.0. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This is a left-over from the time when <span class= + "APPLICATION">Privoxy</span> didn't support important + HTTP/1.1 features well. It is left here for the unlikely + case that you experience HTTP/1.1 related problems with + some server out there. Not all HTTP/1.1 features and + requirements are supported yet, so there is a chance you + might need this action. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +{+downgrade-http-version} +problem-host.example.com +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="FAST-REDIRECTS">8.5.14. fast-redirects</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Fool some click-tracking scripts and speed up indirect + links. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Detects redirection URLs and redirects the browser without + contacting the redirection server first. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <ul> + <li> + <p> + <span class="QUOTE">"simple-check"</span> to just + search for the string <span class= + "QUOTE">"http://"</span> to detect redirection URLs. + </p> + </li> + <li> + <p> + <span class="QUOTE">"check-decoded-url"</span> to + decode URLs (if necessary) before searching for + redirection URLs. + </p> + </li> + </ul> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Many sites, like yahoo.com, don't just link to other sites. + Instead, they will link to some script on their own + servers, giving the destination as a parameter, which will + then redirect you to the final target. URLs resulting from + this scheme typically look like: <span class= + "QUOTE">"http://www.example.org/click-tracker.cgi?target=http%3a//www.example.net/"</span>. + </p> + <p> + 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 asks the server for one redirect after the + other. Plus, it feeds the advertisers. + </p> + <p> + This feature is currently not very smart and is scheduled + for improvement. If it is enabled by default, you will have + to create some exceptions to this action. It can lead to + failures in several ways: + </p> + <p> + Not every URLs with other URLs as parameters is evil. Some + sites offer a real service that requires this information + to work. For example a validation service needs to know, + which document to validate. <tt class= + "LITERAL">fast-redirects</tt> assumes that every URL + parameter that looks like another URL is a redirection + target, and will always redirect to the last one. Most of + the time the assumption is correct, but if it isn't, the + user gets redirected anyway. + </p> + <p> + Another failure occurs if the URL contains other parameters + after the URL parameter. The URL: <span class= + "QUOTE">"http://www.example.org/?redirect=http%3a//www.example.net/&foo=bar"</span>. + contains the redirection URL <span class= + "QUOTE">"http://www.example.net/"</span>, followed by + another parameter. <tt class="LITERAL">fast-redirects</tt> + doesn't know that and will cause a redirect to <span class= + "QUOTE">"http://www.example.net/&foo=bar"</span>. + Depending on the target server configuration, the parameter + will be silently ignored or lead to a <span class= + "QUOTE">"page not found"</span> error. You can prevent this + problem by first using the <tt class="LITERAL"><a href= + "actions-file.html#REDIRECT">redirect</a></tt> action to + remove the last part of the URL, but it requires a little + effort. + </p> + <p> + To detect a redirection URL, <tt class= + "LITERAL">fast-redirects</tt> only looks for the string + <span class="QUOTE">"http://"</span>, either in plain text + (invalid but often used) or encoded as <span class= + "QUOTE">"http%3a//"</span>. Some sites use their own URL + encoding scheme, encrypt the address of the target server + or replace it with a database id. In theses cases <tt + class="LITERAL">fast-redirects</tt> is fooled and the + request reaches the redirection server where it probably + gets logged. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + { +fast-redirects{simple-check} } + one.example.com { +fast-redirects{check-decoded-url} } - another.example.com/testing</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="FILTER" ->8.5.15. filter</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Get rid of HTML and JavaScript annoyances, banner advertisements (by size), - do fun text replacements, add personalized effects, etc.</P -></DD -><DT ->Effect:</DT -><DD -><P -> All instances of text-based type, most notably HTML and JavaScript, to which - this action applies, can be filtered on-the-fly through the specified regular - expression based substitutions. (Note: as of version 3.0.3 plain text documents - are exempted from filtering, because web servers often use the - <TT -CLASS="LITERAL" ->text/plain</TT -> MIME type for all files whose type they don't know.) - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> The name of a content filter, as defined in the <A -HREF="filter-file.html" ->filter file</A ->. - Filters can be defined in one or more files as defined by the - <TT -CLASS="LITERAL" -><A -HREF="config.html#FILTERFILE" ->filterfile</A -></TT -> - option in the <A -HREF="config.html" ->config file</A ->. - <TT -CLASS="FILENAME" ->default.filter</TT -> is the collection of filters - supplied by the developers. Locally defined filters should go - in their own file, such as <TT -CLASS="FILENAME" ->user.filter</TT ->. - </P -><P -> When used in its negative form, - and without parameters, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> filtering is completely disabled. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> For your convenience, there are a number of pre-defined filters available - in the distribution filter file that you can use. See the examples below for - a list. - </P -><P -> 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. (The total time until the page is completely rendered - doesn't change much, but it may be perceived as slower since the page is - not incrementally displayed.) - This effect will be more noticeable on slower connections. - </P -><P -> <SPAN -CLASS="QUOTE" ->"Rolling your own"</SPAN -> - filters requires a knowledge of - <A -HREF="http://en.wikipedia.org/wiki/Regular_expressions" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"Regular - Expressions"</SPAN -></A -> and - <A -HREF="http://en.wikipedia.org/wiki/Html" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"HTML"</SPAN -></A ->. - This is very powerful feature, and potentially very intrusive. - Filters should be used with caution, and where an equivalent - <SPAN -CLASS="QUOTE" ->"action"</SPAN -> is not available. - </P -><P -> The amount of data that can be filtered is limited to the - <TT -CLASS="LITERAL" -><A -HREF="config.html#BUFFER-LIMIT" ->buffer-limit</A -></TT -> - option in the main <A -HREF="config.html" ->config file</A ->. The - default is 4096 KB (4 Megs). Once this limit is exceeded, the buffered - data, and all pending data, is passed through unfiltered. - </P -><P -> Inappropriate MIME types, such as zipped files, are not filtered at all. - (Again, only text-based types except plain text). Encrypted SSL data - (from HTTPS servers) cannot be filtered either, since this would violate - the integrity of the secure transaction. In some situations it might - be necessary to protect certain text, like source code, from filtering - by defining appropriate <TT -CLASS="LITERAL" ->-filter</TT -> exceptions. - </P -><P -> Compressed content can't be filtered either, unless <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is compiled with zlib support (requires at least <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.7), - in which case <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will decompress the content before filtering - it. - </P -><P -> If you use a <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version without zlib support, but want filtering to work on - as much documents as possible, even those that would normally be sent compressed, - you must use the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#PREVENT-COMPRESSION" ->prevent-compression</A -></TT -> - action in conjunction with <TT -CLASS="LITERAL" ->filter</TT ->. - </P -><P -> Content filtering can achieve some of the same effects as the - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> - action, i.e. it can be used to block ads and banners. But the mechanism - works quite differently. One effective use, is to block ad banners - based on their size (see below), since many of these seem to be somewhat - standardized. - </P -><P -> <A -HREF="contact.html" ->Feedback</A -> with suggestions for new or - improved filters is particularly welcome! - </P -><P -> The below list has only the names and a one-line description of each - predefined filter. There are <A -HREF="filter-file.html#PREDEFINED-FILTERS" ->more - verbose explanations</A -> of what these filters do in the <A -HREF="filter-file.html" ->filter file chapter</A ->. - </P -></DD -><DT ->Example usage (with filters from the distribution <TT -CLASS="FILENAME" ->default.filter</TT -> file). - See <A -HREF="filter-file.html#PREDEFINED-FILTERS" ->the Predefined Filters section</A -> for - more explanation on each:</DT -><DD -><P -> <A -NAME="FILTER-JS-ANNOYANCES" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-JS-EVENTS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{js-events} # Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites).</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-HTML-ANNOYANCES" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{html-annoyances} # Get rid of particularly annoying HTML abuse.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-CONTENT-COOKIES" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{content-cookies} # Kill cookies that come in the HTML or JS content.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-REFRESH-TAGS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{refresh-tags} # Kill automatic refresh tags (for dial-on-demand setups).</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-UNSOLICITED-POPUPS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{unsolicited-popups} # Disable only unsolicited pop-up windows. Useful if your browser lacks this ability.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-ALL-POPUPS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{all-popups} # Kill all popups in JavaScript and HTML. Useful if your browser lacks this ability.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-IMG-REORDER" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-BANNERS-BY-SIZE" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{banners-by-size} # Kill banners by size.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-BANNERS-BY-LINK" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{banners-by-link} # Kill banners by their links to known clicktrackers.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-WEBBUGS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking).</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-TINY-TEXTFORMS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-JUMPING-WINDOWS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{jumping-windows} # Prevent windows from resizing and moving themselves.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-FRAMESET-BORDERS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{frameset-borders} # Give frames a border and make them resizable.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-DEMORONIZER" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{demoronizer} # Fix MS's non-standard use of standard charsets.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-SHOCKWAVE-FLASH" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{shockwave-flash} # Kill embedded Shockwave Flash objects.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-QUICKTIME-KIOSKMODE" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{quicktime-kioskmode} # Make Quicktime movies saveable.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-FUN" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{fun} # Text replacements for subversive browsing fun!</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-CRUDE-PARENTAL" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{crude-parental} # Crude parental filtering. Note that this filter doesn't work reliably.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-IE-EXPLOITS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{ie-exploits} # Disable some known Internet Explorer bug exploits.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-SITE-SPECIFICS" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{site-specifics} # Cure for site-specific problems. Don't apply generally!</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-NO-PING" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{no-ping} # Removes non-standard ping attributes in <a> and <area> tags.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-GOOGLE" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{google} # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-YAHOO" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{yahoo} # CSS-based block for Yahoo text ads. Also removes a width limitation.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-MSN" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{msn} # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation.</PRE -></TD -></TR -></TABLE -> - </P -><P -> <A -NAME="FILTER-BLOGSPOT" -></A -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+filter{blogspot} # Cleans up some Blogspot blogs. Read the fine print before using this.</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="FORCE-TEXT-MODE" ->8.5.16. force-text-mode</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Force <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to treat a document as if it was in some kind of <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->text</I -></SPAN -> format. </P -></DD -><DT ->Effect:</DT -><DD -><P -> Declares a document as text, even if the <SPAN -CLASS="QUOTE" ->"Content-Type:"</SPAN -> isn't detected as such. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> As explained <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->above</A -></TT ->, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> tries to only filter files that are - in some kind of text format. The same restrictions apply to - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CONTENT-TYPE-OVERWRITE" ->content-type-overwrite</A -></TT ->. - <TT -CLASS="LITERAL" ->force-text-mode</TT -> declares a document as text, - without looking at the <SPAN -CLASS="QUOTE" ->"Content-Type:"</SPAN -> first. - </P -><DIV -CLASS="WARNING" -><P -></P -><TABLE -CLASS="WARNING" -BORDER="1" -WIDTH="90%" -><TR -><TD -ALIGN="CENTER" -><B ->Warning</B -></TD -></TR -><TR -><TD -ALIGN="LEFT" -><P -> Think twice before activating this action. Filtering binary data - with regular expressions can cause file damage. - </P -></TD -></TR -></TABLE -></DIV -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+force-text-mode - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="FORWARD-OVERRIDE" ->8.5.17. forward-override</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Change the forwarding settings based on User-Agent or request origin</P -></DD -><DT ->Effect:</DT -><DD -><P -> Overrules the forward directives in the configuration file. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Multi-value.</P -></DD -><DT ->Parameter:</DT -><DD -><P -></P -><UL -><LI -><P -><SPAN -CLASS="QUOTE" ->"forward ."</SPAN -> to use a direct connection without any additional proxies.</P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"forward 127.0.0.1:8123"</SPAN -> to use the HTTP proxy listening at 127.0.0.1 port 8123. - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"forward-socks4a 127.0.0.1:9050 ."</SPAN -> to use the socks4a proxy listening at - 127.0.0.1 port 9050. Replace <SPAN -CLASS="QUOTE" ->"forward-socks4a"</SPAN -> with <SPAN -CLASS="QUOTE" ->"forward-socks4"</SPAN -> - to use a socks4 connection (with local DNS resolution) instead, use <SPAN -CLASS="QUOTE" ->"forward-socks5"</SPAN -> - for socks5 connections (with remote DNS resolution). - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"forward-socks4a 127.0.0.1:9050 proxy.example.org:8000"</SPAN -> to use the socks4a proxy - listening at 127.0.0.1 port 9050 to reach the HTTP proxy listening at proxy.example.org port 8000. - Replace <SPAN -CLASS="QUOTE" ->"forward-socks4a"</SPAN -> with <SPAN -CLASS="QUOTE" ->"forward-socks4"</SPAN -> to use a socks4 connection - (with local DNS resolution) instead, use <SPAN -CLASS="QUOTE" ->"forward-socks5"</SPAN -> - for socks5 connections (with remote DNS resolution). - </P -></LI -></UL -></DD -><DT ->Notes:</DT -><DD -><P -> This action takes parameters similar to the - <A -HREF="config.html#FORWARDING" ->forward</A -> directives in the configuration - file, but without the URL pattern. It can be used as replacement, but normally it's only - used in cases where matching based on the request URL isn't sufficient. - </P -><DIV -CLASS="WARNING" -><P -></P -><TABLE -CLASS="WARNING" -BORDER="1" -WIDTH="90%" -><TR -><TD -ALIGN="CENTER" -><B ->Warning</B -></TD -></TR -><TR -><TD -ALIGN="LEFT" -><P -> Please read the description for the <A -HREF="config.html#FORWARDING" ->forward</A -> directives before - using this action. Forwarding to the wrong people will reduce your privacy and increase the - chances of man-in-the-middle attacks. - </P -><P -> If the ports are missing or invalid, default values will be used. This might change - in the future and you shouldn't rely on it. Otherwise incorrect syntax causes Privoxy - to exit. - </P -><P -> Use the <A -HREF="http://config.privoxy.org/show-url-info" -TARGET="_top" ->show-url-info CGI page</A -> - to verify that your forward settings do what you thought the do. - </P -></TD -></TR -></TABLE -></DIV -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Always use direct connections for requests previously tagged as -# <SPAN -CLASS="QUOTE" ->"User-Agent: fetch libfetch/2.0"</SPAN -> and make sure + another.example.com/testing +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="FILTER">8.5.15. filter</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Get rid of HTML and JavaScript annoyances, banner + advertisements (by size), do fun text replacements, add + personalized effects, etc. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + All instances of text-based type, most notably HTML and + JavaScript, to which this action applies, can be filtered + on-the-fly through the specified regular expression based + substitutions. (Note: as of version 3.0.3 plain text + documents are exempted from filtering, because web servers + often use the <tt class="LITERAL">text/plain</tt> MIME type + for all files whose type they don't know.) + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + The name of a content filter, as defined in the <a href= + "filter-file.html">filter file</a>. Filters can be defined + in one or more files as defined by the <tt class= + "LITERAL"><a href= + "config.html#FILTERFILE">filterfile</a></tt> option in the + <a href="config.html">config file</a>. <tt class= + "FILENAME">default.filter</tt> is the collection of filters + supplied by the developers. Locally defined filters should + go in their own file, such as <tt class= + "FILENAME">user.filter</tt>. + </p> + <p> + When used in its negative form, and without parameters, + <span class="emphasis"><i class="EMPHASIS">all</i></span> + filtering is completely disabled. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + For your convenience, there are a number of pre-defined + filters available in the distribution filter file that you + can use. See the examples below for a list. + </p> + <p> + 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. (The + total time until the page is completely rendered doesn't + change much, but it may be perceived as slower since the + page is not incrementally displayed.) This effect will be + more noticeable on slower connections. + </p> + <p> + <span class="QUOTE">"Rolling your own"</span> filters + requires a knowledge of <a href= + "http://en.wikipedia.org/wiki/Regular_expressions" target= + "_top"><span class="QUOTE">"Regular Expressions"</span></a> + and <a href="http://en.wikipedia.org/wiki/Html" target= + "_top"><span class="QUOTE">"HTML"</span></a>. This is very + powerful feature, and potentially very intrusive. Filters + should be used with caution, and where an equivalent <span + class="QUOTE">"action"</span> is not available. + </p> + <p> + The amount of data that can be filtered is limited to the + <tt class="LITERAL"><a href= + "config.html#BUFFER-LIMIT">buffer-limit</a></tt> option in + the main <a href="config.html">config file</a>. The default + is 4096 KB (4 Megs). Once this limit is exceeded, the + buffered data, and all pending data, is passed through + unfiltered. + </p> + <p> + Inappropriate MIME types, such as zipped files, are not + filtered at all. (Again, only text-based types except plain + text). Encrypted SSL data (from HTTPS servers) cannot be + filtered either, since this would violate the integrity of + the secure transaction. In some situations it might be + necessary to protect certain text, like source code, from + filtering by defining appropriate <tt class= + "LITERAL">-filter</tt> exceptions. + </p> + <p> + Compressed content can't be filtered either, unless <span + class="APPLICATION">Privoxy</span> is compiled with zlib + support (requires at least <span class= + "APPLICATION">Privoxy</span> 3.0.7), in which case <span + class="APPLICATION">Privoxy</span> will decompress the + content before filtering it. + </p> + <p> + If you use a <span class="APPLICATION">Privoxy</span> + version without zlib support, but want filtering to work on + as much documents as possible, even those that would + normally be sent compressed, you must use the <tt class= + "LITERAL"><a href= + "actions-file.html#PREVENT-COMPRESSION">prevent-compression</a></tt> + action in conjunction with <tt class="LITERAL">filter</tt>. + </p> + <p> + Content filtering can achieve some of the same effects as + the <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> action, i.e. it + can be used to block ads and banners. But the mechanism + works quite differently. One effective use, is to block ad + banners based on their size (see below), since many of + these seem to be somewhat standardized. + </p> + <p> + <a href="contact.html">Feedback</a> with suggestions for + new or improved filters is particularly welcome! + </p> + <p> + The below list has only the names and a one-line + description of each predefined filter. There are <a href= + "filter-file.html#PREDEFINED-FILTERS">more verbose + explanations</a> of what these filters do in the <a href= + "filter-file.html">filter file chapter</a>. + </p> + </dd> + <dt> + Example usage (with filters from the distribution <tt class= + "FILENAME">default.filter</tt> file). See <a href= + "filter-file.html#PREDEFINED-FILTERS">the Predefined Filters + section</a> for more explanation on each: + </dt> + <dd> + <p> + <a name="FILTER-JS-ANNOYANCES"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-JS-EVENTS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{js-events} # Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites). +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-HTML-ANNOYANCES"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{html-annoyances} # Get rid of particularly annoying HTML abuse. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-CONTENT-COOKIES"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{content-cookies} # Kill cookies that come in the HTML or JS content. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-REFRESH-TAGS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{refresh-tags} # Kill automatic refresh tags (for dial-on-demand setups). +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-UNSOLICITED-POPUPS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{unsolicited-popups} # Disable only unsolicited pop-up windows. Useful if your browser lacks this ability. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-ALL-POPUPS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{all-popups} # Kill all popups in JavaScript and HTML. Useful if your browser lacks this ability. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-IMG-REORDER"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-BANNERS-BY-SIZE"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{banners-by-size} # Kill banners by size. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-BANNERS-BY-LINK"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{banners-by-link} # Kill banners by their links to known clicktrackers. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-WEBBUGS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking). +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-TINY-TEXTFORMS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-JUMPING-WINDOWS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{jumping-windows} # Prevent windows from resizing and moving themselves. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-FRAMESET-BORDERS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{frameset-borders} # Give frames a border and make them resizable. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-DEMORONIZER"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{demoronizer} # Fix MS's non-standard use of standard charsets. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-SHOCKWAVE-FLASH"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{shockwave-flash} # Kill embedded Shockwave Flash objects. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-QUICKTIME-KIOSKMODE"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{quicktime-kioskmode} # Make Quicktime movies saveable. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-FUN"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{fun} # Text replacements for subversive browsing fun! +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-CRUDE-PARENTAL"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{crude-parental} # Crude parental filtering. Note that this filter doesn't work reliably. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-IE-EXPLOITS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{ie-exploits} # Disable some known Internet Explorer bug exploits. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-SITE-SPECIFICS"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{site-specifics} # Cure for site-specific problems. Don't apply generally! +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-NO-PING"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{no-ping} # Removes non-standard ping attributes in <a> and <area> tags. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-GOOGLE"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{google} # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-YAHOO"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{yahoo} # CSS-based block for Yahoo text ads. Also removes a width limitation. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-MSN"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{msn} # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation. +</pre> + </td> + </tr> + </table> + + <p> + <a name="FILTER-BLOGSPOT"></a> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++filter{blogspot} # Cleans up some Blogspot blogs. Read the fine print before using this. +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="FORCE-TEXT-MODE">8.5.16. force-text-mode</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Force <span class="APPLICATION">Privoxy</span> to treat a + document as if it was in some kind of <span class= + "emphasis"><i class="EMPHASIS">text</i></span> format. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Declares a document as text, even if the <span class= + "QUOTE">"Content-Type:"</span> isn't detected as such. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + As explained <tt class="LITERAL"><a href= + "actions-file.html#FILTER">above</a></tt>, <span class= + "APPLICATION">Privoxy</span> tries to only filter files + that are in some kind of text format. The same restrictions + apply to <tt class="LITERAL"><a href= + "actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite</a></tt>. + <tt class="LITERAL">force-text-mode</tt> declares a + document as text, without looking at the <span class= + "QUOTE">"Content-Type:"</span> first. + </p> + <div class="WARNING"> + <table class="WARNING" border="1" width="90%"> + <tr> + <td align="CENTER"> + <b>Warning</b> + </td> + </tr> + <tr> + <td align="LEFT"> + <p> + Think twice before activating this action. + Filtering binary data with regular expressions can + cause file damage. + </p> + </td> + </tr> + </table> + </div> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++force-text-mode + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="FORWARD-OVERRIDE">8.5.17. forward-override</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Change the forwarding settings based on User-Agent or + request origin + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Overrules the forward directives in the configuration file. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Multi-value. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <ul> + <li> + <p> + <span class="QUOTE">"forward ."</span> to use a direct + connection without any additional proxies. + </p> + </li> + <li> + <p> + <span class="QUOTE">"forward 127.0.0.1:8123"</span> to + use the HTTP proxy listening at 127.0.0.1 port 8123. + </p> + </li> + <li> + <p> + <span class="QUOTE">"forward-socks4a 127.0.0.1:9050 + ."</span> to use the socks4a proxy listening at + 127.0.0.1 port 9050. Replace <span class= + "QUOTE">"forward-socks4a"</span> with <span class= + "QUOTE">"forward-socks4"</span> to use a socks4 + connection (with local DNS resolution) instead, use + <span class="QUOTE">"forward-socks5"</span> for socks5 + connections (with remote DNS resolution). + </p> + </li> + <li> + <p> + <span class="QUOTE">"forward-socks4a 127.0.0.1:9050 + proxy.example.org:8000"</span> to use the socks4a proxy + listening at 127.0.0.1 port 9050 to reach the HTTP + proxy listening at proxy.example.org port 8000. Replace + <span class="QUOTE">"forward-socks4a"</span> with <span + class="QUOTE">"forward-socks4"</span> to use a socks4 + connection (with local DNS resolution) instead, use + <span class="QUOTE">"forward-socks5"</span> for socks5 + connections (with remote DNS resolution). + </p> + </li> + </ul> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This action takes parameters similar to the <a href= + "config.html#FORWARDING">forward</a> directives in the + configuration file, but without the URL pattern. It can be + used as replacement, but normally it's only used in cases + where matching based on the request URL isn't sufficient. + </p> + <div class="WARNING"> + <table class="WARNING" border="1" width="90%"> + <tr> + <td align="CENTER"> + <b>Warning</b> + </td> + </tr> + <tr> + <td align="LEFT"> + <p> + Please read the description for the <a href= + "config.html#FORWARDING">forward</a> directives + before using this action. Forwarding to the wrong + people will reduce your privacy and increase the + chances of man-in-the-middle attacks. + </p> + <p> + If the ports are missing or invalid, default values + will be used. This might change in the future and + you shouldn't rely on it. Otherwise incorrect + syntax causes Privoxy to exit. + </p> + <p> + Use the <a href= + "http://config.privoxy.org/show-url-info" target= + "_top">show-url-info CGI page</a> to verify that + your forward settings do what you thought the do. + </p> + </td> + </tr> + </table> + </div> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Always use direct connections for requests previously tagged as +# <span class="QUOTE">"User-Agent: fetch libfetch/2.0"</span> and make sure # resuming downloads continues to work. # This way you can continue to use Tor for your normal browsing, # without overloading the Tor network with your FreeBSD ports updates @@ -4494,255 +3207,195 @@ CLASS="QUOTE" -overwrite-last-modified \ } TAG:^User-Agent: fetch libfetch/2\.0$ - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HANDLE-AS-EMPTY-DOCUMENT" ->8.5.18. handle-as-empty-document</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Mark URLs that should be replaced by empty documents <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->if they get blocked</I -></SPAN -></P -></DD -><DT ->Effect:</DT -><DD -><P -> This action alone doesn't do anything noticeable. It just marks URLs. - If the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> action <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->also applies</I -></SPAN ->, - the presence or absence of this mark decides whether an HTML <SPAN -CLASS="QUOTE" ->"BLOCKED"</SPAN -> - page, or an empty document will be sent to the client as a substitute for the blocked content. - The <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->empty</I -></SPAN -> document isn't literally empty, but actually contains a single space. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Some browsers complain about syntax errors if JavaScript documents - are blocked with <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - default HTML page; this option can be used to silence them. - And of course this action can also be used to eliminate the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - BLOCKED message in frames. - </P -><P -> The content type for the empty document can be specified with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CONTENT-TYPE-OVERWRITE" ->content-type-overwrite{}</A -></TT ->, - but usually this isn't necessary. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Block all documents on example.org that end with ".js", -# but send an empty document instead of the usual HTML message. + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HANDLE-AS-EMPTY-DOCUMENT">8.5.18. + handle-as-empty-document</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Mark URLs that should be replaced by empty documents <span + class="emphasis"><i class="EMPHASIS">if they get + blocked</i></span> + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + This action alone doesn't do anything noticeable. It just + marks URLs. If the <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> action <span + class="emphasis"><i class="EMPHASIS">also + applies</i></span>, the presence or absence of this mark + decides whether an HTML <span class= + "QUOTE">"BLOCKED"</span> page, or an empty document will be + sent to the client as a substitute for the blocked content. + The <span class="emphasis"><i class= + "EMPHASIS">empty</i></span> document isn't literally empty, + but actually contains a single space. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Some browsers complain about syntax errors if JavaScript + documents are blocked with <span class= + "APPLICATION">Privoxy's</span> default HTML page; this + option can be used to silence them. And of course this + action can also be used to eliminate the <span class= + "APPLICATION">Privoxy</span> BLOCKED message in frames. + </p> + <p> + The content type for the empty document can be specified + with <tt class="LITERAL"><a href= + "actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite{}</a></tt>, + but usually this isn't necessary. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Block all documents on example.org that end with ".js", +# but send an empty document instead of the usual HTML message. {+block{Blocked JavaScript} +handle-as-empty-document} example.org/.*\.js$ - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HANDLE-AS-IMAGE" ->8.5.19. handle-as-image</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Mark URLs as belonging to images (so they'll be replaced by images <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->if they do get blocked</I -></SPAN ->, rather than HTML pages)</P -></DD -><DT ->Effect:</DT -><DD -><P -> This action alone doesn't do anything noticeable. It just marks URLs as images. - If the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> action <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->also applies</I -></SPAN ->, - the presence or absence of this mark decides whether an HTML <SPAN -CLASS="QUOTE" ->"blocked"</SPAN -> - page, or a replacement image (as determined by the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker</A -></TT -> action) will be sent to the - client as a substitute for the blocked content. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> The below generic example section is actually part of <TT -CLASS="FILENAME" ->default.action</TT ->. - It marks all URLs with well-known image file name extensions as images and should - be left intact. - </P -><P -> Users will probably only want to use the handle-as-image action in conjunction with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT ->, to block sources of banners, whose URLs don't - reflect the file type, like in the second example section. - </P -><P -> Note that you cannot treat HTML pages as images in most cases. For instance, (in-line) ad - frames require an HTML page to be sent, or they won't display properly. - Forcing <TT -CLASS="LITERAL" ->handle-as-image</TT -> in this situation will not replace the - ad frame with an image, but lead to error messages. - </P -></DD -><DT ->Example usage (sections):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Generic image extensions: + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HANDLE-AS-IMAGE">8.5.19. handle-as-image</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Mark URLs as belonging to images (so they'll be replaced by + images <span class="emphasis"><i class="EMPHASIS">if they + do get blocked</i></span>, rather than HTML pages) + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + This action alone doesn't do anything noticeable. It just + marks URLs as images. If the <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> action <span + class="emphasis"><i class="EMPHASIS">also + applies</i></span>, the presence or absence of this mark + decides whether an HTML <span class= + "QUOTE">"blocked"</span> page, or a replacement image (as + determined by the <tt class="LITERAL"><a href= + "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> + action) will be sent to the client as a substitute for the + blocked content. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The below generic example section is actually part of <tt + class="FILENAME">default.action</tt>. It marks all URLs + with well-known image file name extensions as images and + should be left intact. + </p> + <p> + Users will probably only want to use the handle-as-image + action in conjunction with <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt>, to block sources + of banners, whose URLs don't reflect the file type, like in + the second example section. + </p> + <p> + Note that you cannot treat HTML pages as images in most + cases. For instance, (in-line) ad frames require an HTML + page to be sent, or they won't display properly. Forcing + <tt class="LITERAL">handle-as-image</tt> in this situation + will not replace the ad frame with an image, but lead to + error messages. + </p> + </dd> + <dt> + Example usage (sections): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Generic image extensions: # {+handle-as-image} /.*\.(gif|jpg|jpeg|png|bmp|ico)$ @@ -4751,1028 +3404,850 @@ CLASS="SCREEN" # blocked as images: # {+block{Nasty banners.} +handle-as-image} -nasty-banner-server.example.com/junk.cgi\?output=trash</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HIDE-ACCEPT-LANGUAGE" ->8.5.20. hide-accept-language</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Pretend to use different language settings.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes or replaces the <SPAN -CLASS="QUOTE" ->"Accept-Language:"</SPAN -> HTTP header in client requests. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Keyword: <SPAN -CLASS="QUOTE" ->"block"</SPAN ->, or any user defined value. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Faking the browser's language settings can be useful to make a - foreign User-Agent set with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HIDE-USER-AGENT" ->hide-user-agent</A -></TT -> - more believable. - </P -><P -> However some sites with content in different languages check the - <SPAN -CLASS="QUOTE" ->"Accept-Language:"</SPAN -> to decide which one to take by default. - Sometimes it isn't possible to later switch to another language without - changing the <SPAN -CLASS="QUOTE" ->"Accept-Language:"</SPAN -> header first. - </P -><P -> Therefore it's a good idea to either only change the - <SPAN -CLASS="QUOTE" ->"Accept-Language:"</SPAN -> header to languages you understand, - or to languages that aren't wide spread. - </P -><P -> Before setting the <SPAN -CLASS="QUOTE" ->"Accept-Language:"</SPAN -> header - to a rare language, you should consider that it helps to - make your requests unique and thus easier to trace. - If you don't plan to change this header frequently, - you should stick to a common language. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Pretend to use Canadian language settings. +nasty-banner-server.example.com/junk.cgi\?output=trash +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HIDE-ACCEPT-LANGUAGE">8.5.20. hide-accept-language</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Pretend to use different language settings. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes or replaces the <span class= + "QUOTE">"Accept-Language:"</span> HTTP header in client + requests. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Keyword: <span class="QUOTE">"block"</span>, or any user + defined value. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Faking the browser's language settings can be useful to + make a foreign User-Agent set with <tt class="LITERAL"><a + href= + "actions-file.html#HIDE-USER-AGENT">hide-user-agent</a></tt> + more believable. + </p> + <p> + However some sites with content in different languages + check the <span class="QUOTE">"Accept-Language:"</span> to + decide which one to take by default. Sometimes it isn't + possible to later switch to another language without + changing the <span class="QUOTE">"Accept-Language:"</span> + header first. + </p> + <p> + Therefore it's a good idea to either only change the <span + class="QUOTE">"Accept-Language:"</span> header to languages + you understand, or to languages that aren't wide spread. + </p> + <p> + Before setting the <span class= + "QUOTE">"Accept-Language:"</span> header to a rare + language, you should consider that it helps to make your + requests unique and thus easier to trace. If you don't plan + to change this header frequently, you should stick to a + common language. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Pretend to use Canadian language settings. {+hide-accept-language{en-ca} \ +hide-user-agent{Mozilla/5.0 (X11; U; OpenBSD i386; en-CA; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4} \ } -/ </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HIDE-CONTENT-DISPOSITION" ->8.5.21. hide-content-disposition</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Prevent download menus for content you prefer to view inside the browser.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes or replaces the <SPAN -CLASS="QUOTE" ->"Content-Disposition:"</SPAN -> HTTP header set by some servers. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Keyword: <SPAN -CLASS="QUOTE" ->"block"</SPAN ->, or any user defined value. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Some servers set the <SPAN -CLASS="QUOTE" ->"Content-Disposition:"</SPAN -> HTTP header for - documents they assume you want to save locally before viewing them. - The <SPAN -CLASS="QUOTE" ->"Content-Disposition:"</SPAN -> header contains the file name - the browser is supposed to use by default. - </P -><P -> In most browsers that understand this header, it makes it impossible to - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->just view</I -></SPAN -> the document, without downloading it first, - even if it's just a simple text file or an image. - </P -><P -> Removing the <SPAN -CLASS="QUOTE" ->"Content-Disposition:"</SPAN -> header helps - to prevent this annoyance, but some browsers additionally check the - <SPAN -CLASS="QUOTE" ->"Content-Type:"</SPAN -> header, before they decide if they can - display a document without saving it first. In these cases, you have - to change this header as well, before the browser stops displaying - download menus. - </P -><P -> It is also possible to change the server's file name suggestion - to another one, but in most cases it isn't worth the time to set - it up. - </P -><P -> This action will probably be removed in the future, - use server-header filters instead. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Disarm the download link in Sourceforge's patch tracker +/ +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HIDE-CONTENT-DISPOSITION">8.5.21. + hide-content-disposition</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Prevent download menus for content you prefer to view + inside the browser. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes or replaces the <span class= + "QUOTE">"Content-Disposition:"</span> HTTP header set by + some servers. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Keyword: <span class="QUOTE">"block"</span>, or any user + defined value. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Some servers set the <span class= + "QUOTE">"Content-Disposition:"</span> HTTP header for + documents they assume you want to save locally before + viewing them. The <span class= + "QUOTE">"Content-Disposition:"</span> header contains the + file name the browser is supposed to use by default. + </p> + <p> + In most browsers that understand this header, it makes it + impossible to <span class="emphasis"><i class= + "EMPHASIS">just view</i></span> the document, without + downloading it first, even if it's just a simple text file + or an image. + </p> + <p> + Removing the <span class= + "QUOTE">"Content-Disposition:"</span> header helps to + prevent this annoyance, but some browsers additionally + check the <span class="QUOTE">"Content-Type:"</span> + header, before they decide if they can display a document + without saving it first. In these cases, you have to change + this header as well, before the browser stops displaying + download menus. + </p> + <p> + It is also possible to change the server's file name + suggestion to another one, but in most cases it isn't worth + the time to set it up. + </p> + <p> + This action will probably be removed in the future, use + server-header filters instead. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Disarm the download link in Sourceforge's patch tracker { -filter \ +content-type-overwrite{text/plain}\ +hide-content-disposition{block} } - .sourceforge.net/tracker/download\.php</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HIDE-IF-MODIFIED-SINCE" ->8.5.22. hide-if-modified-since</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Prevent yet another way to track the user's steps between sessions.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes the <SPAN -CLASS="QUOTE" ->"If-Modified-Since:"</SPAN -> HTTP client header or modifies its value. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Keyword: <SPAN -CLASS="QUOTE" ->"block"</SPAN ->, or a user defined value that specifies a range of hours. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Removing this header is useful for filter testing, where you want to force a real - reload instead of getting status code <SPAN -CLASS="QUOTE" ->"304"</SPAN ->, which would cause the - browser to use a cached copy of the page. - </P -><P -> Instead of removing the header, <TT -CLASS="LITERAL" ->hide-if-modified-since</TT -> can - also add or subtract a random amount of time to/from the header's value. - You specify a range of minutes where the random factor should be chosen from and - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> does the rest. A negative value means - subtracting, a positive value adding. - </P -><P -> Randomizing the value of the <SPAN -CLASS="QUOTE" ->"If-Modified-Since:"</SPAN -> makes - it less likely that the server can use the time as a cookie replacement, - but you will run into caching problems if the random range is too high. - </P -><P -> It is a good idea to only use a small negative value and let - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#OVERWRITE-LAST-MODIFIED" ->overwrite-last-modified</A -></TT -> - handle the greater changes. - </P -><P -> It is also recommended to use this action together with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-IF-NONE-MATCH" ->crunch-if-none-match</A -></TT ->, - otherwise it's more or less pointless. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Let the browser revalidate but make tracking based on the time less likely. + .sourceforge.net/tracker/download\.php +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HIDE-IF-MODIFIED-SINCE">8.5.22. + hide-if-modified-since</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Prevent yet another way to track the user's steps between + sessions. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes the <span class="QUOTE">"If-Modified-Since:"</span> + HTTP client header or modifies its value. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Keyword: <span class="QUOTE">"block"</span>, or a user + defined value that specifies a range of hours. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Removing this header is useful for filter testing, where + you want to force a real reload instead of getting status + code <span class="QUOTE">"304"</span>, which would cause + the browser to use a cached copy of the page. + </p> + <p> + Instead of removing the header, <tt class= + "LITERAL">hide-if-modified-since</tt> can also add or + subtract a random amount of time to/from the header's + value. You specify a range of minutes where the random + factor should be chosen from and <span class= + "APPLICATION">Privoxy</span> does the rest. A negative + value means subtracting, a positive value adding. + </p> + <p> + Randomizing the value of the <span class= + "QUOTE">"If-Modified-Since:"</span> makes it less likely + that the server can use the time as a cookie replacement, + but you will run into caching problems if the random range + is too high. + </p> + <p> + It is a good idea to only use a small negative value and + let <tt class="LITERAL"><a href= + "actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a></tt> + handle the greater changes. + </p> + <p> + It is also recommended to use this action together with <tt + class="LITERAL"><a href= + "actions-file.html#CRUNCH-IF-NONE-MATCH">crunch-if-none-match</a></tt>, + otherwise it's more or less pointless. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Let the browser revalidate but make tracking based on the time less likely. {+hide-if-modified-since{-60} \ +overwrite-last-modified{randomize} \ +crunch-if-none-match} -/</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HIDE-FROM-HEADER" ->8.5.23. hide-from-header</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Keep your (old and ill) browser from telling web servers your email address</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes any existing <SPAN -CLASS="QUOTE" ->"From:"</SPAN -> HTTP header, or replaces it with the - specified string. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Keyword: <SPAN -CLASS="QUOTE" ->"block"</SPAN ->, or any user defined value. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> The keyword <SPAN -CLASS="QUOTE" ->"block"</SPAN -> will completely remove the header - (not to be confused with the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> - action). - </P -><P -> Alternately, you can specify any value you prefer to be sent to the web - server. If you do, it is a matter of fairness not to use any address that - is actually used by a real person. - </P -><P -> This action is rarely needed, as modern web browsers don't send - <SPAN -CLASS="QUOTE" ->"From:"</SPAN -> headers anymore. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+hide-from-header{block}</PRE -></TD -></TR -></TABLE -> or - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+hide-from-header{spam-me-senseless@sittingduck.example.com}</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HIDE-REFERRER" ->8.5.24. hide-referrer</A -></H4 -><A -NAME="HIDE-REFERER" -></A -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Conceal which link you followed to get to a particular site</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes the <SPAN -CLASS="QUOTE" ->"Referer:"</SPAN -> (sic) HTTP header from the client request, - or replaces it with a forged one. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -></P -><UL -><LI -><P -><SPAN -CLASS="QUOTE" ->"conditional-block"</SPAN -> to delete the header completely if the host has changed.</P -></LI -><LI -><P -><SPAN -CLASS="QUOTE" ->"conditional-forge"</SPAN -> to forge the header if the host has changed.</P -></LI -><LI -><P -><SPAN -CLASS="QUOTE" ->"block"</SPAN -> to delete the header unconditionally.</P -></LI -><LI -><P -><SPAN -CLASS="QUOTE" ->"forge"</SPAN -> to pretend to be coming from the homepage of the server we are talking to.</P -></LI -><LI -><P ->Any other string to set a user defined referrer.</P -></LI -></UL -></DD -><DT ->Notes:</DT -><DD -><P -> <TT -CLASS="LITERAL" ->conditional-block</TT -> is the only parameter, - that isn't easily detected in the server's log file. If it blocks the - referrer, the request will look like the visitor used a bookmark or - typed in the address directly. - </P -><P -> Leaving the referrer unmodified for requests on the same host - allows the server owner to see the visitor's <SPAN -CLASS="QUOTE" ->"click path"</SPAN ->, - but in most cases she could also get that information by comparing - other parts of the log file: for example the User-Agent if it isn't - a very common one, or the user's IP address if it doesn't change between - different requests. - </P -><P -> Always blocking the referrer, or using a custom one, can lead to - failures on servers that check the referrer before they answer any - requests, in an attempt to prevent their content from being - embedded or linked to elsewhere. - </P -><P -> Both <TT -CLASS="LITERAL" ->conditional-block</TT -> and <TT -CLASS="LITERAL" ->forge</TT -> - will work with referrer checks, as long as content and valid referring page - are on the same host. Most of the time that's the case. - </P -><P -> - <TT -CLASS="LITERAL" ->hide-referer</TT -> is an alternate spelling of - <TT -CLASS="LITERAL" ->hide-referrer</TT -> and the two can be can be freely - substituted with each other. (<SPAN -CLASS="QUOTE" ->"referrer"</SPAN -> is the - correct English spelling, however the HTTP specification has a bug - it - requires it to be spelled as <SPAN -CLASS="QUOTE" ->"referer"</SPAN ->.) - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+hide-referrer{forge}</PRE -></TD -></TR -></TABLE -> or - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+hide-referrer{http://www.yahoo.com/}</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HIDE-USER-AGENT" ->8.5.25. hide-user-agent</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Try to conceal your type of browser and client operating system</P -></DD -><DT ->Effect:</DT -><DD -><P -> Replaces the value of the <SPAN -CLASS="QUOTE" ->"User-Agent:"</SPAN -> HTTP header - in client requests with the specified value. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> Any user-defined string. - </P -></DD -><DT ->Notes:</DT -><DD -><DIV -CLASS="WARNING" -><P -></P -><TABLE -CLASS="WARNING" -BORDER="1" -WIDTH="90%" -><TR -><TD -ALIGN="CENTER" -><B ->Warning</B -></TD -></TR -><TR -><TD -ALIGN="LEFT" -><P -> This can lead to problems on web sites that depend on looking at this header in - order to customize their content for different browsers (which, by the - way, is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->NOT</I -></SPAN -> the right thing to do: good web sites - work browser-independently). - </P -></TD -></TR -></TABLE -></DIV -><P -> Using this action in multi-user setups or wherever different types of - browsers will access the same <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not recommended</I -></SPAN ->. In single-user, single-browser - setups, you might use it to delete your OS version information from - the headers, because it is an invitation to exploit known bugs for your - OS. It is also occasionally useful to forge this in order to access - sites that won't let you in otherwise (though there may be a good - reason in some cases). - </P -><P -> More information on known user-agent strings can be found at - <A -HREF="http://www.user-agents.org/" -TARGET="_top" ->http://www.user-agents.org/</A -> - and - <A -HREF="http://en.wikipedia.org/wiki/User_agent" -TARGET="_top" ->http://en.wikipedia.org/wiki/User_agent</A ->. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="LIMIT-CONNECT" ->8.5.26. limit-connect</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Prevent abuse of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> as a TCP proxy relay or disable SSL for untrusted sites</P -></DD -><DT ->Effect:</DT -><DD -><P -> Specifies to which ports HTTP CONNECT requests are allowable. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> A comma-separated list of ports or port ranges (the latter using dashes, with the minimum - defaulting to 0 and the maximum to 65K). - </P -></DD -><DT ->Notes:</DT -><DD -><P -> By default, i.e. if no <TT -CLASS="LITERAL" ->limit-connect</TT -> action applies, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> allows HTTP CONNECT requests to all - ports. Use <TT -CLASS="LITERAL" ->limit-connect</TT -> if fine-grained control - is desired for some or all destinations. - </P -><P -> The CONNECT methods exists in HTTP to allow access to secure websites - (<SPAN -CLASS="QUOTE" ->"https://"</SPAN -> 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 and to the remote server. - This means CONNECT-enabled proxies can be used as TCP relays very easily. - </P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> relays HTTPS traffic without seeing - the decoded content. Websites can leverage this limitation to circumvent <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s - filters. By specifying an invalid port range you can disable HTTPS entirely. - </P -></DD -><DT ->Example usages:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+limit-connect{443} # Port 443 is OK. +/ +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HIDE-FROM-HEADER">8.5.23. hide-from-header</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Keep your (old and ill) browser from telling web servers + your email address + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes any existing <span class="QUOTE">"From:"</span> + HTTP header, or replaces it with the specified string. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Keyword: <span class="QUOTE">"block"</span>, or any user + defined value. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The keyword <span class="QUOTE">"block"</span> will + completely remove the header (not to be confused with the + <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> action). + </p> + <p> + Alternately, you can specify any value you prefer to be + sent to the web server. If you do, it is a matter of + fairness not to use any address that is actually used by a + real person. + </p> + <p> + This action is rarely needed, as modern web browsers don't + send <span class="QUOTE">"From:"</span> headers anymore. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++hide-from-header{block} +</pre> + </td> + </tr> + </table> + or + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++hide-from-header{spam-me-senseless@sittingduck.example.com} +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HIDE-REFERRER">8.5.24. hide-referrer</a> + </h4> + <a name="HIDE-REFERER"></a> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Conceal which link you followed to get to a particular site + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes the <span class="QUOTE">"Referer:"</span> (sic) + HTTP header from the client request, or replaces it with a + forged one. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <ul> + <li> + <p> + <span class="QUOTE">"conditional-block"</span> to + delete the header completely if the host has changed. + </p> + </li> + <li> + <p> + <span class="QUOTE">"conditional-forge"</span> to forge + the header if the host has changed. + </p> + </li> + <li> + <p> + <span class="QUOTE">"block"</span> to delete the header + unconditionally. + </p> + </li> + <li> + <p> + <span class="QUOTE">"forge"</span> to pretend to be + coming from the homepage of the server we are talking + to. + </p> + </li> + <li> + <p> + Any other string to set a user defined referrer. + </p> + </li> + </ul> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + <tt class="LITERAL">conditional-block</tt> is the only + parameter, that isn't easily detected in the server's log + file. If it blocks the referrer, the request will look like + the visitor used a bookmark or typed in the address + directly. + </p> + <p> + Leaving the referrer unmodified for requests on the same + host allows the server owner to see the visitor's <span + class="QUOTE">"click path"</span>, but in most cases she + could also get that information by comparing other parts of + the log file: for example the User-Agent if it isn't a very + common one, or the user's IP address if it doesn't change + between different requests. + </p> + <p> + Always blocking the referrer, or using a custom one, can + lead to failures on servers that check the referrer before + they answer any requests, in an attempt to prevent their + content from being embedded or linked to elsewhere. + </p> + <p> + Both <tt class="LITERAL">conditional-block</tt> and <tt + class="LITERAL">forge</tt> will work with referrer checks, + as long as content and valid referring page are on the same + host. Most of the time that's the case. + </p> + <p> + <tt class="LITERAL">hide-referer</tt> is an alternate + spelling of <tt class="LITERAL">hide-referrer</tt> and the + two can be can be freely substituted with each other. + (<span class="QUOTE">"referrer"</span> is the correct + English spelling, however the HTTP specification has a bug + - it requires it to be spelled as <span class= + "QUOTE">"referer"</span>.) + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++hide-referrer{forge} +</pre> + </td> + </tr> + </table> + or + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++hide-referrer{http://www.yahoo.com/} +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HIDE-USER-AGENT">8.5.25. hide-user-agent</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Try to conceal your type of browser and client operating + system + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Replaces the value of the <span class= + "QUOTE">"User-Agent:"</span> HTTP header in client requests + with the specified value. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + Any user-defined string. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <div class="WARNING"> + <table class="WARNING" border="1" width="90%"> + <tr> + <td align="CENTER"> + <b>Warning</b> + </td> + </tr> + <tr> + <td align="LEFT"> + <p> + This can lead to problems on web sites that depend + on looking at this header in order to customize + their content for different browsers (which, by the + way, is <span class="emphasis"><i class= + "EMPHASIS">NOT</i></span> the right thing to do: + good web sites work browser-independently). + </p> + </td> + </tr> + </table> + </div> + <p> + Using this action in multi-user setups or wherever + different types of browsers will access the same <span + class="APPLICATION">Privoxy</span> is <span class= + "emphasis"><i class="EMPHASIS">not recommended</i></span>. + In single-user, single-browser setups, you might use it to + delete your OS version information from the headers, + because it is an invitation to exploit known bugs for your + OS. It is also occasionally useful to forge this in order + to access sites that won't let you in otherwise (though + there may be a good reason in some cases). + </p> + <p> + More information on known user-agent strings can be found + at <a href="http://www.user-agents.org/" target= + "_top">http://www.user-agents.org/</a> and <a href= + "http://en.wikipedia.org/wiki/User_agent" target= + "_top">http://en.wikipedia.org/wiki/User_agent</a>. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)} +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="LIMIT-CONNECT">8.5.26. limit-connect</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Prevent abuse of <span class="APPLICATION">Privoxy</span> + as a TCP proxy relay or disable SSL for untrusted sites + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Specifies to which ports HTTP CONNECT requests are + allowable. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + A comma-separated list of ports or port ranges (the latter + using dashes, with the minimum defaulting to 0 and the + maximum to 65K). + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + By default, i.e. if no <tt class= + "LITERAL">limit-connect</tt> action applies, <span class= + "APPLICATION">Privoxy</span> allows HTTP CONNECT requests + to all ports. Use <tt class="LITERAL">limit-connect</tt> if + fine-grained control is desired for some or all + destinations. + </p> + <p> + The CONNECT methods exists in HTTP to allow access to + secure websites (<span class="QUOTE">"https://"</span> + 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 and to the + remote server. This means CONNECT-enabled proxies can be + used as TCP relays very easily. + </p> + <p> + <span class="APPLICATION">Privoxy</span> relays HTTPS + traffic without seeing the decoded content. Websites can + leverage this limitation to circumvent <span class= + "APPLICATION">Privoxy</span>'s filters. By specifying an + invalid port range you can disable HTTPS entirely. + </p> + </dd> + <dt> + Example usages: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++limit-connect{443} # Port 443 is OK. +limit-connect{80,443} # Ports 80 and 443 are OK. +limit-connect{-3, 7, 20-100, 500-} # Ports less than 3, 7, 20 to 100 and above 500 are OK. +limit-connect{-} # All ports are OK -+limit-connect{,} # No HTTPS/SSL traffic is allowed</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="PREVENT-COMPRESSION" ->8.5.27. prevent-compression</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Ensure that servers send the content uncompressed, so it can be - passed through <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->filter</A -></TT ->s. - </P -></DD -><DT ->Effect:</DT -><DD -><P -> Removes the Accept-Encoding header which can be used to ask for compressed transfer. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> More and more websites send their content compressed by default, which - is generally a good idea and saves bandwidth. But the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->filter</A -></TT -> and - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#DEANIMATE-GIFS" ->deanimate-gifs</A -></TT -> - actions need access to the uncompressed data. - </P -><P -> When compiled with zlib support (available since <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.7), content that should be - filtered is decompressed on-the-fly and you don't have to worry about this action. - If you are using an older <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version, or one that hasn't been compiled with zlib - support, this action can be used to convince the server to send the content uncompressed. - </P -><P -> Most text-based instances compress very well, the size is seldom decreased by less than 50%, - for markup-heavy instances like news feeds saving more than 90% of the original size isn't - unusual. - </P -><P -> Not using compression will therefore slow down the transfer, and you should only - enable this action if you really need it. As of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.7 it's disabled in all - predefined action settings. - </P -><P -> Note that some (rare) ill-configured sites don't handle requests for uncompressed - documents correctly. Broken PHP applications tend to send an empty document body, - some IIS versions only send the beginning of the content. If you enable - <TT -CLASS="LITERAL" ->prevent-compression</TT -> per default, you might want to add - exceptions for those sites. See the example for how to do that. - </P -></DD -><DT ->Example usage (sections):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Selectively turn off compression, and enable a filter ++limit-connect{,} # No HTTPS/SSL traffic is allowed +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="PREVENT-COMPRESSION">8.5.27. prevent-compression</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Ensure that servers send the content uncompressed, so it + can be passed through <tt class="LITERAL"><a href= + "actions-file.html#FILTER">filter</a></tt>s. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Removes the Accept-Encoding header which can be used to ask + for compressed transfer. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + More and more websites send their content compressed by + default, which is generally a good idea and saves + bandwidth. But the <tt class="LITERAL"><a href= + "actions-file.html#FILTER">filter</a></tt> and <tt class= + "LITERAL"><a href= + "actions-file.html#DEANIMATE-GIFS">deanimate-gifs</a></tt> + actions need access to the uncompressed data. + </p> + <p> + When compiled with zlib support (available since <span + class="APPLICATION">Privoxy</span> 3.0.7), content that + should be filtered is decompressed on-the-fly and you don't + have to worry about this action. If you are using an older + <span class="APPLICATION">Privoxy</span> version, or one + that hasn't been compiled with zlib support, this action + can be used to convince the server to send the content + uncompressed. + </p> + <p> + Most text-based instances compress very well, the size is + seldom decreased by less than 50%, for markup-heavy + instances like news feeds saving more than 90% of the + original size isn't unusual. + </p> + <p> + Not using compression will therefore slow down the + transfer, and you should only enable this action if you + really need it. As of <span class= + "APPLICATION">Privoxy</span> 3.0.7 it's disabled in all + predefined action settings. + </p> + <p> + Note that some (rare) ill-configured sites don't handle + requests for uncompressed documents correctly. Broken PHP + applications tend to send an empty document body, some IIS + versions only send the beginning of the content. If you + enable <tt class="LITERAL">prevent-compression</tt> per + default, you might want to add exceptions for those sites. + See the example for how to do that. + </p> + </dd> + <dt> + Example usage (sections): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Selectively turn off compression, and enable a filter # { +filter{tiny-textforms} +prevent-compression } # Match only these sites @@ -5788,1076 +4263,771 @@ CLASS="SCREEN" # Then maybe make exceptions for broken sites: # { -prevent-compression } -.compusa.com/</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="OVERWRITE-LAST-MODIFIED" ->8.5.28. overwrite-last-modified</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Prevent yet another way to track the user's steps between sessions.</P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes the <SPAN -CLASS="QUOTE" ->"Last-Modified:"</SPAN -> HTTP server header or modifies its value. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> One of the keywords: <SPAN -CLASS="QUOTE" ->"block"</SPAN ->, <SPAN -CLASS="QUOTE" ->"reset-to-request-time"</SPAN -> - and <SPAN -CLASS="QUOTE" ->"randomize"</SPAN -> - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Removing the <SPAN -CLASS="QUOTE" ->"Last-Modified:"</SPAN -> header is useful for filter - testing, where you want to force a real reload instead of getting status - code <SPAN -CLASS="QUOTE" ->"304"</SPAN ->, which would cause the browser to reuse the old - version of the page. - </P -><P -> The <SPAN -CLASS="QUOTE" ->"randomize"</SPAN -> option overwrites the value of the - <SPAN -CLASS="QUOTE" ->"Last-Modified:"</SPAN -> header with a randomly chosen time - between the original value and the current time. In theory the server - could send each document with a different <SPAN -CLASS="QUOTE" ->"Last-Modified:"</SPAN -> - header to track visits without using cookies. <SPAN -CLASS="QUOTE" ->"Randomize"</SPAN -> - makes it impossible and the browser can still revalidate cached documents. - </P -><P -> <SPAN -CLASS="QUOTE" ->"reset-to-request-time"</SPAN -> overwrites the value of the - <SPAN -CLASS="QUOTE" ->"Last-Modified:"</SPAN -> header with the current time. You could use - this option together with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HIDE-IF-MODIFIED-SINCE" ->hide-if-modified-since</A -></TT -> - to further customize your random range. - </P -><P -> The preferred parameter here is <SPAN -CLASS="QUOTE" ->"randomize"</SPAN ->. It is safe - to use, as long as the time settings are more or less correct. - If the server sets the <SPAN -CLASS="QUOTE" ->"Last-Modified:"</SPAN -> header to the time - of the request, the random range becomes zero and the value stays the same. - Therefore you should later randomize it a second time with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HIDE-IF-MODIFIED-SINCE" ->hided-if-modified-since</A -></TT ->, - just to be sure. - </P -><P -> It is also recommended to use this action together with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-IF-NONE-MATCH" ->crunch-if-none-match</A -></TT ->. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Let the browser revalidate without being tracked across sessions +.compusa.com/ +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="OVERWRITE-LAST-MODIFIED">8.5.28. + overwrite-last-modified</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Prevent yet another way to track the user's steps between + sessions. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes the <span class="QUOTE">"Last-Modified:"</span> + HTTP server header or modifies its value. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + One of the keywords: <span class="QUOTE">"block"</span>, + <span class="QUOTE">"reset-to-request-time"</span> and + <span class="QUOTE">"randomize"</span> + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Removing the <span class="QUOTE">"Last-Modified:"</span> + header is useful for filter testing, where you want to + force a real reload instead of getting status code <span + class="QUOTE">"304"</span>, which would cause the browser + to reuse the old version of the page. + </p> + <p> + The <span class="QUOTE">"randomize"</span> option + overwrites the value of the <span class= + "QUOTE">"Last-Modified:"</span> header with a randomly + chosen time between the original value and the current + time. In theory the server could send each document with a + different <span class="QUOTE">"Last-Modified:"</span> + header to track visits without using cookies. <span class= + "QUOTE">"Randomize"</span> makes it impossible and the + browser can still revalidate cached documents. + </p> + <p> + <span class="QUOTE">"reset-to-request-time"</span> + overwrites the value of the <span class= + "QUOTE">"Last-Modified:"</span> header with the current + time. You could use this option together with <tt class= + "LITERAL"><a href= + "actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a></tt> + to further customize your random range. + </p> + <p> + The preferred parameter here is <span class= + "QUOTE">"randomize"</span>. It is safe to use, as long as + the time settings are more or less correct. If the server + sets the <span class="QUOTE">"Last-Modified:"</span> header + to the time of the request, the random range becomes zero + and the value stays the same. Therefore you should later + randomize it a second time with <tt class="LITERAL"><a + href= + "actions-file.html#HIDE-IF-MODIFIED-SINCE">hided-if-modified-since</a></tt>, + just to be sure. + </p> + <p> + It is also recommended to use this action together with <tt + class="LITERAL"><a href= + "actions-file.html#CRUNCH-IF-NONE-MATCH">crunch-if-none-match</a></tt>. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Let the browser revalidate without being tracked across sessions { +hide-if-modified-since{-60} \ +overwrite-last-modified{randomize} \ +crunch-if-none-match} -/</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="REDIRECT" ->8.5.29. redirect</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Redirect requests to other sites. - </P -></DD -><DT ->Effect:</DT -><DD -><P -> Convinces the browser that the requested document has been moved - to another location and the browser should get it from there. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized</P -></DD -><DT ->Parameter:</DT -><DD -><P -> An absolute URL or a single pcrs command. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Requests to which this action applies are answered with a - HTTP redirect to URLs of your choosing. The new URL is - either provided as parameter, or derived by applying a - single pcrs command to the original URL. - </P -><P -> This action will be ignored if you use it together with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT ->. - It can be combined with - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FAST-REDIRECTS" ->fast-redirects{check-decoded-url}</A -></TT -> - to redirect to a decoded version of a rewritten URL. - </P -><P -> Use this action carefully, make sure not to create redirection loops - and be aware that using your own redirects might make it - possible to fingerprint your requests. - </P -><P -> In case of problems with your redirects, or simply to watch - them working, enable <A -HREF="config.html#DEBUG" ->debug 128</A ->. - </P -></DD -><DT ->Example usages:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Replace example.com's style sheet with another one +/ +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="REDIRECT">8.5.29. redirect</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Redirect requests to other sites. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Convinces the browser that the requested document has been + moved to another location and the browser should get it + from there. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + An absolute URL or a single pcrs command. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Requests to which this action applies are answered with a + HTTP redirect to URLs of your choosing. The new URL is + either provided as parameter, or derived by applying a + single pcrs command to the original URL. + </p> + <p> + This action will be ignored if you use it together with <tt + class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt>. It can be + combined with <tt class="LITERAL"><a href= + "actions-file.html#FAST-REDIRECTS">fast-redirects{check-decoded-url}</a></tt> + to redirect to a decoded version of a rewritten URL. + </p> + <p> + Use this action carefully, make sure not to create + redirection loops and be aware that using your own + redirects might make it possible to fingerprint your + requests. + </p> + <p> + In case of problems with your redirects, or simply to watch + them working, enable <a href="config.html#DEBUG">debug + 128</a>. + </p> + </dd> + <dt> + Example usages: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Replace example.com's style sheet with another one { +redirect{http://localhost/css-replacements/example.com.css} } example.com/stylesheet\.css # Create a short, easy to remember nickname for a favorite site -# (relies on the browser accept and forward invalid URLs to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->) +# (relies on the browser accept and forward invalid URLs to <span class= +"APPLICATION">Privoxy</span>) { +redirect{http://www.privoxy.org/user-manual/actions-file.html} } a # Always use the expanded view for Undeadly.org articles # (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@$@&mode=expanded@}} -undeadly.org/cgi\?action=article&sid=\d*$ +{+redirect{s@$@&mode=expanded@}} +undeadly.org/cgi\?action=article&sid=\d*$ # Redirect Google search requests to MSN -{+redirect{s@^http://[^/]*/search\?q=([^&]*).*@http://search.msn.com/results.aspx?q=$1@}} +{+redirect{s@^http://[^/]*/search\?q=([^&]*).*@http://search.msn.com/results.aspx?q=$1@}} .google.com/search # Redirect MSN search requests to Yahoo -{+redirect{s@^http://[^/]*/results\.aspx\?q=([^&]*).*@http://search.yahoo.com/search?p=$1@}} +{+redirect{s@^http://[^/]*/results\.aspx\?q=([^&]*).*@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/</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="SERVER-HEADER-FILTER" ->8.5.30. server-header-filter</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Rewrite or remove single server headers. - </P -></DD -><DT ->Effect:</DT -><DD -><P -> All server headers to which this action applies are filtered on-the-fly - through the specified regular expression based substitutions. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> The name of a server-header filter, as defined in one of the - <A -HREF="filter-file.html" ->filter files</A ->. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Server-header filters are applied to each header on its own, not to - all at once. This makes it easier to diagnose problems, but on the downside - you can't write filters that only change header x if header y's value is z. - You can do that by using tags though. - </P -><P -> Server-header filters are executed after the other header actions have finished - and use their output as input. - </P -><P -> Please refer to the <A -HREF="filter-file.html" ->filter file chapter</A -> - to learn which server-header filters are available by default, and how to - create your own. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{+server-header-filter{html-to-xml}} +www.privoxy.org/user-manual/ +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="SERVER-HEADER-FILTER">8.5.30. server-header-filter</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Rewrite or remove single server headers. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + All server headers to which this action applies are + filtered on-the-fly through the specified regular + expression based substitutions. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + The name of a server-header filter, as defined in one of + the <a href="filter-file.html">filter files</a>. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Server-header filters are applied to each header on its + own, not to all at once. This makes it easier to diagnose + problems, but on the downside you can't write filters that + only change header x if header y's value is z. You can do + that by using tags though. + </p> + <p> + Server-header filters are executed after the other header + actions have finished and use their output as input. + </p> + <p> + Please refer to the <a href="filter-file.html">filter file + chapter</a> to learn which server-header filters are + available by default, and how to create your own. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +{+server-header-filter{html-to-xml}} example.org/xml-instance-that-is-delivered-as-html {+server-header-filter{xml-to-html}} example.org/instance-that-is-delivered-as-xml-but-is-not - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="SERVER-HEADER-TAGGER" ->8.5.31. server-header-tagger</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Enable or disable filters based on the Content-Type header. - </P -></DD -><DT ->Effect:</DT -><DD -><P -> Server headers to which this action applies are filtered on-the-fly through - the specified regular expression based substitutions, the result is used as - tag. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> The name of a server-header tagger, as defined in one of the - <A -HREF="filter-file.html" ->filter files</A ->. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Server-header taggers are applied to each header on its own, - and as the header isn't modified, each tagger <SPAN -CLASS="QUOTE" ->"sees"</SPAN -> - the original. - </P -><P -> Server-header taggers are executed before all other header actions - that modify server headers. Their tags can be used to control - all of the other server-header actions, the content filters - and the crunch actions (<A -HREF="actions-file.html#REDIRECT" ->redirect</A -> - and <A -HREF="actions-file.html#BLOCK" ->block</A ->). - </P -><P -> Obviously crunching based on tags created by server-header taggers - doesn't prevent the request from showing up in the server's log file. - </P -></DD -><DT ->Example usage (section):</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Tag every request with the content type declared by the server + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="SERVER-HEADER-TAGGER">8.5.31. server-header-tagger</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Enable or disable filters based on the Content-Type header. + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Server headers to which this action applies are filtered + on-the-fly through the specified regular expression based + substitutions, the result is used as tag. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + The name of a server-header tagger, as defined in one of + the <a href="filter-file.html">filter files</a>. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Server-header taggers are applied to each header on its + own, and as the header isn't modified, each tagger <span + class="QUOTE">"sees"</span> the original. + </p> + <p> + Server-header taggers are executed before all other header + actions that modify server headers. Their tags can be used + to control all of the other server-header actions, the + content filters and the crunch actions (<a href= + "actions-file.html#REDIRECT">redirect</a> and <a href= + "actions-file.html#BLOCK">block</a>). + </p> + <p> + Obviously crunching based on tags created by server-header + taggers doesn't prevent the request from showing up in the + server's log file. + </p> + </dd> + <dt> + Example usage (section): + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> +# Tag every request with the content type declared by the server {+server-header-tagger{content-type}} / - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="SESSION-COOKIES-ONLY" ->8.5.32. session-cookies-only</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P -> Allow only temporary <SPAN -CLASS="QUOTE" ->"session"</SPAN -> cookies (for the current - browser session <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->only</I -></SPAN ->). - </P -></DD -><DT ->Effect:</DT -><DD -><P -> Deletes the <SPAN -CLASS="QUOTE" ->"expires"</SPAN -> field from <SPAN -CLASS="QUOTE" ->"Set-Cookie:"</SPAN -> - server headers. Most browsers will not store such cookies permanently and - forget them in between sessions. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Boolean.</P -></DD -><DT ->Parameter:</DT -><DD -><P -> N/A - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This is less strict than <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -></TT -> / - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -></TT -> and allows you to browse - websites that insist or rely on setting cookies, without compromising your privacy too badly. - </P -><P -> Most browsers will not permanently store cookies that have been processed by - <TT -CLASS="LITERAL" ->session-cookies-only</TT -> and will forget about them between sessions. - 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. - </P -><P -> It makes <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->no sense at all</I -></SPAN -> to use <TT -CLASS="LITERAL" ->session-cookies-only</TT -> - together with <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -></TT -> or - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -></TT ->. If you do, cookies - will be plainly killed. - </P -><P -> Note that it is up to the browser how it handles such cookies without an <SPAN -CLASS="QUOTE" ->"expires"</SPAN -> - field. If you use an exotic browser, you might want to try it out to be sure. - </P -><P -> This setting also has no effect on cookies that may have been stored - previously by the browser before starting <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - These would have to be removed manually. - </P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> also uses - the <A -HREF="actions-file.html#FILTER-CONTENT-COOKIES" ->content-cookies filter</A -> - to block some types of cookies. Content cookies are not effected by - <TT -CLASS="LITERAL" ->session-cookies-only</TT ->. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+session-cookies-only</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="SET-IMAGE-BLOCKER" ->8.5.33. set-image-blocker</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Typical use:</DT -><DD -><P ->Choose the replacement for blocked images</P -></DD -><DT ->Effect:</DT -><DD -><P -> This action alone doesn't do anything noticeable. If <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->both</I -></SPAN -> - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->and</I -></SPAN -> <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></TT -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->also</I -></SPAN -> - apply, i.e. if the request is to be blocked as an image, - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->then</I -></SPAN -> the parameter of this action decides what will be - sent as a replacement. - </P -></DD -><DT ->Type:</DT -><DD -><P ->Parameterized.</P -></DD -><DT ->Parameter:</DT -><DD -><P -></P -><UL -><LI -><P -> <SPAN -CLASS="QUOTE" ->"pattern"</SPAN -> to send a built-in checkerboard pattern image. The image is visually - decent, scales very well, and makes it obvious where banners were busted. - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"blank"</SPAN -> to send a built-in transparent image. This makes banners disappear - completely, but makes it hard to detect where <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has blocked - images on a given page and complicates troubleshooting if <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - has blocked innocent images, like navigation icons. - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"<TT -CLASS="REPLACEABLE" -><I ->target-url</I -></TT ->"</SPAN -> to - send a redirect to <TT -CLASS="REPLACEABLE" -><I ->target-url</I -></TT ->. You can redirect - to any image anywhere, even in your local filesystem via <SPAN -CLASS="QUOTE" ->"file:///"</SPAN -> URL. - (But note that not all browsers support redirecting to a local file system). - </P -><P -> A good application of redirects is to use special <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->-built-in - URLs, which send the built-in images, as <TT -CLASS="REPLACEABLE" -><I ->target-url</I -></TT ->. - This has the same visual effect as specifying <SPAN -CLASS="QUOTE" ->"blank"</SPAN -> or <SPAN -CLASS="QUOTE" ->"pattern"</SPAN -> in - the first place, but enables your browser to cache the replacement image, instead of requesting - it over and over again. - </P -></LI -></UL -></DD -><DT ->Notes:</DT -><DD -><P -> The URLs for the built-in images are <SPAN -CLASS="QUOTE" ->"http://config.privoxy.org/send-banner?type=<TT -CLASS="REPLACEABLE" -><I ->type</I -></TT ->"</SPAN ->, where <TT -CLASS="REPLACEABLE" -><I ->type</I -></TT -> is - either <SPAN -CLASS="QUOTE" ->"blank"</SPAN -> or <SPAN -CLASS="QUOTE" ->"pattern"</SPAN ->. - </P -><P -> There is a third (advanced) type, called <SPAN -CLASS="QUOTE" ->"auto"</SPAN ->. It is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->NOT</I -></SPAN -> to be - used in <TT -CLASS="LITERAL" ->set-image-blocker</TT ->, but meant for use from <A -HREF="filter-file.html" ->filters</A ->. - Auto will select the type of image that would have applied to the referring page, had it been an image. - </P -></DD -><DT ->Example usage:</DT -><DD -><P -> Built-in pattern: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+set-image-blocker{pattern}</PRE -></TD -></TR -></TABLE -> - </P -><P -> Redirect to the BSD daemon: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}</PRE -></TD -></TR -></TABLE -> - </P -><P -> Redirect to the built-in pattern for better caching: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" ->+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="AEN4549" ->8.5.34. Summary</A -></H3 -><P -> 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 <A -HREF="appendix.html#ACTIONSANAT" ->Appendix</A -> for a brief example on troubleshooting - actions.</P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="ALIASES" ->8.6. Aliases</A -></H2 -><P -> Custom <SPAN -CLASS="QUOTE" ->"actions"</SPAN ->, known to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - as <SPAN -CLASS="QUOTE" ->"aliases"</SPAN ->, can be defined by combining other actions. - These can in turn be invoked just like the built-in actions. - Currently, an alias name can contain any character except space, tab, - <SPAN -CLASS="QUOTE" ->"="</SPAN ->, - <SPAN -CLASS="QUOTE" ->"{"</SPAN -> and <SPAN -CLASS="QUOTE" ->"}"</SPAN ->, but we <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->strongly - recommend</I -></SPAN -> that you only use <SPAN -CLASS="QUOTE" ->"a"</SPAN -> to <SPAN -CLASS="QUOTE" ->"z"</SPAN ->, - <SPAN -CLASS="QUOTE" ->"0"</SPAN -> to <SPAN -CLASS="QUOTE" ->"9"</SPAN ->, <SPAN -CLASS="QUOTE" ->"+"</SPAN ->, and <SPAN -CLASS="QUOTE" ->"-"</SPAN ->. - Alias names are not case sensitive, and are not required to start with a - <SPAN -CLASS="QUOTE" ->"+"</SPAN -> or <SPAN -CLASS="QUOTE" ->"-"</SPAN -> sign, since they are merely textually - expanded.</P -><P -> Aliases can be used throughout the actions file, but they <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->must be - defined in a special section at the top of the file!</I -></SPAN -> - And there can only be one such section per actions file. Each actions file may - have its own alias section, and the aliases defined in it are only visible - within that file.</P -><P -> There are two main reasons to use aliases: One is to save typing for frequently - used combinations of actions, the other one is a gain in flexibility: If you - decide once how you want to handle shops by defining an alias called - <SPAN -CLASS="QUOTE" ->"shop"</SPAN ->, you can later change your policy on shops in - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->one</I -></SPAN -> place, and your changes will take effect everywhere - in the actions file where the <SPAN -CLASS="QUOTE" ->"shop"</SPAN -> alias is used. Calling aliases - by their purpose also makes your actions files more readable.</P -><P -> Currently, there is one big drawback to using aliases, though: - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s built-in web-based action file - editor honors aliases when reading the actions files, but it expands - them before writing. So the effects of your aliases are of course preserved, - but the aliases themselves are lost when you edit sections that use aliases - with it.</P -><P -> Now let's define some aliases...</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # Useful custom aliases we can use later. + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="SESSION-COOKIES-ONLY">8.5.32. session-cookies-only</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Allow only temporary <span class="QUOTE">"session"</span> + cookies (for the current browser session <span class= + "emphasis"><i class="EMPHASIS">only</i></span>). + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + Deletes the <span class="QUOTE">"expires"</span> field from + <span class="QUOTE">"Set-Cookie:"</span> server headers. + Most browsers will not store such cookies permanently and + forget them in between sessions. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Boolean. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <p> + N/A + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This is less strict than <tt class="LITERAL"><a href= + "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt> + / <tt class="LITERAL"><a href= + "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt> + and allows you to browse websites that insist or rely on + setting cookies, without compromising your privacy too + badly. + </p> + <p> + Most browsers will not permanently store cookies that have + been processed by <tt class= + "LITERAL">session-cookies-only</tt> and will forget about + them between sessions. 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. + </p> + <p> + It makes <span class="emphasis"><i class="EMPHASIS">no + sense at all</i></span> to use <tt class= + "LITERAL">session-cookies-only</tt> together with <tt + class="LITERAL"><a href= + "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt> + or <tt class="LITERAL"><a href= + "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt>. + If you do, cookies will be plainly killed. + </p> + <p> + Note that it is up to the browser how it handles such + cookies without an <span class="QUOTE">"expires"</span> + field. If you use an exotic browser, you might want to try + it out to be sure. + </p> + <p> + This setting also has no effect on cookies that may have + been stored previously by the browser before starting <span + class="APPLICATION">Privoxy</span>. These would have to be + removed manually. + </p> + <p> + <span class="APPLICATION">Privoxy</span> also uses the <a + href= + "actions-file.html#FILTER-CONTENT-COOKIES">content-cookies + filter</a> to block some types of cookies. Content cookies + are not effected by <tt class= + "LITERAL">session-cookies-only</tt>. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++session-cookies-only +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="SET-IMAGE-BLOCKER">8.5.33. set-image-blocker</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Typical use: + </dt> + <dd> + <p> + Choose the replacement for blocked images + </p> + </dd> + <dt> + Effect: + </dt> + <dd> + <p> + This action alone doesn't do anything noticeable. If <span + class="emphasis"><i class="EMPHASIS">both</i></span> <tt + class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> <span class= + "emphasis"><i class="EMPHASIS">and</i></span> <tt class= + "LITERAL"><a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> + <span class="emphasis"><i class="EMPHASIS">also</i></span> + apply, i.e. if the request is to be blocked as an image, + <span class="emphasis"><i class="EMPHASIS">then</i></span> + the parameter of this action decides what will be sent as a + replacement. + </p> + </dd> + <dt> + Type: + </dt> + <dd> + <p> + Parameterized. + </p> + </dd> + <dt> + Parameter: + </dt> + <dd> + <ul> + <li> + <p> + <span class="QUOTE">"pattern"</span> to send a built-in + checkerboard pattern image. The image is visually + decent, scales very well, and makes it obvious where + banners were busted. + </p> + </li> + <li> + <p> + <span class="QUOTE">"blank"</span> to send a built-in + transparent image. This makes banners disappear + completely, but makes it hard to detect where <span + class="APPLICATION">Privoxy</span> has blocked images + on a given page and complicates troubleshooting if + <span class="APPLICATION">Privoxy</span> has blocked + innocent images, like navigation icons. + </p> + </li> + <li> + <p> + <span class="QUOTE">"<tt class= + "REPLACEABLE"><i>target-url</i></tt>"</span> to send a + redirect to <tt class= + "REPLACEABLE"><i>target-url</i></tt>. You can redirect + to any image anywhere, even in your local filesystem + via <span class="QUOTE">"file:///"</span> URL. (But + note that not all browsers support redirecting to a + local file system). + </p> + <p> + A good application of redirects is to use special <span + class="APPLICATION">Privoxy</span>-built-in URLs, which + send the built-in images, as <tt class= + "REPLACEABLE"><i>target-url</i></tt>. This has the same + visual effect as specifying <span class= + "QUOTE">"blank"</span> or <span class= + "QUOTE">"pattern"</span> in the first place, but + enables your browser to cache the replacement image, + instead of requesting it over and over again. + </p> + </li> + </ul> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The URLs for the built-in images are <span class= + "QUOTE">"http://config.privoxy.org/send-banner?type=<tt + class="REPLACEABLE"><i>type</i></tt>"</span>, where <tt + class="REPLACEABLE"><i>type</i></tt> is either <span class= + "QUOTE">"blank"</span> or <span class= + "QUOTE">"pattern"</span>. + </p> + <p> + There is a third (advanced) type, called <span class= + "QUOTE">"auto"</span>. It is <span class="emphasis"><i + class="EMPHASIS">NOT</i></span> to be used in <tt class= + "LITERAL">set-image-blocker</tt>, but meant for use from <a + href="filter-file.html">filters</a>. Auto will select the + type of image that would have applied to the referring + page, had it been an image. + </p> + </dd> + <dt> + Example usage: + </dt> + <dd> + <p> + Built-in pattern: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++set-image-blocker{pattern} +</pre> + </td> + </tr> + </table> + + <p> + Redirect to the BSD daemon: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif} +</pre> + </td> + </tr> + </table> + + <p> + Redirect to the built-in pattern for better caching: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> ++set-image-blocker{http://config.privoxy.org/send-banner?type=pattern} +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="AEN4549">8.5.34. Summary</a> + </h3> + <p> + 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 <a + href="appendix.html#ACTIONSANAT">Appendix</a> for a brief example + on troubleshooting actions. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="ALIASES">8.6. Aliases</a> + </h2> + <p> + Custom <span class="QUOTE">"actions"</span>, known to <span class= + "APPLICATION">Privoxy</span> as <span class= + "QUOTE">"aliases"</span>, can be defined by combining other + actions. These can in turn be invoked just like the built-in + actions. Currently, an alias name can contain any character except + space, tab, <span class="QUOTE">"="</span>, <span class= + "QUOTE">"{"</span> and <span class="QUOTE">"}"</span>, but we <span + class="emphasis"><i class="EMPHASIS">strongly recommend</i></span> + that you only use <span class="QUOTE">"a"</span> to <span class= + "QUOTE">"z"</span>, <span class="QUOTE">"0"</span> to <span class= + "QUOTE">"9"</span>, <span class="QUOTE">"+"</span>, and <span + class="QUOTE">"-"</span>. Alias names are not case sensitive, and + are not required to start with a <span class="QUOTE">"+"</span> or + <span class="QUOTE">"-"</span> sign, since they are merely + textually expanded. + </p> + <p> + Aliases can be used throughout the actions file, but they <span + class="emphasis"><i class="EMPHASIS">must be defined in a special + section at the top of the file!</i></span> And there can only be + one such section per actions file. Each actions file may have its + own alias section, and the aliases defined in it are only visible + within that file. + </p> + <p> + There are two main reasons to use aliases: One is to save typing + for frequently used combinations of actions, the other one is a + gain in flexibility: If you decide once how you want to handle + shops by defining an alias called <span class= + "QUOTE">"shop"</span>, you can later change your policy on shops in + <span class="emphasis"><i class="EMPHASIS">one</i></span> place, + and your changes will take effect everywhere in the actions file + where the <span class="QUOTE">"shop"</span> alias is used. Calling + aliases by their purpose also makes your actions files more + readable. + </p> + <p> + Currently, there is one big drawback to using aliases, though: + <span class="APPLICATION">Privoxy</span>'s built-in web-based + action file editor honors aliases when reading the actions files, + but it expands them before writing. So the effects of your aliases + are of course preserved, but the aliases themselves are lost when + you edit sections that use aliases with it. + </p> + <p> + Now let's define some aliases... + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # Useful custom aliases we can use later. # # Note the (required!) section header line and that this section # must be at the top of the actions file! @@ -6867,79 +5037,51 @@ CLASS="SCREEN" # These aliases just save typing later: # (Note that some already use other aliases!) # - +crunch-all-cookies = +<A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -> +<A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -> - -crunch-all-cookies = -<A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -> -<A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -> + +crunch-all-cookies = +<a href= +"actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> +<a +href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a> + -crunch-all-cookies = -<a href= +"actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> -<a +href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a> +block-as-image = +block{Blocked image.} +handle-as-image - allow-all-cookies = -crunch-all-cookies -<A -HREF="actions-file.html#SESSION-COOKIES-ONLY" ->session-cookies-only</A -> -<A -HREF="actions-file.html#FILTER-CONTENT-COOKIES" ->filter{content-cookies}</A -> + allow-all-cookies = -crunch-all-cookies -<a href= +"actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a> -<a href= +"actions-file.html#FILTER-CONTENT-COOKIES">filter{content-cookies}</a> # These aliases define combinations of actions # that are useful for certain types of sites: # - fragile = -<A -HREF="actions-file.html#BLOCK" ->block</A -> -<A -HREF="actions-file.html#FILTER" ->filter</A -> -crunch-all-cookies -<A -HREF="actions-file.html#FAST-REDIRECTS" ->fast-redirects</A -> -<A -HREF="actions-file.html#HIDE-REFERER" ->hide-referrer</A -> -<A -HREF="actions-file.html#PREVENT-COMPRESSION" ->prevent-compression</A -> + fragile = -<a href="actions-file.html#BLOCK">block</a> -<a href= +"actions-file.html#FILTER">filter</a> -crunch-all-cookies -<a href= +"actions-file.html#FAST-REDIRECTS">fast-redirects</a> -<a href= +"actions-file.html#HIDE-REFERER">hide-referrer</a> -<a href= +"actions-file.html#PREVENT-COMPRESSION">prevent-compression</a> - shop = -crunch-all-cookies -<A -HREF="actions-file.html#FILTER-ALL-POPUPS" ->filter{all-popups}</A -> + shop = -crunch-all-cookies -<a href= +"actions-file.html#FILTER-ALL-POPUPS">filter{all-popups}</a> # Short names for other aliases, for really lazy people ;-) # c0 = +crunch-all-cookies - c1 = -crunch-all-cookies</PRE -></TD -></TR -></TABLE -></P -><P -> ...and put them to use. These sections would appear in the lower part of an - actions file and define exceptions to the default actions (as specified further - up for the <SPAN -CLASS="QUOTE" ->"/"</SPAN -> pattern):</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # These sites are either very complex or very keen on + c1 = -crunch-all-cookies +</pre> + </td> + </tr> + </table> + + <p> + ...and put them to use. These sections would appear in the lower + part of an actions file and define exceptions to the default + actions (as specified further up for the <span class= + "QUOTE">"/"</span> pattern): + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # These sites are either very complex or very keen on # user data and require minimal interference to work: # {fragile} @@ -6950,7 +5092,7 @@ CLASS="SCREEN" # Shopping sites: # Allow cookies (for setting and retrieving your customer data) - # + # {shop} .quietpc.com .worldpay.com # for quietpc.com @@ -6960,234 +5102,140 @@ CLASS="SCREEN" # {-filter{all-popups} -filter{unsolicited-popups}} .dabs.com - .overclockers.co.uk</PRE -></TD -></TR -></TABLE -></P -><P -> Aliases like <SPAN -CLASS="QUOTE" ->"shop"</SPAN -> and <SPAN -CLASS="QUOTE" ->"fragile"</SPAN -> are typically used for - <SPAN -CLASS="QUOTE" ->"problem"</SPAN -> sites that require more than one action to be disabled - in order to function properly.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="ACT-EXAMPLES" ->8.7. Actions Files Tutorial</A -></H2 -><P -> The above chapters have shown <A -HREF="actions-file.html" ->which actions files - there are and how they are organized</A ->, how actions are <A -HREF="actions-file.html#ACTIONS" ->specified</A -> and <A -HREF="actions-file.html#ACTIONS-APPLY" ->applied - to URLs</A ->, how <A -HREF="actions-file.html#AF-PATTERNS" ->patterns</A -> work, and how to - define and use <A -HREF="actions-file.html#ALIASES" ->aliases</A ->. Now, let's look at an - example <TT -CLASS="FILENAME" ->match-all.action</TT ->, <TT -CLASS="FILENAME" ->default.action</TT -> - and <TT -CLASS="FILENAME" ->user.action</TT -> file and see how all these pieces come together:</P -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="AEN4613" ->8.7.1. match-all.action</A -></H3 -><P -> Remember <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all actions are disabled when matching starts</I -></SPAN ->, - so we have to explicitly enable the ones we want.</P -><P -> While the <TT -CLASS="FILENAME" ->match-all.action</TT -> file only contains a - single section, it is probably the most important one. It has only one - pattern, <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->/</TT ->"</SPAN ->, but this pattern - <A -HREF="actions-file.html#AF-PATTERNS" ->matches all URLs</A ->. Therefore, the set of - actions used in this <SPAN -CLASS="QUOTE" ->"default"</SPAN -> section <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->will - be applied to all requests as a start</I -></SPAN ->. It can be partly or - wholly overridden by other actions files like <TT -CLASS="FILENAME" ->default.action</TT -> - and <TT -CLASS="FILENAME" ->user.action</TT ->, but it will still be largely responsible - for your overall browsing experience.</P -><P -> Again, at the start of matching, all actions are disabled, so there is - no need to disable any actions here. (Remember: a <SPAN -CLASS="QUOTE" ->"+"</SPAN -> - preceding the action name enables the action, a <SPAN -CLASS="QUOTE" ->"-"</SPAN -> disables!). - Also note how this long line has been made more readable by splitting it into - multiple lines with line continuation.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ \ - +<A -HREF="actions-file.html#CHANGE-X-FORWARDED-FOR" ->change-x-forwarded-for{block}</A -> \ - +<A -HREF="actions-file.html#HIDE-FROM-HEADER" ->hide-from-header{block}</A -> \ - +<A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker{pattern}</A -> \ + .overclockers.co.uk +</pre> + </td> + </tr> + </table> + + <p> + Aliases like <span class="QUOTE">"shop"</span> and <span class= + "QUOTE">"fragile"</span> are typically used for <span class= + "QUOTE">"problem"</span> sites that require more than one action to + be disabled in order to function properly. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="ACT-EXAMPLES">8.7. Actions Files Tutorial</a> + </h2> + <p> + The above chapters have shown <a href="actions-file.html">which + actions files there are and how they are organized</a>, how actions + are <a href="actions-file.html#ACTIONS">specified</a> and <a href= + "actions-file.html#ACTIONS-APPLY">applied to URLs</a>, how <a href= + "actions-file.html#AF-PATTERNS">patterns</a> work, and how to + define and use <a href="actions-file.html#ALIASES">aliases</a>. + Now, let's look at an example <tt class= + "FILENAME">match-all.action</tt>, <tt class= + "FILENAME">default.action</tt> and <tt class= + "FILENAME">user.action</tt> file and see how all these pieces come + together: + </p> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="AEN4613">8.7.1. match-all.action</a> + </h3> + <p> + Remember <span class="emphasis"><i class="EMPHASIS">all actions + are disabled when matching starts</i></span>, so we have to + explicitly enable the ones we want. + </p> + <p> + While the <tt class="FILENAME">match-all.action</tt> file only + contains a single section, it is probably the most important one. + It has only one pattern, <span class="QUOTE">"<tt class= + "LITERAL">/</tt>"</span>, but this pattern <a href= + "actions-file.html#AF-PATTERNS">matches all URLs</a>. Therefore, + the set of actions used in this <span class= + "QUOTE">"default"</span> section <span class="emphasis"><i class= + "EMPHASIS">will be applied to all requests as a start</i></span>. + It can be partly or wholly overridden by other actions files like + <tt class="FILENAME">default.action</tt> and <tt class= + "FILENAME">user.action</tt>, but it will still be largely + responsible for your overall browsing experience. + </p> + <p> + Again, at the start of matching, all actions are disabled, so + there is no need to disable any actions here. (Remember: a <span + class="QUOTE">"+"</span> preceding the action name enables the + action, a <span class="QUOTE">"-"</span> disables!). Also note + how this long line has been made more readable by splitting it + into multiple lines with line continuation. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ \ + +<a href= +"actions-file.html#CHANGE-X-FORWARDED-FOR">change-x-forwarded-for{block}</a> \ + +<a href="actions-file.html#HIDE-FROM-HEADER">hide-from-header{block}</a> \ + +<a href= +"actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker{pattern}</a> \ } / # Match all URLs - </PRE -></TD -></TR -></TABLE -></P -><P -> The default behavior is now set.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="AEN4635" ->8.7.2. default.action</A -></H3 -><P -> If you aren't a developer, there's no need for you to edit the - <TT -CLASS="FILENAME" ->default.action</TT -> file. It is maintained by - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> developers and if you disagree with some of the - sections, you should overrule them in your <TT -CLASS="FILENAME" ->user.action</TT ->.</P -><P -> Understanding the <TT -CLASS="FILENAME" ->default.action</TT -> file can - help you with your <TT -CLASS="FILENAME" ->user.action</TT ->, though.</P -><P -> The first section in this file is a special section for internal use - that prevents older <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> versions from reading the file:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->########################################################################## +</pre> + </td> + </tr> + </table> + + <p> + The default behavior is now set. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="AEN4635">8.7.2. default.action</a> + </h3> + <p> + If you aren't a developer, there's no need for you to edit the + <tt class="FILENAME">default.action</tt> file. It is maintained + by the <span class="APPLICATION">Privoxy</span> developers and if + you disagree with some of the sections, you should overrule them + in your <tt class="FILENAME">user.action</tt>. + </p> + <p> + Understanding the <tt class="FILENAME">default.action</tt> file + can help you with your <tt class="FILENAME">user.action</tt>, + though. + </p> + <p> + The first section in this file is a special section for internal + use that prevents older <span class="APPLICATION">Privoxy</span> + versions from reading the file: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +########################################################################## # Settings -- Don't change! For internal Privoxy use ONLY. ########################################################################## {{settings}} -for-privoxy-version=3.0.11</PRE -></TD -></TR -></TABLE -></P -><P -> After that comes the (optional) alias section. We'll use the example - section from the above <A -HREF="actions-file.html#ALIASES" ->chapter on aliases</A ->, - that also explains why and how aliases are used:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->########################################################################## +for-privoxy-version=3.0.11 +</pre> + </td> + </tr> + </table> + + <p> + After that comes the (optional) alias section. We'll use the + example section from the above <a href= + "actions-file.html#ALIASES">chapter on aliases</a>, that also + explains why and how aliases are used: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +########################################################################## # Aliases ########################################################################## {{alias}} @@ -7195,76 +5243,47 @@ CLASS="SCREEN" # These aliases just save typing later: # (Note that some already use other aliases!) # - +crunch-all-cookies = +<A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -> +<A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -> - -crunch-all-cookies = -<A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -> -<A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -> + +crunch-all-cookies = +<a href= +"actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> +<a +href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a> + -crunch-all-cookies = -<a href= +"actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> -<a +href="actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a> +block-as-image = +block{Blocked image.} +handle-as-image - mercy-for-cookies = -crunch-all-cookies -<A -HREF="actions-file.html#SESSION-COOKIES-ONLY" ->session-cookies-only</A -> -<A -HREF="actions-file.html#FILTER-CONTENT-COOKIES" ->filter{content-cookies}</A -> + mercy-for-cookies = -crunch-all-cookies -<a href= +"actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a> -<a href= +"actions-file.html#FILTER-CONTENT-COOKIES">filter{content-cookies}</a> # These aliases define combinations of actions # that are useful for certain types of sites: # - fragile = -<A -HREF="actions-file.html#BLOCK" ->block</A -> -<A -HREF="actions-file.html#FILTER" ->filter</A -> -crunch-all-cookies -<A -HREF="actions-file.html#FAST-REDIRECTS" ->fast-redirects</A -> -<A -HREF="actions-file.html#HIDE-REFERER" ->hide-referrer</A -> - shop = -crunch-all-cookies -<A -HREF="actions-file.html#FILTER-ALL-POPUPS" ->filter{all-popups}</A -></PRE -></TD -></TR -></TABLE -></P -><P -> The first of our specialized sections is concerned with <SPAN -CLASS="QUOTE" ->"fragile"</SPAN -> - sites, i.e. sites that require minimum interference, because they are either - very complex or very keen on tracking you (and have mechanisms in place that - make them unusable for people who avoid being tracked). We will simply use - our pre-defined <TT -CLASS="LITERAL" ->fragile</TT -> alias instead of stating the list - of actions explicitly:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->########################################################################## + fragile = -<a href="actions-file.html#BLOCK">block</a> -<a href= +"actions-file.html#FILTER">filter</a> -crunch-all-cookies -<a href= +"actions-file.html#FAST-REDIRECTS">fast-redirects</a> -<a href= +"actions-file.html#HIDE-REFERER">hide-referrer</a> + shop = -crunch-all-cookies -<a href= +"actions-file.html#FILTER-ALL-POPUPS">filter{all-popups}</a> +</pre> + </td> + </tr> + </table> + + <p> + The first of our specialized sections is concerned with <span + class="QUOTE">"fragile"</span> sites, i.e. sites that require + minimum interference, because they are either very complex or + very keen on tracking you (and have mechanisms in place that make + them unusable for people who avoid being tracked). We will simply + use our pre-defined <tt class="LITERAL">fragile</tt> alias + instead of stating the list of actions explicitly: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +########################################################################## # Exceptions for sites that'll break under the default action set: ########################################################################## @@ -7273,239 +5292,167 @@ CLASS="SCREEN" { fragile } .office.microsoft.com # surprise, surprise! .windowsupdate.microsoft.com -mail.google.com</PRE -></TD -></TR -></TABLE -></P -><P -> Shopping sites are not as fragile, but they typically - require cookies to log in, and pop-up windows for shopping - carts or item details. Again, we'll use a pre-defined alias:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Shopping sites: +mail.google.com +</pre> + </td> + </tr> + </table> + + <p> + Shopping sites are not as fragile, but they typically require + cookies to log in, and pop-up windows for shopping carts or item + details. Again, we'll use a pre-defined alias: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Shopping sites: # { shop } -.quietpc.com +.quietpc.com .worldpay.com # for quietpc.com .jungle.com -.scan.co.uk</PRE -></TD -></TR -></TABLE -></P -><P -> The <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FAST-REDIRECTS" ->fast-redirects</A -></TT -> - action, which may have been enabled in <TT -CLASS="FILENAME" ->match-all.action</TT ->, - breaks some sites. So disable it for popular sites where we know it misbehaves:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ -<A -HREF="actions-file.html#FAST-REDIRECTS" ->fast-redirects</A -> } +.scan.co.uk +</pre> + </td> + </tr> + </table> + + <p> + The <tt class="LITERAL"><a href= + "actions-file.html#FAST-REDIRECTS">fast-redirects</a></tt> + action, which may have been enabled in <tt class= + "FILENAME">match-all.action</tt>, breaks some sites. So disable + it for popular sites where we know it misbehaves: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ -<a href="actions-file.html#FAST-REDIRECTS">fast-redirects</a> } login.yahoo.com edit.*.yahoo.com .google.com .altavista.com/.*(like|url|link):http .altavista.com/trans.*urltext=http -.nytimes.com</PRE -></TD -></TR -></TABLE -></P -><P -> It is important that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> knows which - URLs belong to images, so that <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->if</I -></SPAN -> they are to - be blocked, a substitute image can be sent, rather than an HTML page. - Contacting the remote site to find out is not an option, since it - would destroy the loading time advantage of banner blocking, and it - would feed the advertisers information about you. We can mark any - URL as an image with the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></TT -> action, - and marking all URLs that end in a known image file extension is a - good start:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->########################################################################## +.nytimes.com +</pre> + </td> + </tr> + </table> + + <p> + It is important that <span class="APPLICATION">Privoxy</span> + knows which URLs belong to images, so that <span class= + "emphasis"><i class="EMPHASIS">if</i></span> they are to be + blocked, a substitute image can be sent, rather than an HTML + page. Contacting the remote site to find out is not an option, + since it would destroy the loading time advantage of banner + blocking, and it would feed the advertisers information about + you. We can mark any URL as an image with the <tt class= + "LITERAL"><a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> + action, and marking all URLs that end in a known image file + extension is a good start: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +########################################################################## # Images: ########################################################################## # Define which file types will be treated as images, in case they get # blocked further down this file: # -{ +<A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -> } -/.*\.(gif|jpe?g|png|bmp|ico)$</PRE -></TD -></TR -></TABLE -></P -><P -> And then there are known banner sources. They often use scripts to - generate the banners, so it won't be visible from the URL that the - request is for an image. Hence we block them <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->and</I -></SPAN -> - mark them as images in one go, with the help of our - <TT -CLASS="LITERAL" ->+block-as-image</TT -> alias defined above. (We could of - course just as well use <TT -CLASS="LITERAL" ->+<A -HREF="actions-file.html#BLOCK" ->block</A -> - +<A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></TT -> here.) - Remember that the type of the replacement image is chosen by the - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker</A -></TT -> - action. Since all URLs have matched the default section with its - <TT -CLASS="LITERAL" ->+<A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker</A ->{pattern}</TT -> - action before, it still applies and needn't be repeated:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Known ad generators: +{ +<a href="actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a> } +/.*\.(gif|jpe?g|png|bmp|ico)$ +</pre> + </td> + </tr> + </table> + + <p> + And then there are known banner sources. They often use scripts + to generate the banners, so it won't be visible from the URL that + the request is for an image. Hence we block them <span class= + "emphasis"><i class="EMPHASIS">and</i></span> mark them as images + in one go, with the help of our <tt class= + "LITERAL">+block-as-image</tt> alias defined above. (We could of + course just as well use <tt class="LITERAL">+<a href= + "actions-file.html#BLOCK">block</a> +<a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> + here.) Remember that the type of the replacement image is chosen + by the <tt class="LITERAL"><a href= + "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> + action. Since all URLs have matched the default section with its + <tt class="LITERAL">+<a href= + "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a>{pattern}</tt> + action before, it still applies and needn't be repeated: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Known ad generators: # { +block-as-image } -ar.atwola.com +ar.atwola.com .ad.doubleclick.net .ad.*.doubleclick.net .a.yimg.com/(?:(?!/i/).)*$ .a[0-9].yimg.com/(?:(?!/i/).)*$ bs*.gsanet.com -.qkimg.net</PRE -></TD -></TR -></TABLE -></P -><P -> One of the most important jobs of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is to block banners. Many of these can be <SPAN -CLASS="QUOTE" ->"blocked"</SPAN -> - by the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->filter</A ->{banners-by-size}</TT -> - action, which we enabled above, and which deletes the references to banner - images from the pages while they are loaded, so the browser doesn't request - them anymore, and hence they don't need to be blocked here. But this naturally - doesn't catch all banners, and some people choose not to use filters, so we - need a comprehensive list of patterns for banner URLs here, and apply the - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> action to them.</P -><P -> First comes many generic patterns, which do most of the work, by - matching typical domain and path name components of banners. Then comes - a list of individual patterns for specific sites, which is omitted here - to keep the example short:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->########################################################################## +.qkimg.net +</pre> + </td> + </tr> + </table> + + <p> + One of the most important jobs of <span class= + "APPLICATION">Privoxy</span> is to block banners. Many of these + can be <span class="QUOTE">"blocked"</span> by the <tt class= + "LITERAL"><a href= + "actions-file.html#FILTER">filter</a>{banners-by-size}</tt> + action, which we enabled above, and which deletes the references + to banner images from the pages while they are loaded, so the + browser doesn't request them anymore, and hence they don't need + to be blocked here. But this naturally doesn't catch all banners, + and some people choose not to use filters, so we need a + comprehensive list of patterns for banner URLs here, and apply + the <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> action to them. + </p> + <p> + First comes many generic patterns, which do most of the work, by + matching typical domain and path name components of banners. Then + comes a list of individual patterns for specific sites, which is + omitted here to keep the example short: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +########################################################################## # Block these fine banners: ########################################################################## -{ <A -HREF="actions-file.html#BLOCK" ->+block{Banner ads.}</A -> } +{ <a href="actions-file.html#BLOCK">+block{Banner ads.}</a> } # Generic patterns: -# +# ad*. .*ads. banner?. @@ -7515,137 +5462,64 @@ count*. # Site-specific patterns (abbreviated): # -.hitbox.com</PRE -></TD -></TR -></TABLE -></P -><P -> It's quite remarkable how many advertisers actually call their banner - servers ads.<TT -CLASS="REPLACEABLE" -><I ->company</I -></TT ->.com, or call the directory - in which the banners are stored simply <SPAN -CLASS="QUOTE" ->"banners"</SPAN ->. So the above - generic patterns are surprisingly effective.</P -><P -> But being very generic, they necessarily also catch URLs that we don't want - to block. The pattern <TT -CLASS="LITERAL" ->.*ads.</TT -> e.g. catches - <SPAN -CLASS="QUOTE" ->"nasty-<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->ads</I -></SPAN ->.nasty-corp.com"</SPAN -> as intended, - but also <SPAN -CLASS="QUOTE" ->"downlo<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->ads</I -></SPAN ->.sourcefroge.net"</SPAN -> or - <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->ads</I -></SPAN ->l.some-provider.net."</SPAN -> So here come some - well-known exceptions to the <TT -CLASS="LITERAL" ->+<A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> - section above.</P -><P -> Note that these are exceptions to exceptions from the default! Consider the URL - <SPAN -CLASS="QUOTE" ->"downloads.sourcefroge.net"</SPAN ->: Initially, all actions are deactivated, - so it wouldn't get blocked. Then comes the defaults section, which matches the - URL, but just deactivates the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> - action once again. Then it matches <TT -CLASS="LITERAL" ->.*ads.</TT ->, an exception to the - general non-blocking policy, and suddenly - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->+block</A -></TT -> applies. And now, it'll match - <TT -CLASS="LITERAL" ->.*loads.</TT ->, where <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->-block</A -></TT -> - applies, so (unless it matches <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->again</I -></SPAN -> further down) it ends up - with no <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> action applying.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->########################################################################## +.hitbox.com +</pre> + </td> + </tr> + </table> + + <p> + It's quite remarkable how many advertisers actually call their + banner servers ads.<tt class= + "REPLACEABLE"><i>company</i></tt>.com, or call the directory in + which the banners are stored simply <span class= + "QUOTE">"banners"</span>. So the above generic patterns are + surprisingly effective. + </p> + <p> + But being very generic, they necessarily also catch URLs that we + don't want to block. The pattern <tt class="LITERAL">.*ads.</tt> + e.g. catches <span class="QUOTE">"nasty-<span class="emphasis"><i + class="EMPHASIS">ads</i></span>.nasty-corp.com"</span> as + intended, but also <span class="QUOTE">"downlo<span class= + "emphasis"><i class= + "EMPHASIS">ads</i></span>.sourcefroge.net"</span> or <span class= + "QUOTE">"<span class="emphasis"><i class= + "EMPHASIS">ads</i></span>l.some-provider.net."</span> So here + come some well-known exceptions to the <tt class="LITERAL">+<a + href="actions-file.html#BLOCK">block</a></tt> section above. + </p> + <p> + Note that these are exceptions to exceptions from the default! + Consider the URL <span class= + "QUOTE">"downloads.sourcefroge.net"</span>: Initially, all + actions are deactivated, so it wouldn't get blocked. Then comes + the defaults section, which matches the URL, but just deactivates + the <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> action once again. Then + it matches <tt class="LITERAL">.*ads.</tt>, an exception to the + general non-blocking policy, and suddenly <tt class="LITERAL"><a + href="actions-file.html#BLOCK">+block</a></tt> applies. And now, + it'll match <tt class="LITERAL">.*loads.</tt>, where <tt class= + "LITERAL"><a href="actions-file.html#BLOCK">-block</a></tt> + applies, so (unless it matches <span class="emphasis"><i class= + "EMPHASIS">again</i></span> further down) it ends up with no <tt + class="LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> + action applying. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +########################################################################## # Save some innocent victims of the above generic block patterns: ########################################################################## # By domain: -# -{ -<A -HREF="actions-file.html#BLOCK" ->block</A -> } +# +{ -<a href="actions-file.html#BLOCK">block</a> } adv[io]*. # (for advogato.org and advice.*) adsl. # (has nothing to do with ads) adobe. # (has nothing to do with ads either) @@ -7660,147 +5534,100 @@ ad[ud]*. # (adult.* and add.*) # Site-specific: # www.globalintersec.com/adv # (adv = advanced) -www.ugu.com/sui/ugu/adv</PRE -></TD -></TR -></TABLE -></P -><P -> Filtering source code can have nasty side effects, - so make an exception for our friends at sourceforge.net, - and all paths with <SPAN -CLASS="QUOTE" ->"cvs"</SPAN -> in them. Note that - <TT -CLASS="LITERAL" ->-<A -HREF="actions-file.html#FILTER" ->filter</A -></TT -> - disables <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> filters in one fell swoop!</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Don't filter code! +www.ugu.com/sui/ugu/adv +</pre> + </td> + </tr> + </table> + + <p> + Filtering source code can have nasty side effects, so make an + exception for our friends at sourceforge.net, and all paths with + <span class="QUOTE">"cvs"</span> in them. Note that <tt class= + "LITERAL">-<a href="actions-file.html#FILTER">filter</a></tt> + disables <span class="emphasis"><i class= + "EMPHASIS">all</i></span> filters in one fell swoop! + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Don't filter code! # -{ -<A -HREF="actions-file.html#FILTER" ->filter</A -> } +{ -<a href="actions-file.html#FILTER">filter</a> } /(.*/)?cvs bugzilla. developer. wiki. -.sourceforge.net</PRE -></TD -></TR -></TABLE -></P -><P -> The actual <TT -CLASS="FILENAME" ->default.action</TT -> is of course much more - comprehensive, but we hope this example made clear how it works.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="AEN4748" ->8.7.3. user.action</A -></H3 -><P -> So far we are painting with a broad brush by setting general policies, - which would be a reasonable starting point for many people. Now, - you might want to be more specific and have customized rules that - are more suitable to your personal habits and preferences. These would - be for narrowly defined situations like your ISP or your bank, and should - be placed in <TT -CLASS="FILENAME" ->user.action</TT ->, which is parsed after all other - actions files and hence has the last word, over-riding any previously - defined actions. <TT -CLASS="FILENAME" ->user.action</TT -> is also a - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->safe</I -></SPAN -> place for your personal settings, since - <TT -CLASS="FILENAME" ->default.action</TT -> is actively maintained by the - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> developers and you'll probably want - to install updated versions from time to time.</P -><P -> So let's look at a few examples of things that one might typically do in - <TT -CLASS="FILENAME" ->user.action</TT ->: </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># My user.action file. <fred@example.com></PRE -></TD -></TR -></TABLE -></P -><P -> As <A -HREF="actions-file.html#ALIASES" ->aliases</A -> are local to the actions - file that they are defined in, you can't use the ones from - <TT -CLASS="FILENAME" ->default.action</TT ->, unless you repeat them here:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Aliases are local to the file they are defined in. +.sourceforge.net +</pre> + </td> + </tr> + </table> + + <p> + The actual <tt class="FILENAME">default.action</tt> is of course + much more comprehensive, but we hope this example made clear how + it works. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="AEN4748">8.7.3. user.action</a> + </h3> + <p> + So far we are painting with a broad brush by setting general + policies, which would be a reasonable starting point for many + people. Now, you might want to be more specific and have + customized rules that are more suitable to your personal habits + and preferences. These would be for narrowly defined situations + like your ISP or your bank, and should be placed in <tt class= + "FILENAME">user.action</tt>, which is parsed after all other + actions files and hence has the last word, over-riding any + previously defined actions. <tt class="FILENAME">user.action</tt> + is also a <span class="emphasis"><i class= + "EMPHASIS">safe</i></span> place for your personal settings, + since <tt class="FILENAME">default.action</tt> is actively + maintained by the <span class="APPLICATION">Privoxy</span> + developers and you'll probably want to install updated versions + from time to time. + </p> + <p> + So let's look at a few examples of things that one might + typically do in <tt class="FILENAME">user.action</tt>: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# My user.action file. <fred@example.com> +</pre> + </td> + </tr> + </table> + + <p> + As <a href="actions-file.html#ALIASES">aliases</a> are local to + the actions file that they are defined in, you can't use the ones + from <tt class="FILENAME">default.action</tt>, unless you repeat + them here: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Aliases are local to the file they are defined in. # (Re-)define aliases for this file: # {{alias}} -# -# These aliases just save typing later, and the alias names should +# +# These aliases just save typing later, and the alias names should # be self explanatory. # +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies @@ -7822,83 +5649,67 @@ allow-ads = -block -filter{banners-by-size} -filter{banners-by-link} # Alias for specific file types that are text, but might have conflicting # MIME types. We want the browser to force these to be text documents. -handle-as-text = -<A -HREF="actions-file.html#FILTER" ->filter</A -> +-<A -HREF="actions-file.html#CONTENT-TYPE-OVERWRITE" ->content-type-overwrite{text/plain}</A -> +-<A -HREF="actions-file.html#FORCE-TEXT-MODE" ->force-text-mode</A -> -<A -HREF="actions-file.html#HIDE-CONTENT-DISPOSITION" ->hide-content-disposition</A -></PRE -></TD -></TR -></TABLE -> </P -><P -> Say you have accounts on some sites that you visit regularly, and - you don't want to have to log in manually each time. So you'd like - to allow persistent cookies for these sites. The - <TT -CLASS="LITERAL" ->allow-all-cookies</TT -> alias defined above does exactly - that, i.e. it disables crunching of cookies in any direction, and the - processing of cookies to make them only temporary.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ allow-all-cookies } +handle-as-text = -<a href="actions-file.html#FILTER">filter</a> +-<a href= +"actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite{text/plain}</a> +-<a + href="actions-file.html#FORCE-TEXT-MODE">force-text-mode</a> -<a href= +"actions-file.html#HIDE-CONTENT-DISPOSITION">hide-content-disposition</a> +</pre> + </td> + </tr> + </table> + <br> + + <p> + Say you have accounts on some sites that you visit regularly, and + you don't want to have to log in manually each time. So you'd + like to allow persistent cookies for these sites. The <tt class= + "LITERAL">allow-all-cookies</tt> alias defined above does exactly + that, i.e. it disables crunching of cookies in any direction, and + the processing of cookies to make them only temporary. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ allow-all-cookies } sourceforge.net .yahoo.com .msdn.microsoft.com - .redhat.com</PRE -></TD -></TR -></TABLE -></P -><P -> Your bank is allergic to some filter, but you don't know which, so you disable them all:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ -<A -HREF="actions-file.html#FILTER" ->filter</A -> } - .your-home-banking-site.com</PRE -></TD -></TR -></TABLE -></P -><P -> Some file types you may not want to filter for various reasons:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Technical documentation is likely to contain strings that might + .redhat.com +</pre> + </td> + </tr> + </table> + + <p> + Your bank is allergic to some filter, but you don't know which, + so you disable them all: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ -<a href="actions-file.html#FILTER">filter</a> } + .your-home-banking-site.com +</pre> + </td> + </tr> + </table> + + <p> + Some file types you may not want to filter for various reasons: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Technical documentation is likely to contain strings that might # erroneously get altered by the JavaScript-oriented filters: # .tldp.org @@ -7907,355 +5718,217 @@ CLASS="SCREEN" # And this stupid host sends streaming video with a wrong MIME type, # so that Privoxy thinks it is getting HTML and starts filtering: # -stupid-server.example.com/</PRE -></TD -></TR -></TABLE -></P -><P -> Example of a simple <A -HREF="actions-file.html#BLOCK" ->block</A -> action. Say you've - seen an ad on your favourite page on example.com that you want to get rid of. - You have right-clicked the image, selected <SPAN -CLASS="QUOTE" ->"copy image location"</SPAN -> - and pasted the URL below while removing the leading http://, into a - <TT -CLASS="LITERAL" ->{ +block{} }</TT -> section. Note that <TT -CLASS="LITERAL" ->{ +handle-as-image - }</TT -> need not be specified, since all URLs ending in - <TT -CLASS="LITERAL" ->.gif</TT -> will be tagged as images by the general rules as set - in default.action anyway:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ +<A -HREF="actions-file.html#BLOCK" ->block</A ->{Nasty ads.} } +stupid-server.example.com/ +</pre> + </td> + </tr> + </table> + + <p> + Example of a simple <a href="actions-file.html#BLOCK">block</a> + action. Say you've seen an ad on your favourite page on + example.com that you want to get rid of. You have right-clicked + the image, selected <span class="QUOTE">"copy image + location"</span> and pasted the URL below while removing the + leading http://, into a <tt class="LITERAL">{ +block{} }</tt> + section. Note that <tt class="LITERAL">{ +handle-as-image }</tt> + need not be specified, since all URLs ending in <tt class= + "LITERAL">.gif</tt> will be tagged as images by the general rules + as set in default.action anyway: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ +<a href="actions-file.html#BLOCK">block</a>{Nasty ads.} } www.example.com/nasty-ads/sponsor\.gif - another.example.net/more/junk/here/</PRE -></TD -></TR -></TABLE -></P -><P -> The URLs of dynamically generated banners, especially from large banner - farms, often don't use the well-known image file name extensions, which - makes it impossible for <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to guess - the file type just by looking at the URL. - You can use the <TT -CLASS="LITERAL" ->+block-as-image</TT -> alias defined above for - these cases. - Note that objects which match this rule but then turn out NOT to be an - image are typically rendered as a <SPAN -CLASS="QUOTE" ->"broken image"</SPAN -> icon by the - browser. Use cautiously.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ +block-as-image } + another.example.net/more/junk/here/ +</pre> + </td> + </tr> + </table> + + <p> + The URLs of dynamically generated banners, especially from large + banner farms, often don't use the well-known image file name + extensions, which makes it impossible for <span class= + "APPLICATION">Privoxy</span> to guess the file type just by + looking at the URL. You can use the <tt class= + "LITERAL">+block-as-image</tt> alias defined above for these + cases. Note that objects which match this rule but then turn out + NOT to be an image are typically rendered as a <span class= + "QUOTE">"broken image"</span> icon by the browser. Use + cautiously. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ +block-as-image } .doubleclick.net .fastclick.net /Realmedia/ads/ - ar.atwola.com/</PRE -></TD -></TR -></TABLE -></P -><P -> Now you noticed that the default configuration breaks Forbes Magazine, - but you were too lazy to find out which action is the culprit, and you - were again too lazy to give <A -HREF="contact.html" ->feedback</A ->, so - you just used the <TT -CLASS="LITERAL" ->fragile</TT -> alias on the site, and - -- <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->whoa!</I -></SPAN -> -- it worked. The <TT -CLASS="LITERAL" ->fragile</TT -> - aliases disables those actions that are most likely to break a site. Also, - good for testing purposes to see if it is <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - that is causing the problem or not. We later find other regular sites - that misbehave, and add those to our personalized list of troublemakers:</P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ fragile } + ar.atwola.com/ +</pre> + </td> + </tr> + </table> + + <p> + Now you noticed that the default configuration breaks Forbes + Magazine, but you were too lazy to find out which action is the + culprit, and you were again too lazy to give <a href= + "contact.html">feedback</a>, so you just used the <tt class= + "LITERAL">fragile</tt> alias on the site, and -- <span class= + "emphasis"><i class="EMPHASIS">whoa!</i></span> -- it worked. The + <tt class="LITERAL">fragile</tt> aliases disables those actions + that are most likely to break a site. Also, good for testing + purposes to see if it is <span class="APPLICATION">Privoxy</span> + that is causing the problem or not. We later find other regular + sites that misbehave, and add those to our personalized list of + troublemakers: + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ fragile } .forbes.com webmail.example.com - .mybank.com</PRE -></TD -></TR -></TABLE -></P -><P -> You like the <SPAN -CLASS="QUOTE" ->"fun"</SPAN -> text replacements in <TT -CLASS="FILENAME" ->default.filter</TT ->, - but it is disabled in the distributed actions file. - So you'd like to turn it on in your private, - update-safe config, once and for all:</P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ +<A -HREF="actions-file.html#FILTER-FUN" ->filter{fun}</A -> } - / # For ALL sites!</PRE -></TD -></TR -></TABLE -></P -><P -> Note that the above is not really a good idea: There are exceptions - to the filters in <TT -CLASS="FILENAME" ->default.action</TT -> for things that - really shouldn't be filtered, like code on CVS->Web interfaces. Since - <TT -CLASS="FILENAME" ->user.action</TT -> has the last word, these exceptions - won't be valid for the <SPAN -CLASS="QUOTE" ->"fun"</SPAN -> filtering specified here.</P -><P -> You might also worry about how your favourite free websites are - funded, and find that they rely on displaying banner advertisements - to survive. So you might want to specifically allow banners for those - sites that you feel provide value to you:</P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ allow-ads } + .mybank.com +</pre> + </td> + </tr> + </table> + + <p> + You like the <span class="QUOTE">"fun"</span> text replacements + in <tt class="FILENAME">default.filter</tt>, but it is disabled + in the distributed actions file. So you'd like to turn it on in + your private, update-safe config, once and for all: + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ +<a href="actions-file.html#FILTER-FUN">filter{fun}</a> } + / # For ALL sites! +</pre> + </td> + </tr> + </table> + + <p> + Note that the above is not really a good idea: There are + exceptions to the filters in <tt class= + "FILENAME">default.action</tt> for things that really shouldn't + be filtered, like code on CVS->Web interfaces. Since <tt + class="FILENAME">user.action</tt> has the last word, these + exceptions won't be valid for the <span class= + "QUOTE">"fun"</span> filtering specified here. + </p> + <p> + You might also worry about how your favourite free websites are + funded, and find that they rely on displaying banner + advertisements to survive. So you might want to specifically + allow banners for those sites that you feel provide value to you: + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ allow-ads } .sourceforge.net .slashdot.org - .osdn.net</PRE -></TD -></TR -></TABLE -> </P -><P -> Note that <TT -CLASS="LITERAL" ->allow-ads</TT -> has been aliased to - <TT -CLASS="LITERAL" ->-<A -HREF="actions-file.html#BLOCK" ->block</A -></TT ->, - <TT -CLASS="LITERAL" ->-<A -HREF="actions-file.html#FILTER-BANNERS-BY-SIZE" ->filter{banners-by-size}</A -></TT ->, and - <TT -CLASS="LITERAL" ->-<A -HREF="actions-file.html#FILTER-BANNERS-BY-LINK" ->filter{banners-by-link}</A -></TT -> above.</P -><P -> Invoke another alias here to force an over-ride of the MIME type <TT -CLASS="LITERAL" -> application/x-sh</TT -> which typically would open a download type - dialog. In my case, I want to look at the shell script, and then I can save - it should I choose to.</P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ handle-as-text } - /.*\.sh$</PRE -></TD -></TR -></TABLE -> </P -><P -> <TT -CLASS="FILENAME" ->user.action</TT -> is generally the best place to define - exceptions and additions to the default policies of - <TT -CLASS="FILENAME" ->default.action</TT ->. Some actions are safe to have their - default policies set here though. So let's set a default policy to have a - <SPAN -CLASS="QUOTE" ->"blank"</SPAN -> image as opposed to the checkerboard pattern for - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->ALL</I -></SPAN -> sites. <SPAN -CLASS="QUOTE" ->"/"</SPAN -> of course matches all URL - paths and patterns:</P -><P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->{ +<A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker{blank}</A -> } -/ # ALL sites</PRE -></TD -></TR -></TABLE -></P -></DIV -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="config.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="filter-file.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->The Main Configuration File</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Filter Files</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file + .osdn.net +</pre> + </td> + </tr> + </table> + + <p> + Note that <tt class="LITERAL">allow-ads</tt> has been aliased to + <tt class="LITERAL">-<a href= + "actions-file.html#BLOCK">block</a></tt>, <tt class="LITERAL">-<a + href= + "actions-file.html#FILTER-BANNERS-BY-SIZE">filter{banners-by-size}</a></tt>, + and <tt class="LITERAL">-<a href= + "actions-file.html#FILTER-BANNERS-BY-LINK">filter{banners-by-link}</a></tt> + above. + </p> + <p> + Invoke another alias here to force an over-ride of the MIME type + <tt class="LITERAL">application/x-sh</tt> which typically would + open a download type dialog. In my case, I want to look at the + shell script, and then I can save it should I choose to. + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ handle-as-text } + /.*\.sh$ +</pre> + </td> + </tr> + </table> + + <p> + <tt class="FILENAME">user.action</tt> is generally the best place + to define exceptions and additions to the default policies of <tt + class="FILENAME">default.action</tt>. Some actions are safe to + have their default policies set here though. So let's set a + default policy to have a <span class="QUOTE">"blank"</span> image + as opposed to the checkerboard pattern for <span class= + "emphasis"><i class="EMPHASIS">ALL</i></span> sites. <span class= + "QUOTE">"/"</span> of course matches all URL paths and patterns: + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +{ +<a href= +"actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker{blank}</a> } +/ # ALL sites +</pre> + </td> + </tr> + </table> + </div> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="config.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="filter-file.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + The Main Configuration File + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Filter Files + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/appendix.html b/doc/webserver/user-manual/appendix.html index 1cdc628e..8bc96bc4 100644 --- a/doc/webserver/user-manual/appendix.html +++ b/doc/webserver/user-manual/appendix.html @@ -1,1454 +1,770 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Appendix</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="See Also" -HREF="seealso.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="seealso.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -> </TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="APPENDIX" ->14. Appendix</A -></H1 -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="REGEX" ->14.1. Regular Expressions</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> uses Perl-style <SPAN -CLASS="QUOTE" ->"regular - expressions"</SPAN -> in its <A -HREF="actions-file.html" ->actions - files</A -> and <A -HREF="filter-file.html" ->filter file</A ->, - through the <A -HREF="http://www.pcre.org/" -TARGET="_top" ->PCRE</A -> and - <SPAN -CLASS="APPLICATION" ->PCRS</SPAN -> libraries.</P -><P -> If you are reading this, you probably don't understand what <SPAN -CLASS="QUOTE" ->"regular - expressions"</SPAN -> are, or what they can do. So this will be a very brief - introduction only. A full explanation would require a <A -HREF="http://www.oreilly.com/catalog/regex/" -TARGET="_top" ->book</A -> ;-)</P -><P -> Regular expressions provide a language to describe patterns that can be - run against strings of characters (letter, numbers, etc), to see if they - match the string or not. The patterns are themselves (sometimes complex) - strings of literal characters, combined with wild-cards, and other special - characters, called meta-characters. The <SPAN -CLASS="QUOTE" ->"meta-characters"</SPAN -> have - special meanings and are used to build complex patterns to be matched against. - Perl Compatible Regular Expressions are an especially convenient - <SPAN -CLASS="QUOTE" ->"dialect"</SPAN -> of the regular expression language.</P -><P -> To make a simple analogy, we do something similar when we use wild-card - characters when listing files with the <B -CLASS="COMMAND" ->dir</B -> command in DOS. - <TT -CLASS="LITERAL" ->*.*</TT -> matches all filenames. The <SPAN -CLASS="QUOTE" ->"special"</SPAN -> - character here is the asterisk which matches any and all characters. We can be - more specific and use <TT -CLASS="LITERAL" ->?</TT -> to match just individual - characters. So <SPAN -CLASS="QUOTE" ->"dir file?.text"</SPAN -> would match - <SPAN -CLASS="QUOTE" ->"file1.txt"</SPAN ->, <SPAN -CLASS="QUOTE" ->"file2.txt"</SPAN ->, etc. We are pattern - matching, using a similar technique to <SPAN -CLASS="QUOTE" ->"regular expressions"</SPAN ->!</P -><P -> Regular expressions do essentially the same thing, but are much, much more - powerful. There are many more <SPAN -CLASS="QUOTE" ->"special characters"</SPAN -> and ways of - building complex patterns however. Let's look at a few of the common ones, - and then some examples:</P -><P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->.</I -></SPAN -> - Matches any single character, e.g. <SPAN -CLASS="QUOTE" ->"a"</SPAN ->, - <SPAN -CLASS="QUOTE" ->"A"</SPAN ->, <SPAN -CLASS="QUOTE" ->"4"</SPAN ->, <SPAN -CLASS="QUOTE" ->":"</SPAN ->, or <SPAN -CLASS="QUOTE" ->"@"</SPAN ->. - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->?</I -></SPAN -> - The preceding character or expression is matched ZERO or ONE - times. Either/or. - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->+</I -></SPAN -> - The preceding character or expression is matched ONE or MORE - times. - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->*</I -></SPAN -> - The preceding character or expression is matched ZERO or MORE - times. - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->\</I -></SPAN -> - The <SPAN -CLASS="QUOTE" ->"escape"</SPAN -> character denotes that - the following character should be taken literally. This is used where one of the - special characters (e.g. <SPAN -CLASS="QUOTE" ->"."</SPAN ->) needs to be taken literally and - not as a special meta-character. Example: <SPAN -CLASS="QUOTE" ->"example\.com"</SPAN ->, makes - sure the period is recognized only as a period (and not expanded to its - meta-character meaning of any single character). - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->[ ]</I -></SPAN -> - Characters enclosed in brackets will be matched if - any of the enclosed characters are encountered. For instance, <SPAN -CLASS="QUOTE" ->"[0-9]"</SPAN -> - matches any numeric digit (zero through nine). As an example, we can combine - this with <SPAN -CLASS="QUOTE" ->"+"</SPAN -> to match any digit one of more times: <SPAN -CLASS="QUOTE" ->"[0-9]+"</SPAN ->. - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->( )</I -></SPAN -> - parentheses are used to group a sub-expression, - or multiple sub-expressions. - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->|</I -></SPAN -> - The <SPAN -CLASS="QUOTE" ->"bar"</SPAN -> character works like an - <SPAN -CLASS="QUOTE" ->"or"</SPAN -> conditional statement. A match is successful if the - sub-expression on either side of <SPAN -CLASS="QUOTE" ->"|"</SPAN -> matches. As an example: - <SPAN -CLASS="QUOTE" ->"/(this|that) example/"</SPAN -> uses grouping and the bar character - and would match either <SPAN -CLASS="QUOTE" ->"this example"</SPAN -> or <SPAN -CLASS="QUOTE" ->"that - example"</SPAN ->, and nothing else. - </TD -></TR -></TBODY -></TABLE -><P -></P -></P -><P -> These are just some of the ones you are likely to use when matching URLs with - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, 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:</P -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><TT -CLASS="LITERAL" ->/.*/banners/.*</TT -></I -></SPAN -> - A simple example - that uses the common combination of <SPAN -CLASS="QUOTE" ->"."</SPAN -> and <SPAN -CLASS="QUOTE" ->"*"</SPAN -> 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 - (<SPAN -CLASS="QUOTE" ->".*"</SPAN ->) another literal forward slash, the string - <SPAN -CLASS="QUOTE" ->"banners"</SPAN ->, another forward slash, and lastly another - <SPAN -CLASS="QUOTE" ->".*"</SPAN ->. We are building - a directory path here. This will match any file with the path that has a - directory named <SPAN -CLASS="QUOTE" ->"banners"</SPAN -> in it. The <SPAN -CLASS="QUOTE" ->".*"</SPAN -> 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: - <SPAN -CLASS="QUOTE" ->"/eye/hate/spammers/banners/annoy_me_please.gif"</SPAN ->, or just - <SPAN -CLASS="QUOTE" ->"/banners/annoying.html"</SPAN ->, or almost an infinite number of other - possible combinations, just so it has <SPAN -CLASS="QUOTE" ->"banners"</SPAN -> in the path - somewhere.</P -><P -> And now something a little more complex:</P -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><TT -CLASS="LITERAL" ->/.*/adv((er)?ts?|ertis(ing|ements?))?/</TT -></I -></SPAN -> - - We have several literal forward slashes again (<SPAN -CLASS="QUOTE" ->"/"</SPAN ->), so we are - building another expression that is a file path statement. We have another - <SPAN -CLASS="QUOTE" ->".*"</SPAN ->, so we are matching against any conceivable sub-path, just so - it matches our expression. The only true literal that <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->must - match</I -></SPAN -> our pattern is <SPAN -CLASS="APPLICATION" ->adv</SPAN ->, together with - the forward slashes. What comes after the <SPAN -CLASS="QUOTE" ->"adv"</SPAN -> string is the - interesting part. </P -><P -> Remember the <SPAN -CLASS="QUOTE" ->"?"</SPAN -> means the preceding expression (either a - literal character or anything grouped with <SPAN -CLASS="QUOTE" ->"(...)"</SPAN -> in this case) - can exist or not, since this means either zero or one match. So - <SPAN -CLASS="QUOTE" ->"((er)?ts?|ertis(ing|ements?))"</SPAN -> is optional, as are the - individual sub-expressions: <SPAN -CLASS="QUOTE" ->"(er)"</SPAN ->, - <SPAN -CLASS="QUOTE" ->"(ing|ements?)"</SPAN ->, and the <SPAN -CLASS="QUOTE" ->"s"</SPAN ->. The <SPAN -CLASS="QUOTE" ->"|"</SPAN -> - means <SPAN -CLASS="QUOTE" ->"or"</SPAN ->. We have two of those. For instance, - <SPAN -CLASS="QUOTE" ->"(ing|ements?)"</SPAN ->, can expand to match either <SPAN -CLASS="QUOTE" ->"ing"</SPAN -> - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->OR</I -></SPAN -> <SPAN -CLASS="QUOTE" ->"ements?"</SPAN ->. What is being done here, is an - attempt at matching as many variations of <SPAN -CLASS="QUOTE" ->"advertisement"</SPAN ->, and - similar, as possible. So this would expand to match just <SPAN -CLASS="QUOTE" ->"adv"</SPAN ->, - or <SPAN -CLASS="QUOTE" ->"advert"</SPAN ->, or <SPAN -CLASS="QUOTE" ->"adverts"</SPAN ->, or - <SPAN -CLASS="QUOTE" ->"advertising"</SPAN ->, or <SPAN -CLASS="QUOTE" ->"advertisement"</SPAN ->, or - <SPAN -CLASS="QUOTE" ->"advertisements"</SPAN ->. You get the idea. But it would not match - <SPAN -CLASS="QUOTE" ->"advertizements"</SPAN -> (with a <SPAN -CLASS="QUOTE" ->"z"</SPAN ->). We could fix that by - changing our regular expression to: - <SPAN -CLASS="QUOTE" ->"/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/"</SPAN ->, which would then match - either spelling.</P -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" -><TT -CLASS="LITERAL" ->/.*/advert[0-9]+\.(gif|jpe?g)</TT -></I -></SPAN -> - Again - another path statement with forward slashes. Anything in the square brackets - <SPAN -CLASS="QUOTE" ->"[ ]"</SPAN -> can be matched. This is using <SPAN -CLASS="QUOTE" ->"0-9"</SPAN -> as a - shorthand expression to mean any digit one through nine. It is the same as - saying <SPAN -CLASS="QUOTE" ->"0123456789"</SPAN ->. So any digit matches. The <SPAN -CLASS="QUOTE" ->"+"</SPAN -> - 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: <SPAN -CLASS="QUOTE" ->"(gif|jpe?g)"</SPAN ->. - This includes a <SPAN -CLASS="QUOTE" ->"|"</SPAN ->, so this needs to match the expression on - either side of that bar character also. A simple <SPAN -CLASS="QUOTE" ->"gif"</SPAN -> on one side, and the other - side will in turn match either <SPAN -CLASS="QUOTE" ->"jpeg"</SPAN -> or <SPAN -CLASS="QUOTE" ->"jpg"</SPAN ->, - since the <SPAN -CLASS="QUOTE" ->"?"</SPAN -> means the letter <SPAN -CLASS="QUOTE" ->"e"</SPAN -> 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 <SPAN -CLASS="QUOTE" ->"advert"</SPAN ->, then one or more digits, and a <SPAN -CLASS="QUOTE" ->"."</SPAN -> - (which is now a literal, and not a special character, since it is escaped - with <SPAN -CLASS="QUOTE" ->"\"</SPAN ->), and lastly either <SPAN -CLASS="QUOTE" ->"gif"</SPAN ->, or - <SPAN -CLASS="QUOTE" ->"jpeg"</SPAN ->, or <SPAN -CLASS="QUOTE" ->"jpg"</SPAN ->. Some possible matches would - include: <SPAN -CLASS="QUOTE" ->"//advert1.jpg"</SPAN ->, - <SPAN -CLASS="QUOTE" ->"/nasty/ads/advert1234.gif"</SPAN ->, - <SPAN -CLASS="QUOTE" ->"/banners/from/hell/advert99.jpg"</SPAN ->. It would not match - <SPAN -CLASS="QUOTE" ->"advert1.gif"</SPAN -> (no leading slash), or - <SPAN -CLASS="QUOTE" ->"/adverts232.jpg"</SPAN -> (the expression does not include an - <SPAN -CLASS="QUOTE" ->"s"</SPAN ->), or <SPAN -CLASS="QUOTE" ->"/advert1.jsp"</SPAN -> (<SPAN -CLASS="QUOTE" ->"jsp"</SPAN -> is not - in the expression anywhere).</P -><P -> We are barely scratching the surface of regular expressions here so that you - can understand the default <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - 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 :/</P -><P -> More reading on Perl Compatible Regular expressions: - <A -HREF="http://perldoc.perl.org/perlre.html" -TARGET="_top" ->http://perldoc.perl.org/perlre.html</A -></P -><P -> For information on regular expression based substitutions and their applications - in filters, please see the <A -HREF="filter-file.html" ->filter file tutorial</A -> - in this manual.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN5636" ->14.2. Privoxy's Internal Pages</A -></H2 -><P -> Since <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> proxies each requested - web page, it is easy for <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to - trap certain special URLs. In this way, we can talk directly to - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, and see how it is - configured, see how our rules are being applied, change these - rules and other configuration options, and even turn - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> filtering off, all with - a web browser. </P -><P -> The URLs listed below are the special ones that allow direct access - to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. Of course, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> must be running to access these. If - not, you will get a friendly error message. Internet access is not - necessary either.</P -><P -> <P -></P -><UL -><LI -><P -> - Privoxy main page: - </P -><A -NAME="AEN5650" -></A -><BLOCKQUOTE -CLASS="BLOCKQUOTE" -><P -> - <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A -> - </P -></BLOCKQUOTE -><P -> There is a shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A -> (But it - doesn't provide a fall-back to a real page, in case the request is not - sent through <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->) - </P -></LI -><LI -><P -> - Show information about the current configuration, including viewing and - editing of actions files: - </P -><A -NAME="AEN5658" -></A -><BLOCKQUOTE -CLASS="BLOCKQUOTE" -><P -> - <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A -> - </P -></BLOCKQUOTE -></LI -><LI -><P -> - Show the source code version numbers: - </P -><A -NAME="AEN5663" -></A -><BLOCKQUOTE -CLASS="BLOCKQUOTE" -><P -> - <A -HREF="http://config.privoxy.org/show-version" -TARGET="_top" ->http://config.privoxy.org/show-version</A -> - </P -></BLOCKQUOTE -></LI -><LI -><P -> - Show the browser's request headers: - </P -><A -NAME="AEN5668" -></A -><BLOCKQUOTE -CLASS="BLOCKQUOTE" -><P -> - <A -HREF="http://config.privoxy.org/show-request" -TARGET="_top" ->http://config.privoxy.org/show-request</A -> - </P -></BLOCKQUOTE -></LI -><LI -><P -> - Show which actions apply to a URL and why: - </P -><A -NAME="AEN5673" -></A -><BLOCKQUOTE -CLASS="BLOCKQUOTE" -><P -> - <A -HREF="http://config.privoxy.org/show-url-info" -TARGET="_top" ->http://config.privoxy.org/show-url-info</A -> - </P -></BLOCKQUOTE -></LI -><LI -><P -> - Toggle Privoxy on or off. This feature can be turned off/on in the main - <TT -CLASS="FILENAME" ->config</TT -> file. When toggled <SPAN -CLASS="QUOTE" ->"off"</SPAN ->, <SPAN -CLASS="QUOTE" ->"Privoxy"</SPAN -> - continues to run, but only as a pass-through proxy, with no actions taking - place: - </P -><A -NAME="AEN5681" -></A -><BLOCKQUOTE -CLASS="BLOCKQUOTE" -><P -> - <A -HREF="http://config.privoxy.org/toggle" -TARGET="_top" ->http://config.privoxy.org/toggle</A -> - </P -></BLOCKQUOTE -><P -> Short cuts. Turn off, then on: - </P -><A -NAME="AEN5685" -></A -><BLOCKQUOTE -CLASS="BLOCKQUOTE" -><P -> - <A -HREF="http://config.privoxy.org/toggle?set=disable" -TARGET="_top" ->http://config.privoxy.org/toggle?set=disable</A -> - </P -></BLOCKQUOTE -><A -NAME="AEN5688" -></A -><BLOCKQUOTE -CLASS="BLOCKQUOTE" -><P -> - <A -HREF="http://config.privoxy.org/toggle?set=enable" -TARGET="_top" ->http://config.privoxy.org/toggle?set=enable</A -> - </P -></BLOCKQUOTE -></LI -></UL -></P -><P -> These may be bookmarked for quick reference. See next. </P -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="BOOKMARKLETS" ->14.2.1. Bookmarklets</A -></H3 -><P -> Below are some <SPAN -CLASS="QUOTE" ->"bookmarklets"</SPAN -> to allow you to easily access a - <SPAN -CLASS="QUOTE" ->"mini"</SPAN -> version of some of <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - 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).</P -><P -> To save them, right-click the link and choose <SPAN -CLASS="QUOTE" ->"Add to Favorites"</SPAN -> - (IE) or <SPAN -CLASS="QUOTE" ->"Add Bookmark"</SPAN -> (Netscape). You will get a warning that - the bookmark <SPAN -CLASS="QUOTE" ->"may not be safe"</SPAN -> - just click OK. Then you can run the - Bookmarklet directly from your favorites/bookmarks. For even faster access, - you can put them on the <SPAN -CLASS="QUOTE" ->"Links"</SPAN -> bar (IE) or the <SPAN -CLASS="QUOTE" ->"Personal - Toolbar"</SPAN -> (Netscape), and run them with a single click. </P -><P -> <P -></P -><UL -><LI -><P -> <A -HREF="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=enabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());" -TARGET="_top" ->Privoxy - Enable</A -> - </P -></LI -><LI -><P -> <A -HREF="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=disabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());" -TARGET="_top" ->Privoxy - Disable</A -> - </P -></LI -><LI -><P -> <A -HREF="javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=toggle','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());" -TARGET="_top" ->Privoxy - Toggle Privoxy</A -> (Toggles between enabled and disabled) - </P -></LI -><LI -><P -> <A -HREF="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());" -TARGET="_top" ->Privoxy- View Status</A -> - </P -></LI -><LI -><P -> <A -HREF="javascript:void(window.open('http://config.privoxy.org/show-url-info?url='+escape(location.href),'Why').focus());" -TARGET="_top" ->Privoxy - Why?</A -> - </P -></LI -></UL -></P -><P -> Credit: The site which gave us the general idea for these bookmarklets is - <A -HREF="http://www.bookmarklets.com/" -TARGET="_top" ->www.bookmarklets.com</A ->. They - have more information about bookmarklets. </P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CHAIN" ->14.3. Chain of Events</A -></H2 -><P -> Let's take a quick look at how some of <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - core features are triggered, and the ensuing sequence of events when a web - page is requested by your browser:</P -><P -> <P -></P -><UL -><LI -><P -> First, your web browser requests a web page. The browser knows to send - the request to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, which will in turn, - relay the request to the remote web server after passing the following - tests: - </P -></LI -><LI -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> traps any request for its own internal CGI - pages (e.g <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A ->) and sends the CGI page back to the browser. - </P -></LI -><LI -><P -> Next, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> checks to see if the URL - matches any <A -HREF="actions-file.html#BLOCK" -><SPAN -CLASS="QUOTE" ->"+block"</SPAN -></A -> patterns. If - so, the URL is then blocked, and the remote web server will not be contacted. - <A -HREF="actions-file.html#HANDLE-AS-IMAGE" -><SPAN -CLASS="QUOTE" ->"+handle-as-image"</SPAN -></A -> - and - <A -HREF="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" -><SPAN -CLASS="QUOTE" ->"+handle-as-empty-document"</SPAN -></A -> - are then checked, and if there is no match, an - HTML <SPAN -CLASS="QUOTE" ->"BLOCKED"</SPAN -> page is sent back to the browser. Otherwise, if - it does match, an image is returned for the former, and an empty text - document for the latter. The type of image would depend on the setting of - <A -HREF="actions-file.html#SET-IMAGE-BLOCKER" -><SPAN -CLASS="QUOTE" ->"+set-image-blocker"</SPAN -></A -> - (blank, checkerboard pattern, or an HTTP redirect to an image elsewhere). - </P -></LI -><LI -><P -> Untrusted URLs are blocked. If URLs are being added to the - <TT -CLASS="FILENAME" ->trust</TT -> file, then that is done. - </P -></LI -><LI -><P -> If the URL pattern matches the <A -HREF="actions-file.html#FAST-REDIRECTS" -><SPAN -CLASS="QUOTE" ->"+fast-redirects"</SPAN -></A -> action, - it is then processed. Unwanted parts of the requested URL are stripped. - </P -></LI -><LI -><P -> Now the rest of the client browser's request headers are processed. If any - of these match any of the relevant actions (e.g. <A -HREF="actions-file.html#HIDE-USER-AGENT" -><SPAN -CLASS="QUOTE" ->"+hide-user-agent"</SPAN -></A ->, - etc.), headers are suppressed or forged as determined by these actions and - their parameters. - </P -></LI -><LI -><P -> Now the web server starts sending its response back (i.e. typically a web - page). - </P -></LI -><LI -><P -> 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 determined by the - <A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" -><SPAN -CLASS="QUOTE" ->"+crunch-incoming-cookies"</SPAN -></A ->, - <A -HREF="actions-file.html#SESSION-COOKIES-ONLY" -><SPAN -CLASS="QUOTE" ->"+session-cookies-only"</SPAN -></A ->, - and <A -HREF="actions-file.html#DOWNGRADE-HTTP-VERSION" -><SPAN -CLASS="QUOTE" ->"+downgrade-http-version"</SPAN -></A -> - actions. - </P -></LI -><LI -><P -> If any <A -HREF="actions-file.html#FILTER" -><SPAN -CLASS="QUOTE" ->"+filter"</SPAN -></A -> action - or <A -HREF="actions-file.html#DEANIMATE-GIFS" -><SPAN -CLASS="QUOTE" ->"+deanimate-gifs"</SPAN -></A -> - 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 - <TT -CLASS="FILENAME" ->default.filter</TT -> and any other filter files) are - processed against the buffered content. Filters are applied in the order - they are specified in one of the filter files. 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 - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> back to your browser. - </P -><P -> If neither a <A -HREF="actions-file.html#FILTER" -><SPAN -CLASS="QUOTE" ->"+filter"</SPAN -></A -> action - or <A -HREF="actions-file.html#DEANIMATE-GIFS" -><SPAN -CLASS="QUOTE" ->"+deanimate-gifs"</SPAN -></A -> - matches, then <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> passes the raw data through - to the client browser as it becomes available. - </P -></LI -><LI -><P -> As the browser receives the now (possibly 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 - separate request (this is easily viewable in <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - logs). And each such request is in turn processed just as above. Note that a - complex web page will have many, many such embedded URLs. If these - secondary requests are to a different server, then quite possibly a very - differing set of actions is triggered. - </P -></LI -></UL -></P -><P -> NOTE: This is somewhat of a simplistic overview of what happens with each URL - request. For the sake of brevity and simplicity, we have focused on - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> core features only.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="ACTIONSANAT" ->14.4. Troubleshooting: Anatomy of an Action</A -></H2 -><P -> The way <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> applies - <A -HREF="actions-file.html#ACTIONS" ->actions</A -> and <A -HREF="actions-file.html#FILTER" ->filters</A -> - 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 - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->see</I -></SPAN -> just what <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is - doing. Especially, if something <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 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 - <A -HREF="appendix.html#REGEX" ->regular expressions</A -> whose consequences are not - always so obvious. </P -><P -> One quick test to see if <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is causing a problem - or not, is to disable it temporarily. This should be the first troubleshooting - step. See <A -HREF="appendix.html#BOOKMARKLETS" ->the Bookmarklets</A -> section on a quick - and easy way to do this (be sure to flush caches afterward!). Looking at the - logs is a good idea too. (Note that both the toggle feature and logging are - enabled via <TT -CLASS="FILENAME" ->config</TT -> file settings, and may need to be - turned <SPAN -CLASS="QUOTE" ->"on"</SPAN ->.)</P -><P -> Another easy troubleshooting step to try is if you have done any - customization of your installation, revert back to the installed - defaults and see if that helps. There are times the developers get complaints - about one thing or another, and the problem is more related to a customized - configuration issue.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> also provides the - <A -HREF="http://config.privoxy.org/show-url-info" -TARGET="_top" ->http://config.privoxy.org/show-url-info</A -> - page that can show us very specifically how <SPAN -CLASS="APPLICATION" ->actions</SPAN -> - are being applied to any given URL. This is a big help for troubleshooting.</P -><P -> First, enter one URL (or partial URL) at the prompt, and then - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will tell us - how the current configuration will handle it. This will not - help with filtering effects (i.e. the <A -HREF="actions-file.html#FILTER" -><SPAN -CLASS="QUOTE" ->"+filter"</SPAN -></A -> action) from - one of the filter files 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 <SPAN -CLASS="QUOTE" ->"View - Page Source"</SPAN -> option for this. Or right click on the ad, and grab the - URL.</P -><P -> Let's try an example, <A -HREF="http://google.com" -TARGET="_top" ->google.com</A ->, - and look at it one section at a time in a sample configuration (your real - configuration may vary):</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> Matches for http://www.google.com: +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Appendix + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="See Also" href="seealso.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="seealso.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="APPENDIX">14. Appendix</a> + </h1> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="REGEX">14.1. Regular Expressions</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span> uses Perl-style <span + class="QUOTE">"regular expressions"</span> in its <a href= + "actions-file.html">actions files</a> and <a href= + "filter-file.html">filter file</a>, through the <a href= + "http://www.pcre.org/" target="_top">PCRE</a> and <span class= + "APPLICATION">PCRS</span> libraries. + </p> + <p> + If you are reading this, you probably don't understand what <span + class="QUOTE">"regular expressions"</span> are, or what they can + do. So this will be a very brief introduction only. A full + explanation would require a <a href= + "http://www.oreilly.com/catalog/regex/" target="_top">book</a> ;-) + </p> + <p> + Regular expressions provide a language to describe patterns that + can be run against strings of characters (letter, numbers, etc), to + see if they match the string or not. The patterns are themselves + (sometimes complex) strings of literal characters, combined with + wild-cards, and other special characters, called meta-characters. + The <span class="QUOTE">"meta-characters"</span> have special + meanings and are used to build complex patterns to be matched + against. Perl Compatible Regular Expressions are an especially + convenient <span class="QUOTE">"dialect"</span> of the regular + expression language. + </p> + <p> + To make a simple analogy, we do something similar when we use + wild-card characters when listing files with the <b class= + "COMMAND">dir</b> command in DOS. <tt class="LITERAL">*.*</tt> + matches all filenames. The <span class="QUOTE">"special"</span> + character here is the asterisk which matches any and all + characters. We can be more specific and use <tt class= + "LITERAL">?</tt> to match just individual characters. So <span + class="QUOTE">"dir file?.text"</span> would match <span class= + "QUOTE">"file1.txt"</span>, <span class="QUOTE">"file2.txt"</span>, + etc. We are pattern matching, using a similar technique to <span + class="QUOTE">"regular expressions"</span>! + </p> + <p> + Regular expressions do essentially the same thing, but are much, + much more powerful. There are many more <span class= + "QUOTE">"special characters"</span> and ways of building complex + patterns however. Let's look at a few of the common ones, and then + some examples: + </p> + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS">.</i></span> - + Matches any single character, e.g. <span class= + "QUOTE">"a"</span>, <span class="QUOTE">"A"</span>, <span + class="QUOTE">"4"</span>, <span class="QUOTE">":"</span>, or + <span class="QUOTE">"@"</span>. + </td> + </tr> + </tbody> + </table> - In file: default.action <SPAN -CLASS="GUIBUTTON" ->[ View ]</SPAN -> <SPAN -CLASS="GUIBUTTON" ->[ Edit ]</SPAN -> + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS">?</i></span> - The + preceding character or expression is matched ZERO or ONE + times. Either/or. + </td> + </tr> + </tbody> + </table> + + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS">+</i></span> - The + preceding character or expression is matched ONE or MORE + times. + </td> + </tr> + </tbody> + </table> + + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS">*</i></span> - The + preceding character or expression is matched ZERO or MORE + times. + </td> + </tr> + </tbody> + </table> + + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS">\</i></span> - The + <span class="QUOTE">"escape"</span> character denotes that + the following character should be taken literally. This is + used where one of the special characters (e.g. <span class= + "QUOTE">"."</span>) needs to be taken literally and not as a + special meta-character. Example: <span class= + "QUOTE">"example\.com"</span>, makes sure the period is + recognized only as a period (and not expanded to its + meta-character meaning of any single character). + </td> + </tr> + </tbody> + </table> + + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS">[ ]</i></span> - + Characters enclosed in brackets will be matched if any of the + enclosed characters are encountered. For instance, <span + class="QUOTE">"[0-9]"</span> matches any numeric digit (zero + through nine). As an example, we can combine this with <span + class="QUOTE">"+"</span> to match any digit one of more + times: <span class="QUOTE">"[0-9]+"</span>. + </td> + </tr> + </tbody> + </table> + + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS">( )</i></span> - + parentheses are used to group a sub-expression, or multiple + sub-expressions. + </td> + </tr> + </tbody> + </table> + + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class="EMPHASIS">|</i></span> - The + <span class="QUOTE">"bar"</span> character works like an + <span class="QUOTE">"or"</span> conditional statement. A + match is successful if the sub-expression on either side of + <span class="QUOTE">"|"</span> matches. As an example: <span + class="QUOTE">"/(this|that) example/"</span> uses grouping + and the bar character and would match either <span class= + "QUOTE">"this example"</span> or <span class="QUOTE">"that + example"</span>, and nothing else. + </td> + </tr> + </tbody> + </table> + + <p> + These are just some of the ones you are likely to use when matching + URLs with <span class="APPLICATION">Privoxy</span>, 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: + </p> + <p> + <span class="emphasis"><i class="EMPHASIS"><tt class= + "LITERAL">/.*/banners/.*</tt></i></span> - A simple example that + uses the common combination of <span class="QUOTE">"."</span> and + <span class="QUOTE">"*"</span> 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 (<span + class="QUOTE">".*"</span>) another literal forward slash, the + string <span class="QUOTE">"banners"</span>, another forward slash, + and lastly another <span class="QUOTE">".*"</span>. We are building + a directory path here. This will match any file with the path that + has a directory named <span class="QUOTE">"banners"</span> in it. + The <span class="QUOTE">".*"</span> 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: + <span class= + "QUOTE">"/eye/hate/spammers/banners/annoy_me_please.gif"</span>, or + just <span class="QUOTE">"/banners/annoying.html"</span>, or almost + an infinite number of other possible combinations, just so it has + <span class="QUOTE">"banners"</span> in the path somewhere. + </p> + <p> + And now something a little more complex: + </p> + <p> + <span class="emphasis"><i class="EMPHASIS"><tt class= + "LITERAL">/.*/adv((er)?ts?|ertis(ing|ements?))?/</tt></i></span> - + We have several literal forward slashes again (<span class= + "QUOTE">"/"</span>), so we are building another expression that is + a file path statement. We have another <span class= + "QUOTE">".*"</span>, so we are matching against any conceivable + sub-path, just so it matches our expression. The only true literal + that <span class="emphasis"><i class="EMPHASIS">must + match</i></span> our pattern is <span class= + "APPLICATION">adv</span>, together with the forward slashes. What + comes after the <span class="QUOTE">"adv"</span> string is the + interesting part. + </p> + <p> + Remember the <span class="QUOTE">"?"</span> means the preceding + expression (either a literal character or anything grouped with + <span class="QUOTE">"(...)"</span> in this case) can exist or not, + since this means either zero or one match. So <span class= + "QUOTE">"((er)?ts?|ertis(ing|ements?))"</span> is optional, as are + the individual sub-expressions: <span class="QUOTE">"(er)"</span>, + <span class="QUOTE">"(ing|ements?)"</span>, and the <span class= + "QUOTE">"s"</span>. The <span class="QUOTE">"|"</span> means <span + class="QUOTE">"or"</span>. We have two of those. For instance, + <span class="QUOTE">"(ing|ements?)"</span>, can expand to match + either <span class="QUOTE">"ing"</span> <span class="emphasis"><i + class="EMPHASIS">OR</i></span> <span class= + "QUOTE">"ements?"</span>. What is being done here, is an attempt at + matching as many variations of <span class= + "QUOTE">"advertisement"</span>, and similar, as possible. So this + would expand to match just <span class="QUOTE">"adv"</span>, or + <span class="QUOTE">"advert"</span>, or <span class= + "QUOTE">"adverts"</span>, or <span class= + "QUOTE">"advertising"</span>, or <span class= + "QUOTE">"advertisement"</span>, or <span class= + "QUOTE">"advertisements"</span>. You get the idea. But it would not + match <span class="QUOTE">"advertizements"</span> (with a <span + class="QUOTE">"z"</span>). We could fix that by changing our + regular expression to: <span class= + "QUOTE">"/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/"</span>, which + would then match either spelling. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS"><tt class= + "LITERAL">/.*/advert[0-9]+\.(gif|jpe?g)</tt></i></span> - Again + another path statement with forward slashes. Anything in the square + brackets <span class="QUOTE">"[ ]"</span> can be matched. This is + using <span class="QUOTE">"0-9"</span> as a shorthand expression to + mean any digit one through nine. It is the same as saying <span + class="QUOTE">"0123456789"</span>. So any digit matches. The <span + class="QUOTE">"+"</span> 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: <span class= + "QUOTE">"(gif|jpe?g)"</span>. This includes a <span class= + "QUOTE">"|"</span>, so this needs to match the expression on either + side of that bar character also. A simple <span class= + "QUOTE">"gif"</span> on one side, and the other side will in turn + match either <span class="QUOTE">"jpeg"</span> or <span class= + "QUOTE">"jpg"</span>, since the <span class="QUOTE">"?"</span> + means the letter <span class="QUOTE">"e"</span> 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 <span class="QUOTE">"advert"</span>, then one or + more digits, and a <span class="QUOTE">"."</span> (which is now a + literal, and not a special character, since it is escaped with + <span class="QUOTE">"\"</span>), and lastly either <span class= + "QUOTE">"gif"</span>, or <span class="QUOTE">"jpeg"</span>, or + <span class="QUOTE">"jpg"</span>. Some possible matches would + include: <span class="QUOTE">"//advert1.jpg"</span>, <span class= + "QUOTE">"/nasty/ads/advert1234.gif"</span>, <span class= + "QUOTE">"/banners/from/hell/advert99.jpg"</span>. It would not + match <span class="QUOTE">"advert1.gif"</span> (no leading slash), + or <span class="QUOTE">"/adverts232.jpg"</span> (the expression + does not include an <span class="QUOTE">"s"</span>), or <span + class="QUOTE">"/advert1.jsp"</span> (<span class= + "QUOTE">"jsp"</span> is not in the expression anywhere). + </p> + <p> + We are barely scratching the surface of regular expressions here so + that you can understand the default <span class= + "APPLICATION">Privoxy</span> 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 :/ + </p> + <p> + More reading on Perl Compatible Regular expressions: <a href= + "http://perldoc.perl.org/perlre.html" target= + "_top">http://perldoc.perl.org/perlre.html</a> + </p> + <p> + For information on regular expression based substitutions and their + applications in filters, please see the <a href= + "filter-file.html">filter file tutorial</a> in this manual. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN5636">14.2. Privoxy's Internal Pages</a> + </h2> + <p> + Since <span class="APPLICATION">Privoxy</span> proxies each + requested web page, it is easy for <span class= + "APPLICATION">Privoxy</span> to trap certain special URLs. In this + way, we can talk directly to <span class= + "APPLICATION">Privoxy</span>, and see how it is configured, see how + our rules are being applied, change these rules and other + configuration options, and even turn <span class= + "APPLICATION">Privoxy's</span> filtering off, all with a web + browser. + </p> + <p> + The URLs listed below are the special ones that allow direct access + to <span class="APPLICATION">Privoxy</span>. Of course, <span + class="APPLICATION">Privoxy</span> must be running to access these. + If not, you will get a friendly error message. Internet access is + not necessary either. + </p> + <p> + </p> + <ul> + <li> + <p> + Privoxy main page: + </p> + <a name="AEN5650"></a> + <blockquote class="BLOCKQUOTE"> + <p> + <a href="http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a> + </p> + </blockquote> + <p> + There is a shortcut: <a href="http://p.p/" target= + "_top">http://p.p/</a> (But it doesn't provide a fall-back to a + real page, in case the request is not sent through <span class= + "APPLICATION">Privoxy</span>) + </p> + </li> + <li> + <p> + Show information about the current configuration, including + viewing and editing of actions files: + </p> + <a name="AEN5658"></a> + <blockquote class="BLOCKQUOTE"> + <p> + <a href="http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a> + </p> + </blockquote> + </li> + <li> + <p> + Show the source code version numbers: + </p> + <a name="AEN5663"></a> + <blockquote class="BLOCKQUOTE"> + <p> + <a href="http://config.privoxy.org/show-version" target= + "_top">http://config.privoxy.org/show-version</a> + </p> + </blockquote> + </li> + <li> + <p> + Show the browser's request headers: + </p> + <a name="AEN5668"></a> + <blockquote class="BLOCKQUOTE"> + <p> + <a href="http://config.privoxy.org/show-request" target= + "_top">http://config.privoxy.org/show-request</a> + </p> + </blockquote> + </li> + <li> + <p> + Show which actions apply to a URL and why: + </p> + <a name="AEN5673"></a> + <blockquote class="BLOCKQUOTE"> + <p> + <a href="http://config.privoxy.org/show-url-info" target= + "_top">http://config.privoxy.org/show-url-info</a> + </p> + </blockquote> + </li> + <li> + <p> + Toggle Privoxy on or off. This feature can be turned off/on in + the main <tt class="FILENAME">config</tt> file. When toggled + <span class="QUOTE">"off"</span>, <span class= + "QUOTE">"Privoxy"</span> continues to run, but only as a + pass-through proxy, with no actions taking place: + </p> + <a name="AEN5681"></a> + <blockquote class="BLOCKQUOTE"> + <p> + <a href="http://config.privoxy.org/toggle" target= + "_top">http://config.privoxy.org/toggle</a> + </p> + </blockquote> + <p> + Short cuts. Turn off, then on: + </p> + <a name="AEN5685"></a> + <blockquote class="BLOCKQUOTE"> + <p> + <a href="http://config.privoxy.org/toggle?set=disable" + target= + "_top">http://config.privoxy.org/toggle?set=disable</a> + </p> + </blockquote> + <a name="AEN5688"></a> + <blockquote class="BLOCKQUOTE"> + <p> + <a href="http://config.privoxy.org/toggle?set=enable" target= + "_top">http://config.privoxy.org/toggle?set=enable</a> + </p> + </blockquote> + </li> + </ul> + + <p> + These may be bookmarked for quick reference. See next. + </p> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="BOOKMARKLETS">14.2.1. Bookmarklets</a> + </h3> + <p> + Below are some <span class="QUOTE">"bookmarklets"</span> to allow + you to easily access a <span class="QUOTE">"mini"</span> version + of some of <span class="APPLICATION">Privoxy's</span> 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). + </p> + <p> + To save them, right-click the link and choose <span class= + "QUOTE">"Add to Favorites"</span> (IE) or <span class= + "QUOTE">"Add Bookmark"</span> (Netscape). You will get a warning + that the bookmark <span class="QUOTE">"may not be safe"</span> - + just click OK. Then you can run the Bookmarklet directly from + your favorites/bookmarks. For even faster access, you can put + them on the <span class="QUOTE">"Links"</span> bar (IE) or the + <span class="QUOTE">"Personal Toolbar"</span> (Netscape), and run + them with a single click. + </p> + <p> + </p> + <ul> + <li> + <p> + <a href= + "javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=enabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());" + target="_top">Privoxy - Enable</a> + </p> + </li> + <li> + <p> + <a href= + "javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=disabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());" + target="_top">Privoxy - Disable</a> + </p> + </li> + <li> + <p> + <a href= + "javascript:void(window.open('http://config.privoxy.org/toggle?mini=y&set=toggle','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no').focus());" + target="_top">Privoxy - Toggle Privoxy</a> (Toggles between + enabled and disabled) + </p> + </li> + <li> + <p> + <a href= + "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());" + target="_top">Privoxy- View Status</a> + </p> + </li> + <li> + <p> + <a href= + "javascript:void(window.open('http://config.privoxy.org/show-url-info?url='+escape(location.href),'Why').focus());" + target="_top">Privoxy - Why?</a> + </p> + </li> + </ul> + + <p> + Credit: The site which gave us the general idea for these + bookmarklets is <a href="http://www.bookmarklets.com/" target= + "_top">www.bookmarklets.com</a>. They have more information about + bookmarklets. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CHAIN">14.3. Chain of Events</a> + </h2> + <p> + Let's take a quick look at how some of <span class= + "APPLICATION">Privoxy's</span> core features are triggered, and the + ensuing sequence of events when a web page is requested by your + browser: + </p> + <p> + </p> + <ul> + <li> + <p> + First, your web browser requests a web page. The browser knows + to send the request to <span class= + "APPLICATION">Privoxy</span>, which will in turn, relay the + request to the remote web server after passing the following + tests: + </p> + </li> + <li> + <p> + <span class="APPLICATION">Privoxy</span> traps any request for + its own internal CGI pages (e.g <a href="http://p.p/" target= + "_top">http://p.p/</a>) and sends the CGI page back to the + browser. + </p> + </li> + <li> + <p> + Next, <span class="APPLICATION">Privoxy</span> checks to see if + the URL matches any <a href="actions-file.html#BLOCK"><span + class="QUOTE">"+block"</span></a> patterns. If so, the URL is + then blocked, and the remote web server will not be contacted. + <a href="actions-file.html#HANDLE-AS-IMAGE"><span class= + "QUOTE">"+handle-as-image"</span></a> and <a href= + "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT"><span class= + "QUOTE">"+handle-as-empty-document"</span></a> are then + checked, and if there is no match, an HTML <span class= + "QUOTE">"BLOCKED"</span> page is sent back to the browser. + Otherwise, if it does match, an image is returned for the + former, and an empty text document for the latter. The type of + image would depend on the setting of <a href= + "actions-file.html#SET-IMAGE-BLOCKER"><span class= + "QUOTE">"+set-image-blocker"</span></a> (blank, checkerboard + pattern, or an HTTP redirect to an image elsewhere). + </p> + </li> + <li> + <p> + Untrusted URLs are blocked. If URLs are being added to the <tt + class="FILENAME">trust</tt> file, then that is done. + </p> + </li> + <li> + <p> + If the URL pattern matches the <a href= + "actions-file.html#FAST-REDIRECTS"><span class= + "QUOTE">"+fast-redirects"</span></a> action, it is then + processed. Unwanted parts of the requested URL are stripped. + </p> + </li> + <li> + <p> + Now the rest of the client browser's request headers are + processed. If any of these match any of the relevant actions + (e.g. <a href="actions-file.html#HIDE-USER-AGENT"><span class= + "QUOTE">"+hide-user-agent"</span></a>, etc.), headers are + suppressed or forged as determined by these actions and their + parameters. + </p> + </li> + <li> + <p> + Now the web server starts sending its response back (i.e. + typically a web page). + </p> + </li> + <li> + <p> + 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 determined by the <a href= + "actions-file.html#CRUNCH-INCOMING-COOKIES"><span class= + "QUOTE">"+crunch-incoming-cookies"</span></a>, <a href= + "actions-file.html#SESSION-COOKIES-ONLY"><span class= + "QUOTE">"+session-cookies-only"</span></a>, and <a href= + "actions-file.html#DOWNGRADE-HTTP-VERSION"><span class= + "QUOTE">"+downgrade-http-version"</span></a> actions. + </p> + </li> + <li> + <p> + If any <a href="actions-file.html#FILTER"><span class= + "QUOTE">"+filter"</span></a> action or <a href= + "actions-file.html#DEANIMATE-GIFS"><span class= + "QUOTE">"+deanimate-gifs"</span></a> 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 <tt class="FILENAME">default.filter</tt> and any other + filter files) are processed against the buffered content. + Filters are applied in the order they are specified in one of + the filter files. 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 + <span class="APPLICATION">Privoxy</span> back to your browser. + </p> + <p> + If neither a <a href="actions-file.html#FILTER"><span class= + "QUOTE">"+filter"</span></a> action or <a href= + "actions-file.html#DEANIMATE-GIFS"><span class= + "QUOTE">"+deanimate-gifs"</span></a> matches, then <span class= + "APPLICATION">Privoxy</span> passes the raw data through to the + client browser as it becomes available. + </p> + </li> + <li> + <p> + As the browser receives the now (possibly 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 separate + request (this is easily viewable in <span class= + "APPLICATION">Privoxy's</span> logs). And each such request is + in turn processed just as above. Note that a complex web page + will have many, many such embedded URLs. If these secondary + requests are to a different server, then quite possibly a very + differing set of actions is triggered. + </p> + </li> + </ul> + + <p> + NOTE: This is somewhat of a simplistic overview of what happens + with each URL request. For the sake of brevity and simplicity, we + have focused on <span class="APPLICATION">Privoxy's</span> core + features only. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="ACTIONSANAT">14.4. Troubleshooting: Anatomy of an + Action</a> + </h2> + <p> + The way <span class="APPLICATION">Privoxy</span> applies <a href= + "actions-file.html#ACTIONS">actions</a> and <a href= + "actions-file.html#FILTER">filters</a> 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 <span class="emphasis"><i + class="EMPHASIS">see</i></span> just what <span class= + "APPLICATION">Privoxy</span> is doing. Especially, if something + <span class="APPLICATION">Privoxy</span> 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 <a href="appendix.html#REGEX">regular expressions</a> whose + consequences are not always so obvious. + </p> + <p> + One quick test to see if <span class="APPLICATION">Privoxy</span> + is causing a problem or not, is to disable it temporarily. This + should be the first troubleshooting step. See <a href= + "appendix.html#BOOKMARKLETS">the Bookmarklets</a> section on a + quick and easy way to do this (be sure to flush caches afterward!). + Looking at the logs is a good idea too. (Note that both the toggle + feature and logging are enabled via <tt class= + "FILENAME">config</tt> file settings, and may need to be turned + <span class="QUOTE">"on"</span>.) + </p> + <p> + Another easy troubleshooting step to try is if you have done any + customization of your installation, revert back to the installed + defaults and see if that helps. There are times the developers get + complaints about one thing or another, and the problem is more + related to a customized configuration issue. + </p> + <p> + <span class="APPLICATION">Privoxy</span> also provides the <a href= + "http://config.privoxy.org/show-url-info" target= + "_top">http://config.privoxy.org/show-url-info</a> page that can + show us very specifically how <span class= + "APPLICATION">actions</span> are being applied to any given URL. + This is a big help for troubleshooting. + </p> + <p> + First, enter one URL (or partial URL) at the prompt, and then <span + class="APPLICATION">Privoxy</span> will tell us how the current + configuration will handle it. This will not help with filtering + effects (i.e. the <a href="actions-file.html#FILTER"><span class= + "QUOTE">"+filter"</span></a> action) from one of the filter files + 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 <span class="QUOTE">"View Page Source"</span> + option for this. Or right click on the ad, and grab the URL. + </p> + <p> + Let's try an example, <a href="http://google.com" target= + "_top">google.com</a>, and look at it one section at a time in a + sample configuration (your real configuration may vary): + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + Matches for http://www.google.com: + + In file: default.action <span class="GUIBUTTON">[ View ]</span> <span class= +"GUIBUTTON">[ Edit ]</span> {+change-x-forwarded-for{block} +deanimate-gifs {last} @@ -1464,180 +780,96 @@ CLASS="GUIBUTTON" +session-cookies-only +set-image-blocker {pattern} / - + { -session-cookies-only } .google.com { -fast-redirects } .google.com -In file: user.action <SPAN -CLASS="GUIBUTTON" ->[ View ]</SPAN -> <SPAN -CLASS="GUIBUTTON" ->[ Edit ]</SPAN -> -(no matches in this file) </PRE -></TD -></TR -></TABLE -></P -><P -> This is telling us how we have defined our - <A -HREF="actions-file.html#ACTIONS" -><SPAN -CLASS="QUOTE" ->"actions"</SPAN -></A ->, and - which ones match for our test case, <SPAN -CLASS="QUOTE" ->"google.com"</SPAN ->. - Displayed is all the actions that are available to us. Remember, - the <TT -CLASS="LITERAL" ->+</TT -> sign denotes <SPAN -CLASS="QUOTE" ->"on"</SPAN ->. <TT -CLASS="LITERAL" ->-</TT -> - denotes <SPAN -CLASS="QUOTE" ->"off"</SPAN ->. So some are <SPAN -CLASS="QUOTE" ->"on"</SPAN -> here, but many - are <SPAN -CLASS="QUOTE" ->"off"</SPAN ->. Each example we try may provide a slightly different - end result, depending on our configuration directives.</P -><P -> The first listing - is for our <TT -CLASS="FILENAME" ->default.action</TT -> 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 <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> file, this would be the - section just below the <SPAN -CLASS="QUOTE" ->"aliases"</SPAN -> section near the top. This - will apply to all URLs as signified by the single forward slash at the end - of the listing -- <SPAN -CLASS="QUOTE" ->" / "</SPAN ->.</P -><P -> But we have defined additional actions that would be exceptions to these general - rules, and then we list specific URLs (or patterns) that these exceptions - would apply to. Last match wins. Just below this then are two explicit - matches for <SPAN -CLASS="QUOTE" ->".google.com"</SPAN ->. The first is negating our previous - cookie setting, which was for <A -HREF="actions-file.html#SESSION-COOKIES-ONLY" -><SPAN -CLASS="QUOTE" ->"+session-cookies-only"</SPAN -></A -> - (i.e. not persistent). So we will allow persistent cookies for google, at - least that is how it is in this example. The second turns - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->off</I -></SPAN -> any <A -HREF="actions-file.html#FAST-REDIRECTS" -><SPAN -CLASS="QUOTE" ->"+fast-redirects"</SPAN -></A -> - action, allowing this to take place unmolested. Note that there is a leading - dot here -- <SPAN -CLASS="QUOTE" ->".google.com"</SPAN ->. This will match any hosts and - sub-domains, in the google.com domain also, such as - <SPAN -CLASS="QUOTE" ->"www.google.com"</SPAN -> or <SPAN -CLASS="QUOTE" ->"mail.google.com"</SPAN ->. But it would not - match <SPAN -CLASS="QUOTE" ->"www.google.de"</SPAN ->! So, apparently, we have these two actions - defined as exceptions to the general rules at the top somewhere in the lower - part of our <TT -CLASS="FILENAME" ->default.action</TT -> file, and - <SPAN -CLASS="QUOTE" ->"google.com"</SPAN -> is referenced somewhere in these latter sections.</P -><P -> Then, for our <TT -CLASS="FILENAME" ->user.action</TT -> file, we again have no hits. - So there is nothing google-specific that we might have added to our own, local - configuration. If there was, those actions would over-rule any actions from - previously processed files, such as <TT -CLASS="FILENAME" ->default.action</TT ->. - <TT -CLASS="FILENAME" ->user.action</TT -> typically has the last word. This is the - best place to put hard and fast exceptions,</P -><P -> And finally we pull it all together in the bottom section and summarize how - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is applying all its <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> - to <SPAN -CLASS="QUOTE" ->"google.com"</SPAN ->: </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> Final results: - +In file: user.action <span class="GUIBUTTON">[ View ]</span> <span class= +"GUIBUTTON">[ Edit ]</span> +(no matches in this file) +</pre> + </td> + </tr> + </table> + + <p> + This is telling us how we have defined our <a href= + "actions-file.html#ACTIONS"><span class= + "QUOTE">"actions"</span></a>, and which ones match for our test + case, <span class="QUOTE">"google.com"</span>. Displayed is all the + actions that are available to us. Remember, the <tt class= + "LITERAL">+</tt> sign denotes <span class="QUOTE">"on"</span>. <tt + class="LITERAL">-</tt> denotes <span class="QUOTE">"off"</span>. So + some are <span class="QUOTE">"on"</span> here, but many are <span + class="QUOTE">"off"</span>. Each example we try may provide a + slightly different end result, depending on our configuration + directives. + </p> + <p> + The first listing is for our <tt class= + "FILENAME">default.action</tt> 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 <span class="QUOTE">"actions"</span> + file, this would be the section just below the <span class= + "QUOTE">"aliases"</span> section near the top. This will apply to + all URLs as signified by the single forward slash at the end of the + listing -- <span class="QUOTE">" / "</span>. + </p> + <p> + But we have defined additional actions that would be exceptions to + these general rules, and then we list specific URLs (or patterns) + that these exceptions would apply to. Last match wins. Just below + this then are two explicit matches for <span class= + "QUOTE">".google.com"</span>. The first is negating our previous + cookie setting, which was for <a href= + "actions-file.html#SESSION-COOKIES-ONLY"><span class= + "QUOTE">"+session-cookies-only"</span></a> (i.e. not persistent). + So we will allow persistent cookies for google, at least that is + how it is in this example. The second turns <span class= + "emphasis"><i class="EMPHASIS">off</i></span> any <a href= + "actions-file.html#FAST-REDIRECTS"><span class= + "QUOTE">"+fast-redirects"</span></a> action, allowing this to take + place unmolested. Note that there is a leading dot here -- <span + class="QUOTE">".google.com"</span>. This will match any hosts and + sub-domains, in the google.com domain also, such as <span class= + "QUOTE">"www.google.com"</span> or <span class= + "QUOTE">"mail.google.com"</span>. But it would not match <span + class="QUOTE">"www.google.de"</span>! So, apparently, we have these + two actions defined as exceptions to the general rules at the top + somewhere in the lower part of our <tt class= + "FILENAME">default.action</tt> file, and <span class= + "QUOTE">"google.com"</span> is referenced somewhere in these latter + sections. + </p> + <p> + Then, for our <tt class="FILENAME">user.action</tt> file, we again + have no hits. So there is nothing google-specific that we might + have added to our own, local configuration. If there was, those + actions would over-rule any actions from previously processed + files, such as <tt class="FILENAME">default.action</tt>. <tt class= + "FILENAME">user.action</tt> typically has the last word. This is + the best place to put hard and fast exceptions, + </p> + <p> + And finally we pull it all together in the bottom section and + summarize how <span class="APPLICATION">Privoxy</span> is applying + all its <span class="QUOTE">"actions"</span> to <span class= + "QUOTE">"google.com"</span>: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + Final results: + -add-header -block - +change-x-forwarded-for{block} + +change-x-forwarded-for{block} -client-header-filter{hide-tor-exit-notation} -content-type-overwrite -crunch-client-header @@ -1688,142 +920,90 @@ CLASS="SCREEN" -prevent-compression -redirect -server-header-filter{xml-to-html} - -server-header-filter{html-to-xml} + -server-header-filter{html-to-xml} -session-cookies-only - +set-image-blocker {pattern} </PRE -></TD -></TR -></TABLE -></P -><P -> Notice the only difference here to the previous listing, is to - <SPAN -CLASS="QUOTE" ->"fast-redirects"</SPAN -> and <SPAN -CLASS="QUOTE" ->"session-cookies-only"</SPAN ->, - which are activated specifically for this site in our configuration, - and thus show in the <SPAN -CLASS="QUOTE" ->"Final Results"</SPAN ->.</P -><P -> Now another example, <SPAN -CLASS="QUOTE" ->"ad.doubleclick.net"</SPAN ->:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { +block{Domains starts with "ad"} } + +set-image-blocker {pattern} +</pre> + </td> + </tr> + </table> + + <p> + Notice the only difference here to the previous listing, is to + <span class="QUOTE">"fast-redirects"</span> and <span class= + "QUOTE">"session-cookies-only"</span>, which are activated + specifically for this site in our configuration, and thus show in + the <span class="QUOTE">"Final Results"</span>. + </p> + <p> + Now another example, <span class= + "QUOTE">"ad.doubleclick.net"</span>: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { +block{Domains starts with "ad"} } ad*. { +block{Domain contains "ad"} } .ad. { +block{Doubleclick banner server} +handle-as-image } - .[a-vx-z]*.doubleclick.net</PRE -></TD -></TR -></TABLE -></P -><P -> We'll just show the interesting part here - the explicit matches. It is - matched three different times. Two <SPAN -CLASS="QUOTE" ->"+block{}"</SPAN -> sections, - and a <SPAN -CLASS="QUOTE" ->"+block{} +handle-as-image"</SPAN ->, - which is the expanded form of one of our aliases that had been defined as: - <SPAN -CLASS="QUOTE" ->"+block-as-image"</SPAN ->. (<A -HREF="actions-file.html#ALIASES" -><SPAN -CLASS="QUOTE" ->"Aliases"</SPAN -></A -> are defined in - the first section of the actions file and typically used to combine more - than one action.)</P -><P -> 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 <SPAN -CLASS="QUOTE" ->"ad.doubleclick.net"</SPAN -> - is done here -- as both a <A -HREF="actions-file.html#BLOCK" -><SPAN -CLASS="QUOTE" ->"+block{}"</SPAN -></A -> - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->and</I -></SPAN -> an - <A -HREF="actions-file.html#HANDLE-AS-IMAGE" -><SPAN -CLASS="QUOTE" ->"+handle-as-image"</SPAN -></A ->. - The custom alias <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->+block-as-image</TT ->"</SPAN -> just - simplifies the process and make it more readable.</P -><P -> One last example. Let's try <SPAN -CLASS="QUOTE" ->"http://www.example.net/adsl/HOWTO/"</SPAN ->. - This one is giving us problems. We are getting a blank page. Hmmm ...</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> Matches for http://www.example.net/adsl/HOWTO/: + .[a-vx-z]*.doubleclick.net +</pre> + </td> + </tr> + </table> - In file: default.action <SPAN -CLASS="GUIBUTTON" ->[ View ]</SPAN -> <SPAN -CLASS="GUIBUTTON" ->[ Edit ]</SPAN -> + <p> + We'll just show the interesting part here - the explicit matches. + It is matched three different times. Two <span class= + "QUOTE">"+block{}"</span> sections, and a <span class= + "QUOTE">"+block{} +handle-as-image"</span>, which is the expanded + form of one of our aliases that had been defined as: <span class= + "QUOTE">"+block-as-image"</span>. (<a href= + "actions-file.html#ALIASES"><span class= + "QUOTE">"Aliases"</span></a> are defined in the first section of + the actions file and typically used to combine more than one + action.) + </p> + <p> + 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 <span class= + "QUOTE">"ad.doubleclick.net"</span> is done here -- as both a <a + href="actions-file.html#BLOCK"><span class= + "QUOTE">"+block{}"</span></a> <span class="emphasis"><i class= + "EMPHASIS">and</i></span> an <a href= + "actions-file.html#HANDLE-AS-IMAGE"><span class= + "QUOTE">"+handle-as-image"</span></a>. The custom alias <span + class="QUOTE">"<tt class="LITERAL">+block-as-image</tt>"</span> + just simplifies the process and make it more readable. + </p> + <p> + One last example. Let's try <span class= + "QUOTE">"http://www.example.net/adsl/HOWTO/"</span>. This one is + giving us problems. We are getting a blank page. Hmmm ... + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + Matches for http://www.example.net/adsl/HOWTO/: - {-add-header + In file: default.action <span class="GUIBUTTON">[ View ]</span> <span class= +"GUIBUTTON">[ Edit ]</span> + + {-add-header -block - +change-x-forwarded-for{block} + +change-x-forwarded-for{block} -client-header-filter{hide-tor-exit-notation} -content-type-overwrite -crunch-client-header @@ -1831,8 +1011,8 @@ CLASS="GUIBUTTON" -crunch-incoming-cookies -crunch-outgoing-cookies -crunch-server-header - +deanimate-gifs - -downgrade-http-version + +deanimate-gifs + -downgrade-http-version +fast-redirects {check-decoded-url} -filter {js-events} -filter {content-cookies} @@ -1862,326 +1042,212 @@ CLASS="GUIBUTTON" -filter {no-ping} -force-text-mode -handle-as-empty-document - -handle-as-image + -handle-as-image -hide-accept-language - -hide-content-disposition - +hide-from-header{block} - +hide-referer{forge} - -hide-user-agent + -hide-content-disposition + +hide-from-header{block} + +hide-referer{forge} + -hide-user-agent -overwrite-last-modified - +prevent-compression + +prevent-compression -redirect -server-header-filter{xml-to-html} - -server-header-filter{html-to-xml} - +session-cookies-only + -server-header-filter{html-to-xml} + +session-cookies-only +set-image-blocker{blank} } / { +block{Path contains "ads".} +handle-as-image } - /ads</PRE -></TD -></TR -></TABLE -></P -><P -> Ooops, the <SPAN -CLASS="QUOTE" ->"/adsl/"</SPAN -> is matching <SPAN -CLASS="QUOTE" ->"/ads"</SPAN -> in our - configuration! But we did not want this at all! Now we see why we get the - blank page. It is actually triggering two different actions here, and - the effects are aggregated so that the URL is blocked, and <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is told - to treat the block as if it were an image. But this is, of course, all wrong. - We could now add a new action below this (or better in our own - <TT -CLASS="FILENAME" ->user.action</TT -> file) that explicitly - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->un</I -></SPAN -> blocks ( - <A -HREF="actions-file.html#BLOCK" -><SPAN -CLASS="QUOTE" ->"{-block}"</SPAN -></A ->) paths with - <SPAN -CLASS="QUOTE" ->"adsl"</SPAN -> in them (remember, last match in the configuration - wins). There are various ways to handle such exceptions. Example:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { -block } - /adsl</PRE -></TD -></TR -></TABLE -></P -><P -> Now the page displays ;-) - Remember to flush your browser's caches when making these kinds of changes to - your configuration to insure that you get a freshly delivered page! Or, try - using <TT -CLASS="LITERAL" ->Shift+Reload</TT ->.</P -><P -> But now what about a situation where we get no explicit matches like - we did with:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { +block{Path starts with "ads".} +handle-as-image } - /ads</PRE -></TD -></TR -></TABLE -></P -><P -> That actually was very helpful 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 of <TT -CLASS="FILENAME" ->default.action</TT -> 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 - <A -HREF="actions-file.html#FILTER" -><SPAN -CLASS="QUOTE" ->"+filter"</SPAN -></A -> actions. - These tend to be harder to troubleshoot. - Try adding the URL for the site to one of aliases that turn off - <A -HREF="actions-file.html#FILTER" -><SPAN -CLASS="QUOTE" ->"+filter"</SPAN -></A ->:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { shop } + /ads +</pre> + </td> + </tr> + </table> + + <p> + Ooops, the <span class="QUOTE">"/adsl/"</span> is matching <span + class="QUOTE">"/ads"</span> in our configuration! But we did not + want this at all! Now we see why we get the blank page. It is + actually triggering two different actions here, and the effects are + aggregated so that the URL is blocked, and <span class= + "APPLICATION">Privoxy</span> is told to treat the block as if it + were an image. But this is, of course, all wrong. We could now add + a new action below this (or better in our own <tt class= + "FILENAME">user.action</tt> file) that explicitly <span class= + "emphasis"><i class="EMPHASIS">un</i></span> blocks ( <a href= + "actions-file.html#BLOCK"><span class= + "QUOTE">"{-block}"</span></a>) paths with <span class= + "QUOTE">"adsl"</span> in them (remember, last match in the + configuration wins). There are various ways to handle such + exceptions. Example: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { -block } + /adsl +</pre> + </td> + </tr> + </table> + + <p> + Now the page displays ;-) Remember to flush your browser's caches + when making these kinds of changes to your configuration to insure + that you get a freshly delivered page! Or, try using <tt class= + "LITERAL">Shift+Reload</tt>. + </p> + <p> + But now what about a situation where we get no explicit matches + like we did with: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { +block{Path starts with "ads".} +handle-as-image } + /ads +</pre> + </td> + </tr> + </table> + + <p> + That actually was very helpful 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 of <tt class= + "FILENAME">default.action</tt> 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 <a + href="actions-file.html#FILTER"><span class= + "QUOTE">"+filter"</span></a> actions. These tend to be harder to + troubleshoot. Try adding the URL for the site to one of aliases + that turn off <a href="actions-file.html#FILTER"><span class= + "QUOTE">"+filter"</span></a>: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { shop } .quietpc.com .worldpay.com # for quietpc.com .jungle.com .scan.co.uk - .forbes.com</PRE -></TD -></TR -></TABLE -></P -><P -> <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->{ shop }</TT ->"</SPAN -> is an <SPAN -CLASS="QUOTE" ->"alias"</SPAN -> that expands to - <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->{ -filter -session-cookies-only }</TT ->"</SPAN ->. - Or you could do your own exception to negate filtering: </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { -filter } + .forbes.com +</pre> + </td> + </tr> + </table> + + <p> + <span class="QUOTE">"<tt class="LITERAL">{ shop }</tt>"</span> is + an <span class="QUOTE">"alias"</span> that expands to <span class= + "QUOTE">"<tt class="LITERAL">{ -filter -session-cookies-only + }</tt>"</span>. Or you could do your own exception to negate + filtering: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { -filter } # Disable ALL filter actions for sites in this section .forbes.com developer.ibm.com - localhost</PRE -></TD -></TR -></TABLE -></P -><P -> This would turn off all filtering for these sites. This is best - put in <TT -CLASS="FILENAME" ->user.action</TT ->, for local site - exceptions. Note that when a simple domain pattern is used by itself (without - the subsequent path portion), all sub-pages within that domain are included - automatically in the scope of the action.</P -><P -> Images that are inexplicably being blocked, may well be hitting the -<A -HREF="actions-file.html#FILTER-BANNERS-BY-SIZE" -><SPAN -CLASS="QUOTE" ->"+filter{banners-by-size}"</SPAN -></A -> - rule, which assumes - that images of certain sizes are ad banners (works well - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->most of the time</I -></SPAN -> since these tend to be standardized).</P -><P -> <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->{ fragile }</TT ->"</SPAN -> is an alias that disables most - actions that are the most likely to cause trouble. This can be used as a - last resort for problem sites. </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> { fragile } + localhost +</pre> + </td> + </tr> + </table> + + <p> + This would turn off all filtering for these sites. This is best put + in <tt class="FILENAME">user.action</tt>, for local site + exceptions. Note that when a simple domain pattern is used by + itself (without the subsequent path portion), all sub-pages within + that domain are included automatically in the scope of the action. + </p> + <p> + Images that are inexplicably being blocked, may well be hitting the + <a href="actions-file.html#FILTER-BANNERS-BY-SIZE"><span class= + "QUOTE">"+filter{banners-by-size}"</span></a> rule, which assumes + that images of certain sizes are ad banners (works well <span + class="emphasis"><i class="EMPHASIS">most of the time</i></span> + since these tend to be standardized). + </p> + <p> + <span class="QUOTE">"<tt class="LITERAL">{ fragile }</tt>"</span> + is an alias that disables most actions that are the most likely to + cause trouble. This can be used as a last resort for problem sites. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + { fragile } # Handle with care: easy to break mail.google. - mybank.example.com</PRE -></TD -></TR -></TABLE -></P -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Remember to flush caches!</I -></SPAN -> Note that the - <TT -CLASS="LITERAL" ->mail.google</TT -> reference lacks the TLD portion (e.g. - <SPAN -CLASS="QUOTE" ->".com"</SPAN ->). This will effectively match any TLD with - <TT -CLASS="LITERAL" ->google</TT -> in it, such as <TT -CLASS="LITERAL" ->mail.google.de.</TT ->, - just as an example.</P -><P -> - 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.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="seealso.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -> </TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->See Also</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -> </TD -></TR -></TABLE -></DIV -></BODY -></HTML -> + mybank.example.com +</pre> + </td> + </tr> + </table> + + <p> + <span class="emphasis"><i class="EMPHASIS">Remember to flush + caches!</i></span> Note that the <tt class= + "LITERAL">mail.google</tt> reference lacks the TLD portion (e.g. + <span class="QUOTE">".com"</span>). This will effectively match any + TLD with <tt class="LITERAL">google</tt> in it, such as <tt class= + "LITERAL">mail.google.de.</tt>, just as an example. + </p> + <p> + 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. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="seealso.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + See Also + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/config.html b/doc/webserver/user-manual/config.html index d41f0699..9c4ba598 100644 --- a/doc/webserver/user-manual/config.html +++ b/doc/webserver/user-manual/config.html @@ -1,1382 +1,1009 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->The Main Configuration File</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Privoxy Configuration" -HREF="configuration.html"><LINK -REL="NEXT" -TITLE="Actions Files" -HREF="actions-file.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="configuration.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="actions-file.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="CONFIG" ->7. The Main Configuration File</A -></H1 -><P -> By default, the main configuration file is named <TT -CLASS="FILENAME" ->config</TT ->, - with the exception of Windows, where it is named <TT -CLASS="FILENAME" ->config.txt</TT ->. - 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:</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->confdir /etc/privoxy</I -></SPAN -></P -> - </TT -> </P -><P -> Assigns the value <TT -CLASS="LITERAL" ->/etc/privoxy</TT -> to the option - <TT -CLASS="LITERAL" ->confdir</TT -> and thus indicates that the configuration - directory is named <SPAN -CLASS="QUOTE" ->"/etc/privoxy/"</SPAN ->.</P -><P -> All options in the config file except for <TT -CLASS="LITERAL" ->confdir</TT -> and - <TT -CLASS="LITERAL" ->logdir</TT -> are optional. Watch out in the below description - for what happens if you leave them unset.</P -><P -> The main config file controls all aspects of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s - operation that are not location dependent (i.e. they apply universally, no matter - where you may be surfing). Like the filter and action files, the config file is - a plain text file and can be modified with a text editor like emacs, vim or - notepad.exe.</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="LOCAL-SET-UP" ->7.1. Local Set-up Documentation</A -></H2 -><P -> If you intend to operate <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> for more users - than 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. - </P -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="USER-MANUAL" ->7.1.1. user-manual</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Location of the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> User Manual. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->A fully qualified URI</P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> <A -HREF="http://www.privoxy.org/user-manual/" -TARGET="_top" ->http://www.privoxy.org/<TT -CLASS="REPLACEABLE" -><I ->version</I -></TT ->/user-manual/</A -> - will be used, where <TT -CLASS="REPLACEABLE" -><I ->version</I -></TT -> is the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> The User Manual URI is the single best source of information on - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, and is used for help links from some - of the internal CGI pages. The manual itself is normally packaged with the - binary distributions, so you probably want to set this to a locally - installed copy. - </P -><P -> Examples: - </P -><P -> The best all purpose solution is simply to put the full local - <TT -CLASS="LITERAL" ->PATH</TT -> to where the <I -CLASS="CITETITLE" ->User Manual</I -> is - located: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> user-manual /usr/share/doc/privoxy/user-manual</PRE -></TD -></TR -></TABLE -> - </P -><P -> The User Manual is then available to anyone with access to - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, by following the built-in URL: - <TT -CLASS="LITERAL" ->http://config.privoxy.org/user-manual/</TT -> - (or the shortcut: <TT -CLASS="LITERAL" ->http://p.p/user-manual/</TT ->). - </P -><P -> If the documentation is not on the local system, it can be accessed - from a remote server, as: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> user-manual http://example.com/privoxy/user-manual/</PRE -></TD -></TR -></TABLE -> - </P -><DIV -CLASS="WARNING" -><P -></P -><TABLE -CLASS="WARNING" -BORDER="1" -WIDTH="90%" -><TR -><TD -ALIGN="CENTER" -><B ->Warning</B -></TD -></TR -><TR -><TD -ALIGN="LEFT" -><P -> If set, this option should be <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->the first option in the config - file</I -></SPAN ->, because it is used while the config file is being read - on start-up. - </P -></TD -></TR -></TABLE -></DIV -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="TRUST-INFO-URL" ->7.1.2. trust-info-url</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> A URL to be displayed in the error page that users will see if access to an untrusted page is denied. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->URL</P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> No links are displayed on the "untrusted" error page. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> The value of this option only matters if the experimental trust mechanism has been - activated. (See <A -HREF="config.html#TRUSTFILE" -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->trustfile</I -></SPAN -></A -> below.) - </P -><P -> 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. - </P -><P -> 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! - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ADMIN-ADDRESS" ->7.1.3. admin-address</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> An email address to reach the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> administrator. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->Email address</P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> No email address is displayed on error pages and the CGI user interface. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> If both <TT -CLASS="LITERAL" ->admin-address</TT -> and <TT -CLASS="LITERAL" ->proxy-info-url</TT -> - are unset, the whole "Local Privoxy Support" box on all generated pages will - not be shown. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="PROXY-INFO-URL" ->7.1.4. proxy-info-url</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> A URL to documentation about the local <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> setup, - configuration or policies. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->URL</P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> No link to local documentation is displayed on error pages and the CGI user interface. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> If both <TT -CLASS="LITERAL" ->admin-address</TT -> and <TT -CLASS="LITERAL" ->proxy-info-url</TT -> - are unset, the whole "Local Privoxy Support" box on all generated pages will - not be shown. - </P -><P -> This URL shouldn't be blocked ;-) - </P -></DD -></DL -></DIV -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CONF-LOG-LOC" ->7.2. Configuration and Log File Locations</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can (and normally does) use a number of - other files for additional configuration, help and logging. - This section of the configuration file tells <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - where to find those other files. </P -><P -> The user running <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, must have read - permission for all configuration files, and write permission to any files - that would be modified, such as log files and actions files.</P -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CONFDIR" ->7.2.1. confdir</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P ->The directory where the other configuration files are located.</P -></DD -><DT ->Type of value:</DT -><DD -><P ->Path name</P -></DD -><DT ->Default value:</DT -><DD -><P ->/etc/privoxy (Unix) <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->or</I -></SPAN -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> installation dir (Windows) </P -></DD -><DT ->Effect if unset:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Mandatory</I -></SPAN -></P -></DD -><DT ->Notes:</DT -><DD -><P -> No trailing <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->/</TT ->"</SPAN ->, please. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="TEMPLDIR" ->7.2.2. templdir</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P ->An alternative directory where the templates are loaded from.</P -></DD -><DT ->Type of value:</DT -><DD -><P ->Path name</P -></DD -><DT ->Default value:</DT -><DD -><P ->unset</P -></DD -><DT ->Effect if unset:</DT -><DD -><P ->The templates are assumed to be located in confdir/template.</P -></DD -><DT ->Notes:</DT -><DD -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> original templates are usually - overwritten with each update. Use this option to relocate customized - templates that should be kept. As template variables might change - between updates, you shouldn't expect templates to work with - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> releases other than the one - they were part of, though. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="LOGDIR" ->7.2.3. logdir</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The directory where all logging takes place - (i.e. where the <TT -CLASS="FILENAME" ->logfile</TT -> is located). - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->Path name</P -></DD -><DT ->Default value:</DT -><DD -><P ->/var/log/privoxy (Unix) <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->or</I -></SPAN -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> installation dir (Windows) </P -></DD -><DT ->Effect if unset:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Mandatory</I -></SPAN -></P -></DD -><DT ->Notes:</DT -><DD -><P -> No trailing <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->/</TT ->"</SPAN ->, please. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ACTIONSFILE" ->7.2.4. actionsfile</A -></H4 -><A -NAME="DEFAULT.ACTION" -></A -><A -NAME="STANDARD.ACTION" -></A -><A -NAME="USER.ACTION" -></A -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The <A -HREF="actions-file.html" ->actions file(s)</A -> to use - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->Complete file name, relative to <TT -CLASS="LITERAL" ->confdir</TT -></P -></DD -><DT ->Default values:</DT -><DD -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <P -CLASS="LITERALLAYOUT" -> match-all.action # Actions that are applied to all sites and maybe overruled later on.</P -> - </TD -></TR -><TR -><TD -> <P -CLASS="LITERALLAYOUT" -> default.action # Main actions file</P -> - </TD -></TR -><TR -><TD -> <P -CLASS="LITERALLAYOUT" -> user.action # User customizations</P -> - </TD -></TR -></TBODY -></TABLE -><P -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> No actions are taken at all. More or less neutral proxying. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Multiple <TT -CLASS="LITERAL" ->actionsfile</TT -> lines are permitted, and are in fact recommended! - </P -><P -> - The default values are <TT -CLASS="FILENAME" ->default.action</TT ->, which is the - <SPAN -CLASS="QUOTE" ->"main"</SPAN -> actions file maintained by the developers, and - <TT -CLASS="FILENAME" ->user.action</TT ->, where you can make your personal additions. - </P -><P -> - Actions files contain all the per site and per URL configuration for - ad blocking, cookie management, privacy considerations, etc. - There is no point in using <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> without at - least one actions file. - </P -><P -> Note that since Privoxy 3.0.7, the complete filename, including the <SPAN -CLASS="QUOTE" ->".action"</SPAN -> - extension has to be specified. The syntax change was necessary to be consistent - with the other file options and to allow previously forbidden characters. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="FILTERFILE" ->7.2.5. filterfile</A -></H4 -><A -NAME="DEFAULT.FILTER" -></A -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The <A -HREF="filter-file.html" ->filter file(s)</A -> to use - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->File name, relative to <TT -CLASS="LITERAL" ->confdir</TT -></P -></DD -><DT ->Default value:</DT -><DD -><P ->default.filter (Unix) <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->or</I -></SPAN -> default.filter.txt (Windows)</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> No textual content filtering takes place, i.e. all - <TT -CLASS="LITERAL" ->+<A -HREF="actions-file.html#FILTER" ->filter</A ->{<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT ->}</TT -> - actions in the actions files are turned neutral. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Multiple <TT -CLASS="LITERAL" ->filterfile</TT -> lines are permitted. - </P -><P -> The <A -HREF="filter-file.html" ->filter files</A -> contain content modification - rules that use <A -HREF="appendix.html#REGEX" ->regular expressions</A ->. These rules permit - powerful changes on the content of Web pages, and optionally the headers - as well, e.g., you could try to disable your favorite JavaScript annoyances, - re-write the actual displayed text, or just have some fun - playing buzzword bingo with web pages. - </P -><P -> The - <TT -CLASS="LITERAL" ->+<A -HREF="actions-file.html#FILTER" ->filter</A ->{<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT ->}</TT -> - actions rely on the relevant filter (<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT ->) - to be defined in a filter file! - </P -><P -> A pre-defined filter file called <TT -CLASS="FILENAME" ->default.filter</TT -> that contains - a number of useful filters for common problems is included in the distribution. - See the section on the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->filter</A -></TT -> - action for a list. - </P -><P -> It is recommended to place any locally adapted filters into a separate - file, such as <TT -CLASS="FILENAME" ->user.filter</TT ->. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="LOGFILE" ->7.2.6. logfile</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The log file to use - </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: logfile (Unix) <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->or</I -></SPAN -> privoxy.log (Windows).</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> No logfile is written. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> The logfile is where all logging and error messages are written. The level - of detail and number of messages are set with the <TT -CLASS="LITERAL" ->debug</TT -> - option (see below). The logfile can be useful for tracking down a problem with - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> (e.g., it's not blocking an ad you - think it should block) and it can help you to monitor what your browser - is doing. - </P -><P -> Depending on the debug options below, the logfile may be a privacy risk - if third parties can get access to it. As most users will never look - at it, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.7 and later only log fatal - errors by default. - </P -><P -> For most troubleshooting purposes, you will have to change that, - please refer to the debugging section for details. - </P -><P -> 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 <SPAN -CLASS="QUOTE" ->"man cron"</SPAN ->). For Red Hat based Linux distributions, a - <B -CLASS="COMMAND" ->logrotate</B -> script has been included. - </P -><P -> Any log files must be writable by whatever user <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is being run as (on Unix, default user id is <SPAN -CLASS="QUOTE" ->"privoxy"</SPAN ->). - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="TRUSTFILE" ->7.2.7. trustfile</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The name of the trust file to use - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->File name, relative to <TT -CLASS="LITERAL" ->confdir</TT -></P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset (commented out)</I -></SPAN ->. When activated: trust (Unix) <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->or</I -></SPAN -> trust.txt (Windows)</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> The entire trust mechanism is disabled. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> The trust mechanism is an experimental feature for building white-lists and should - be used with care. It is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->NOT</I -></SPAN -> recommended for the casual user. - </P -><P -> If you specify a trust file, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will only allow - access to sites that are specified in the trustfile. Sites can be listed - in one of two ways: - </P -><P -> Prepending a <TT -CLASS="LITERAL" ->~</TT -> character limits access to this site - only (and any sub-paths within this site), e.g. - <TT -CLASS="LITERAL" ->~www.example.com</TT -> allows access to - <TT -CLASS="LITERAL" ->~www.example.com/features/news.html</TT ->, etc. - </P -><P -> Or, you can designate sites as <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->trusted referrers</I -></SPAN ->, by - prepending the name with a <TT -CLASS="LITERAL" ->+</TT -> character. The effect is that - access to untrusted sites will be granted -- but only if a link from this - trusted referrer was used to get there. The link target will then be added - to the <SPAN -CLASS="QUOTE" ->"trustfile"</SPAN -> so that future, direct accesses will be - granted. Sites added via this mechanism do not become trusted referrers - themselves (i.e. they are added with a <TT -CLASS="LITERAL" ->~</TT -> designation). - There is a limit of 512 such entries, after which new entries will not be - made. - </P -><P -> If you use the <TT -CLASS="LITERAL" ->+</TT -> operator in the trust file, it may grow - considerably over time. - </P -><P -> It is recommended that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> be compiled with - the <TT -CLASS="LITERAL" ->--disable-force</TT ->, <TT -CLASS="LITERAL" ->--disable-toggle</TT -> and - <TT -CLASS="LITERAL" -> --disable-editor</TT -> options, if this feature is to be - used. - </P -><P -> Possible applications include limiting Internet access for children. - </P -></DD -></DL -></DIV -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="DEBUGGING" ->7.3. Debugging</A -></H2 -><P -> These options are mainly useful when tracing a problem. - Note that you might also want to invoke - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with the <TT -CLASS="LITERAL" ->--no-daemon</TT -> - command line option when debugging. - </P -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="DEBUG" ->7.3.1. debug</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Key values that determine what information gets logged. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->Integer values</P -></DD -><DT ->Default value:</DT -><DD -><P ->0 (i.e.: only fatal errors (that cause Privoxy to exit) are logged)</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Default value is used (see above). - </P -></DD -><DT ->Notes:</DT -><DD -><P -> The available debug levels are: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> debug 1 # Log the destination for each request <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> let through. See also debug 1024. +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + The Main Configuration File + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Privoxy Configuration" href= + "configuration.html"> + <link rel="NEXT" title="Actions Files" href="actions-file.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="configuration.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="actions-file.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="CONFIG">7. The Main Configuration File</a> + </h1> + <p> + By default, the main configuration file is named <tt class= + "FILENAME">config</tt>, with the exception of Windows, where it is + named <tt class="FILENAME">config.txt</tt>. 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: + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">confdir /etc/privoxy</i></span></tt> + </p> + + <p> + Assigns the value <tt class="LITERAL">/etc/privoxy</tt> to the option + <tt class="LITERAL">confdir</tt> and thus indicates that the + configuration directory is named <span class= + "QUOTE">"/etc/privoxy/"</span>. + </p> + <p> + All options in the config file except for <tt class= + "LITERAL">confdir</tt> and <tt class="LITERAL">logdir</tt> are + optional. Watch out in the below description for what happens if you + leave them unset. + </p> + <p> + The main config file controls all aspects of <span class= + "APPLICATION">Privoxy</span>'s operation that are not location + dependent (i.e. they apply universally, no matter where you may be + surfing). Like the filter and action files, the config file is a + plain text file and can be modified with a text editor like emacs, + vim or notepad.exe. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="LOCAL-SET-UP">7.1. Local Set-up Documentation</a> + </h2> + <p> + If you intend to operate <span class="APPLICATION">Privoxy</span> + for more users than 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. + </p> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="USER-MANUAL">7.1.1. user-manual</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Location of the <span class="APPLICATION">Privoxy</span> + User Manual. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + A fully qualified URI + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + <a href="http://www.privoxy.org/user-manual/" target= + "_top">http://www.privoxy.org/<tt class= + "REPLACEABLE"><i>version</i></tt>/user-manual/</a> will be + used, where <tt class="REPLACEABLE"><i>version</i></tt> is + the <span class="APPLICATION">Privoxy</span> version. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The User Manual URI is the single best source of + information on <span class="APPLICATION">Privoxy</span>, + and is used for help links from some of the internal CGI + pages. The manual itself is normally packaged with the + binary distributions, so you probably want to set this to a + locally installed copy. + </p> + <p> + Examples: + </p> + <p> + The best all purpose solution is simply to put the full + local <tt class="LITERAL">PATH</tt> to where the <i class= + "CITETITLE">User Manual</i> is located: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + user-manual /usr/share/doc/privoxy/user-manual +</pre> + </td> + </tr> + </table> + + <p> + The User Manual is then available to anyone with access to + <span class="APPLICATION">Privoxy</span>, by following the + built-in URL: <tt class= + "LITERAL">http://config.privoxy.org/user-manual/</tt> (or + the shortcut: <tt class= + "LITERAL">http://p.p/user-manual/</tt>). + </p> + <p> + If the documentation is not on the local system, it can be + accessed from a remote server, as: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + user-manual http://example.com/privoxy/user-manual/ +</pre> + </td> + </tr> + </table> + + <div class="WARNING"> + <table class="WARNING" border="1" width="90%"> + <tr> + <td align="CENTER"> + <b>Warning</b> + </td> + </tr> + <tr> + <td align="LEFT"> + <p> + If set, this option should be <span class= + "emphasis"><i class="EMPHASIS">the first option in + the config file</i></span>, because it is used + while the config file is being read on start-up. + </p> + </td> + </tr> + </table> + </div> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="TRUST-INFO-URL">7.1.2. trust-info-url</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + A URL to be displayed in the error page that users will see + if access to an untrusted page is denied. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + URL + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + No links are displayed on the "untrusted" error page. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The value of this option only matters if the experimental + trust mechanism has been activated. (See <a href= + "config.html#TRUSTFILE"><span class="emphasis"><i class= + "EMPHASIS">trustfile</i></span></a> below.) + </p> + <p> + 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. + </p> + <p> + 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! + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ADMIN-ADDRESS">7.1.3. admin-address</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + An email address to reach the <span class= + "APPLICATION">Privoxy</span> administrator. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + Email address + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + No email address is displayed on error pages and the CGI + user interface. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + If both <tt class="LITERAL">admin-address</tt> and <tt + class="LITERAL">proxy-info-url</tt> are unset, the whole + "Local Privoxy Support" box on all generated pages will not + be shown. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="PROXY-INFO-URL">7.1.4. proxy-info-url</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + A URL to documentation about the local <span class= + "APPLICATION">Privoxy</span> setup, configuration or + policies. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + URL + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + No link to local documentation is displayed on error pages + and the CGI user interface. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + If both <tt class="LITERAL">admin-address</tt> and <tt + class="LITERAL">proxy-info-url</tt> are unset, the whole + "Local Privoxy Support" box on all generated pages will not + be shown. + </p> + <p> + This URL shouldn't be blocked ;-) + </p> + </dd> + </dl> + </div> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CONF-LOG-LOC">7.2. Configuration and Log File + Locations</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span> can (and normally does) + use a number of other files for additional configuration, help and + logging. This section of the configuration file tells <span class= + "APPLICATION">Privoxy</span> where to find those other files. + </p> + <p> + The user running <span class="APPLICATION">Privoxy</span>, must + have read permission for all configuration files, and write + permission to any files that would be modified, such as log files + and actions files. + </p> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CONFDIR">7.2.1. confdir</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The directory where the other configuration files are + located. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + Path name + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + /etc/privoxy (Unix) <span class="emphasis"><i class= + "EMPHASIS">or</i></span> <span class= + "APPLICATION">Privoxy</span> installation dir (Windows) + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Mandatory</i></span> + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + No trailing <span class="QUOTE">"<tt class= + "LITERAL">/</tt>"</span>, please. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="TEMPLDIR">7.2.2. templdir</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + An alternative directory where the templates are loaded + from. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + Path name + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + unset + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + The templates are assumed to be located in + confdir/template. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + <span class="APPLICATION">Privoxy's</span> original + templates are usually overwritten with each update. Use + this option to relocate customized templates that should be + kept. As template variables might change between updates, + you shouldn't expect templates to work with <span class= + "APPLICATION">Privoxy</span> releases other than the one + they were part of, though. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="LOGDIR">7.2.3. logdir</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The directory where all logging takes place (i.e. where the + <tt class="FILENAME">logfile</tt> is located). + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + Path name + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + /var/log/privoxy (Unix) <span class="emphasis"><i class= + "EMPHASIS">or</i></span> <span class= + "APPLICATION">Privoxy</span> installation dir (Windows) + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + <span class="emphasis"><i class= + "EMPHASIS">Mandatory</i></span> + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + No trailing <span class="QUOTE">"<tt class= + "LITERAL">/</tt>"</span>, please. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ACTIONSFILE">7.2.4. actionsfile</a> + </h4> + <a name="DEFAULT.ACTION"></a><a name="STANDARD.ACTION"></a><a name= + "USER.ACTION"></a> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The <a href="actions-file.html">actions file(s)</a> to use + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + Complete file name, relative to <tt class= + "LITERAL">confdir</tt> + </p> + </dd> + <dt> + Default values: + </dt> + <dd> + <table border="0"> + <tbody> + <tr> + <td> + <p class="LITERALLAYOUT"> + match-all.action # Actions that are applied to all sites and maybe overruled later on. + </p> + </td> + </tr> + <tr> + <td> + <p class="LITERALLAYOUT"> + default.action # Main actions file + </p> + </td> + </tr> + <tr> + <td> + <p class="LITERALLAYOUT"> + user.action # User customizations + </p> + </td> + </tr> + </tbody> + </table> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + No actions are taken at all. More or less neutral proxying. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Multiple <tt class="LITERAL">actionsfile</tt> lines are + permitted, and are in fact recommended! + </p> + <p> + The default values are <tt class= + "FILENAME">default.action</tt>, which is the <span class= + "QUOTE">"main"</span> actions file maintained by the + developers, and <tt class="FILENAME">user.action</tt>, + where you can make your personal additions. + </p> + <p> + Actions files contain all the per site and per URL + configuration for ad blocking, cookie management, privacy + considerations, etc. There is no point in using <span + class="APPLICATION">Privoxy</span> without at least one + actions file. + </p> + <p> + Note that since Privoxy 3.0.7, the complete filename, + including the <span class="QUOTE">".action"</span> + extension has to be specified. The syntax change was + necessary to be consistent with the other file options and + to allow previously forbidden characters. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="FILTERFILE">7.2.5. filterfile</a> + </h4> + <a name="DEFAULT.FILTER"></a> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The <a href="filter-file.html">filter file(s)</a> to use + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + File name, relative to <tt class="LITERAL">confdir</tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + default.filter (Unix) <span class="emphasis"><i class= + "EMPHASIS">or</i></span> default.filter.txt (Windows) + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + No textual content filtering takes place, i.e. all <tt + class="LITERAL">+<a href= + "actions-file.html#FILTER">filter</a>{<tt class= + "REPLACEABLE"><i>name</i></tt>}</tt> actions in the actions + files are turned neutral. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Multiple <tt class="LITERAL">filterfile</tt> lines are + permitted. + </p> + <p> + The <a href="filter-file.html">filter files</a> contain + content modification rules that use <a href= + "appendix.html#REGEX">regular expressions</a>. These rules + permit powerful changes on the content of Web pages, and + optionally the headers as well, e.g., you could try to + disable your favorite JavaScript annoyances, re-write the + actual displayed text, or just have some fun playing + buzzword bingo with web pages. + </p> + <p> + The <tt class="LITERAL">+<a href= + "actions-file.html#FILTER">filter</a>{<tt class= + "REPLACEABLE"><i>name</i></tt>}</tt> actions rely on the + relevant filter (<tt class="REPLACEABLE"><i>name</i></tt>) + to be defined in a filter file! + </p> + <p> + A pre-defined filter file called <tt class= + "FILENAME">default.filter</tt> that contains a number of + useful filters for common problems is included in the + distribution. See the section on the <tt class="LITERAL"><a + href="actions-file.html#FILTER">filter</a></tt> action for + a list. + </p> + <p> + It is recommended to place any locally adapted filters into + a separate file, such as <tt class= + "FILENAME">user.filter</tt>. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="LOGFILE">7.2.6. logfile</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The log file to use + </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: logfile (Unix) <span + class="emphasis"><i class="EMPHASIS">or</i></span> + privoxy.log (Windows). + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + No logfile is written. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The logfile is where all logging and error messages are + written. The level of detail and number of messages are set + with the <tt class="LITERAL">debug</tt> option (see below). + The logfile can be useful for tracking down a problem with + <span class="APPLICATION">Privoxy</span> (e.g., it's not + blocking an ad you think it should block) and it can help + you to monitor what your browser is doing. + </p> + <p> + Depending on the debug options below, the logfile may be a + privacy risk if third parties can get access to it. As most + users will never look at it, <span class= + "APPLICATION">Privoxy</span> 3.0.7 and later only log fatal + errors by default. + </p> + <p> + For most troubleshooting purposes, you will have to change + that, please refer to the debugging section for details. + </p> + <p> + 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 <span class="QUOTE">"man + cron"</span>). For Red Hat based Linux distributions, a <b + class="COMMAND">logrotate</b> script has been included. + </p> + <p> + Any log files must be writable by whatever user <span + class="APPLICATION">Privoxy</span> is being run as (on + Unix, default user id is <span class= + "QUOTE">"privoxy"</span>). + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="TRUSTFILE">7.2.7. trustfile</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The name of the trust file to use + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + File name, relative to <tt class="LITERAL">confdir</tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset (commented + out)</i></span>. When activated: trust (Unix) <span class= + "emphasis"><i class="EMPHASIS">or</i></span> trust.txt + (Windows) + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + The entire trust mechanism is disabled. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The trust mechanism is an experimental feature for building + white-lists and should be used with care. It is <span + class="emphasis"><i class="EMPHASIS">NOT</i></span> + recommended for the casual user. + </p> + <p> + If you specify a trust file, <span class= + "APPLICATION">Privoxy</span> will only allow access to + sites that are specified in the trustfile. Sites can be + listed in one of two ways: + </p> + <p> + Prepending a <tt class="LITERAL">~</tt> character limits + access to this site only (and any sub-paths within this + site), e.g. <tt class="LITERAL">~www.example.com</tt> + allows access to <tt class= + "LITERAL">~www.example.com/features/news.html</tt>, etc. + </p> + <p> + Or, you can designate sites as <span class="emphasis"><i + class="EMPHASIS">trusted referrers</i></span>, by + prepending the name with a <tt class="LITERAL">+</tt> + character. The effect is that access to untrusted sites + will be granted -- but only if a link from this trusted + referrer was used to get there. The link target will then + be added to the <span class="QUOTE">"trustfile"</span> so + that future, direct accesses will be granted. Sites added + via this mechanism do not become trusted referrers + themselves (i.e. they are added with a <tt class= + "LITERAL">~</tt> designation). There is a limit of 512 such + entries, after which new entries will not be made. + </p> + <p> + If you use the <tt class="LITERAL">+</tt> operator in the + trust file, it may grow considerably over time. + </p> + <p> + It is recommended that <span class= + "APPLICATION">Privoxy</span> be compiled with the <tt + class="LITERAL">--disable-force</tt>, <tt class= + "LITERAL">--disable-toggle</tt> and <tt class= + "LITERAL">--disable-editor</tt> options, if this feature is + to be used. + </p> + <p> + Possible applications include limiting Internet access for + children. + </p> + </dd> + </dl> + </div> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="DEBUGGING">7.3. Debugging</a> + </h2> + <p> + These options are mainly useful when tracing a problem. Note that + you might also want to invoke <span class= + "APPLICATION">Privoxy</span> with the <tt class= + "LITERAL">--no-daemon</tt> command line option when debugging. + </p> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="DEBUG">7.3.1. debug</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Key values that determine what information gets logged. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + Integer values + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 0 (i.e.: only fatal errors (that cause Privoxy to exit) are + logged) + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Default value is used (see above). + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + The available debug levels are: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + debug 1 # Log the destination for each request <span class= +"APPLICATION">Privoxy</span> let through. See also debug 1024. debug 2 # show each connection status debug 4 # show I/O status debug 8 # show header parsing @@ -1386,3314 +1013,2500 @@ 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 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 - debug 32768 # log all data read from the network</PRE -></TD -></TR -></TABLE -> - </P -><P -> To select multiple debug levels, you can either add them or use - multiple <TT -CLASS="LITERAL" ->debug</TT -> lines. - </P -><P -> A debug level of 1 is informative because it will show you each request - as it happens. <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->1, 1024, 4096 and 8192 are recommended</I -></SPAN -> - 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). - - </P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> used to ship with the debug levels recommended above enabled by - default, but due to privacy concerns 3.0.7 and later are configured to - only log fatal errors. - </P -><P -> If you are used to the more verbose settings, simply enable the debug lines - below again. - </P -><P -> If you want to use pure CLF (Common Log Format), you should set <SPAN -CLASS="QUOTE" ->"debug - 512"</SPAN -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->ONLY</I -></SPAN -> and not enable anything else. - </P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has a hard-coded limit for the - length of log messages. If it's reached, messages are logged truncated - and marked with <SPAN -CLASS="QUOTE" ->"... [too long, truncated]"</SPAN ->. - </P -><P -> Please don't file any support requests without trying to reproduce - the problem with increased debug level first. Once you read the log - messages, you may even be able to solve the problem on your own. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="SINGLE-THREADED" ->7.3.2. single-threaded</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether to run only one server thread. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->None</I -></SPAN -></P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Multi-threaded (or, where unavailable: forked) operation, i.e. the ability to - serve multiple requests simultaneously. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This option is only there for debugging purposes. - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->It will drastically reduce performance.</I -></SPAN -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HOSTNAME" ->7.3.3. hostname</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The hostname shown on the CGI pages. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->Text</P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> The hostname provided by the operating system is used. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> On some misconfigured systems resolving the hostname fails or - takes too much time and slows Privoxy down. Setting a fixed hostname - works around the problem. - </P -><P -> In other circumstances it might be desirable to show a hostname - other than the one returned by the operating system. For example - if the system has several different hostnames and you don't want - to use the first one. - </P -><P -> Note that Privoxy does not validate the specified hostname value. - </P -></DD -></DL -></DIV -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="ACCESS-CONTROL" ->7.4. Access Control and Security</A -></H2 -><P -> This section of the config file controls the security-relevant aspects - of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s configuration. - </P -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="LISTEN-ADDRESS" ->7.4.1. listen-address</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The address and TCP port on which <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will - listen for client requests. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->[<TT -CLASS="REPLACEABLE" -><I ->IP-Address</I -></TT ->]:<TT -CLASS="REPLACEABLE" -><I ->Port</I -></TT -></P -><P ->[<TT -CLASS="REPLACEABLE" -><I ->Hostname</I -></TT ->]:<TT -CLASS="REPLACEABLE" -><I ->Port</I -></TT -></P -></DD -><DT ->Default value:</DT -><DD -><P ->127.0.0.1:8118</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> 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. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> You will need to configure your browser(s) to this proxy address and port. - </P -><P -> 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. - </P -><P -> You can use this statement multiple times to make - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> listen on more ports or more - <ABBR -CLASS="ABBREV" ->IP</ABBR -> addresses. Suitable if your operating system does not - support sharing <ABBR -CLASS="ABBREV" ->IPv6</ABBR -> and <ABBR -CLASS="ABBREV" ->IPv4</ABBR -> protocols - on the same socket. - </P -><P -> If a hostname is used instead of an IP address, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - will try to resolve it to an IP address and if there are multiple, use the first - one returned. - </P -><P -> If the address for the hostname isn't already known on the system - (for example because it's in /etc/hostname), this may result in DNS - traffic. - </P -><P -> If the specified address isn't available on the system, or if the - hostname can't be resolved, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - will fail to start. - </P -><P -> IPv6 addresses containing colons have to be quoted by brackets. - They can only be used if <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has - been compiled with IPv6 support. If you aren't sure if your version - supports it, have a look at - <TT -CLASS="LITERAL" ->http://config.privoxy.org/show-status</TT ->. - </P -><P -> Some operating systems will prefer IPv6 to IPv4 addresses even if the - system has no IPv6 connectivity which is usually not expected by the user. - Some even rely on DNS to resolve localhost which mean the "localhost" address - used may not actually be local. - </P -><P -> It is therefore recommended to explicitly configure the intended IP address - instead of relying on the operating system, unless there's a strong reason not to. - </P -><P -> If you leave out the address, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will bind to all - IPv4 interfaces (addresses) on your machine and may become reachable from the - Internet and/or the local network. Be aware that some GNU/Linux distributions - modify that behaviour without updating the documentation. Check for non-standard - patches if your <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->version behaves differently. - </P -><P -> If you configure <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->to be reachable from the - network, consider using <A -HREF="config.html#ACLS" ->access control lists</A -> - (ACL's, see below), and/or a firewall. - </P -><P -> If you open <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to untrusted users, you will - also want to make sure that the following actions are disabled: <TT -CLASS="LITERAL" -><A -HREF="config.html#ENABLE-EDIT-ACTIONS" ->enable-edit-actions</A -></TT -> and - <TT -CLASS="LITERAL" -><A -HREF="config.html#ENABLE-REMOTE-TOGGLE" ->enable-remote-toggle</A -></TT -> - </P -><P -> With the exception noted above, listening on multiple addresses is currently - not supported by <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> directly. - It can be done on most operating systems by letting a packet filter - redirect request for certain addresses to Privoxy, though. - </P -></DD -><DT ->Example:</DT -><DD -><P -> Suppose you are running <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 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: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="PROGRAMLISTING" -> listen-address 192.168.0.1:8118</PRE -></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 -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="TOGGLE" ->7.4.2. toggle</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Initial state of "toggle" status - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->1 or 0</P -></DD -><DT ->Default value:</DT -><DD -><P ->1</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Act as if toggled on - </P -></DD -><DT ->Notes:</DT -><DD -><P -> If set to 0, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will start in - <SPAN -CLASS="QUOTE" ->"toggled off"</SPAN -> mode, i.e. mostly behave like a normal, - content-neutral proxy with both ad blocking and content filtering - disabled. See <TT -CLASS="LITERAL" ->enable-remote-toggle</TT -> below. - </P -><P -> The windows version will only display the toggle icon in the system tray - if this option is present. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ENABLE-REMOTE-TOGGLE" ->7.4.3. enable-remote-toggle</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether or not the <A -HREF="http://config.privoxy.org/toggle" -TARGET="_top" ->web-based toggle - feature</A -> may be used - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->0 or 1</P -></DD -><DT ->Default value:</DT -><DD -><P ->0</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> The web-based toggle feature is disabled. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> When toggled off, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> mostly acts like a normal, - content-neutral proxy, i.e. doesn't block ads or filter content. - </P -><P -> Access to the toggle feature can <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not</I -></SPAN -> be - controlled separately by <SPAN -CLASS="QUOTE" ->"ACLs"</SPAN -> or HTTP authentication, - so that everybody who can access <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> (see - <SPAN -CLASS="QUOTE" ->"ACLs"</SPAN -> and <TT -CLASS="LITERAL" ->listen-address</TT -> above) can - toggle it for all users. So this option is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not recommended</I -></SPAN -> - for multi-user environments with untrusted users. - </P -><P -> Note that malicious client side code (e.g Java) is also - capable of using this option. - </P -><P -> As a lot of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> users don't read - documentation, this feature is disabled by default. - </P -><P -> Note that you must have compiled <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with - support for this feature, otherwise this option has no effect. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ENABLE-REMOTE-HTTP-TOGGLE" ->7.4.4. enable-remote-http-toggle</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether or not Privoxy recognizes special HTTP headers to change its behaviour. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->0 or 1</P -></DD -><DT ->Default value:</DT -><DD -><P ->0</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Privoxy ignores special HTTP headers. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> When toggled on, the client can change <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - behaviour by setting special HTTP headers. Currently the only supported - special header is <SPAN -CLASS="QUOTE" ->"X-Filter: No"</SPAN ->, to disable filtering for - the ongoing request, even if it is enabled in one of the action files. - </P -><P -> This feature is disabled by default. If you are using - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in a environment with trusted clients, - you may enable this feature at your discretion. Note that malicious client - side code (e.g Java) is also capable of using this feature. - </P -><P -> This option will be removed in future releases as it has been obsoleted - by the more general header taggers. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ENABLE-EDIT-ACTIONS" ->7.4.5. enable-edit-actions</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether or not the <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->web-based actions - file editor</A -> may be used - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->0 or 1</P -></DD -><DT ->Default value:</DT -><DD -><P ->0</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> The web-based actions file editor is disabled. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Access to the editor can <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not</I -></SPAN -> be - controlled separately by <SPAN -CLASS="QUOTE" ->"ACLs"</SPAN -> or HTTP authentication, - so that everybody who can access <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> (see - <SPAN -CLASS="QUOTE" ->"ACLs"</SPAN -> and <TT -CLASS="LITERAL" ->listen-address</TT -> above) can - modify its configuration for all users. - </P -><P -> This option is <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not recommended</I -></SPAN -> for environments - with untrusted users and as a lot of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - users don't read documentation, this feature is disabled by default. - </P -><P -> Note that malicious client side code (e.g Java) is also - capable of using the actions editor and you shouldn't enable - this options unless you understand the consequences and are - sure your browser is configured correctly. - </P -><P -> Note that you must have compiled <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with - support for this feature, otherwise this option has no effect. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ENFORCE-BLOCKS" ->7.4.6. enforce-blocks</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether the user is allowed to ignore blocks and can <SPAN -CLASS="QUOTE" ->"go there anyway"</SPAN ->. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->0 or 1</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->0</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Blocks are not enforced. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is mainly used to block and filter - requests as a service to the user, for example to block ads and other - junk that clogs the pipes. <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> configuration - isn't perfect and sometimes innocent pages are blocked. In this situation it - makes sense to allow the user to enforce the request and have - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> ignore the block. - </P -><P -> In the default configuration <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - <SPAN -CLASS="QUOTE" ->"Blocked"</SPAN -> page contains a <SPAN -CLASS="QUOTE" ->"go there anyway"</SPAN -> - link to adds a special string (the force prefix) to the request URL. - If that link is used, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will - detect the force prefix, remove it again and let the request pass. - </P -><P -> Of course <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can also be used to enforce - a network policy. In that case the user obviously should not be able to - bypass any blocks, and that's what the <SPAN -CLASS="QUOTE" ->"enforce-blocks"</SPAN -> - option is for. If it's enabled, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> hides - the <SPAN -CLASS="QUOTE" ->"go there anyway"</SPAN -> link. If the user adds the force - prefix by hand, it will not be accepted and the circumvention attempt - is logged. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> enforce-blocks 1 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ACLS" ->7.4.7. ACLs: permit-access and deny-access</A -></H4 -><A -NAME="PERMIT-ACCESS" -></A -><A -NAME="DENY-ACCESS" -></A -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Who can access what. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->src_addr</I -></TT ->[:<TT -CLASS="REPLACEABLE" -><I ->port</I -></TT ->][/<TT -CLASS="REPLACEABLE" -><I ->src_masklen</I -></TT ->] - [<TT -CLASS="REPLACEABLE" -><I ->dst_addr</I -></TT ->[:<TT -CLASS="REPLACEABLE" -><I ->port</I -></TT ->][/<TT -CLASS="REPLACEABLE" -><I ->dst_masklen</I -></TT ->]] - </P -><P -> Where <TT -CLASS="REPLACEABLE" -><I ->src_addr</I -></TT -> and - <TT -CLASS="REPLACEABLE" -><I ->dst_addr</I -></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 -></TT -> and - <TT -CLASS="REPLACEABLE" -><I ->dst_masklen</I -></TT -> 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. - </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 -><DD -><P -><SPAN -CLASS="emphasis" -><I -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 -><DD -><P -> Don't restrict access further than implied by <TT -CLASS="LITERAL" ->listen-address</TT -> - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Access controls are included at the request of ISPs and systems - administrators, and <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->are not usually needed by individual users</I -></SPAN ->. - For a typical home user, it will normally suffice to ensure that - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> only listens on the localhost - (127.0.0.1) or internal (home) network address by means of the - <A -HREF="config.html#LISTEN-ADDRESS" -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->listen-address</I -></SPAN -></A -> - option. - </P -><P -> Please see the warnings in the FAQ that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is not intended to be a substitute for a firewall or to encourage anyone - to defer addressing basic security weaknesses. - </P -><P -> Multiple ACL lines are OK. - If any ACLs are specified, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> only talks - to IP addresses that match at least one <TT -CLASS="LITERAL" ->permit-access</TT -> line - and don't match any subsequent <TT -CLASS="LITERAL" ->deny-access</TT -> line. In other words, the - last match wins, with the default being <TT -CLASS="LITERAL" ->deny-access</TT ->. - </P -><P -> If <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is using a forwarder (see <TT -CLASS="LITERAL" ->forward</TT -> below) - for a particular destination URL, the <TT -CLASS="REPLACEABLE" -><I ->dst_addr</I -></TT -> - that is examined is the address of the forwarder and <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->NOT</I -></SPAN -> the address - of the ultimate target. This is necessary because it may be impossible for the local - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to determine the IP address of the - ultimate target (that's often what gateways are used for). - </P -><P -> You should prefer using IP addresses over DNS names, because the address lookups take - time. All DNS names must resolve! You can <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not</I -></SPAN -> use domain patterns - like <SPAN -CLASS="QUOTE" ->"*.org"</SPAN -> or partial domain names. If a DNS name resolves to multiple - IP addresses, only the first one is used. - </P -><P -> Some systems allow IPv4 clients to connect to IPv6 server sockets. - Then the client's IPv4 address will be translated by the 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). - </P -></DD -><DT ->Examples:</DT -><DD -><P -> Explicitly define the default behavior if no ACL and - <TT -CLASS="LITERAL" ->listen-address</TT -> are set: <SPAN -CLASS="QUOTE" ->"localhost"</SPAN -> - is OK. The absence of a <TT -CLASS="REPLACEABLE" -><I ->dst_addr</I -></TT -> implies that - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> destination addresses are OK: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> permit-access localhost</PRE -></TD -></TR -></TABLE -> - </P -><P -> Allow any host on the same class C subnet as www.privoxy.org access to - nothing but www.example.com (or other domains hosted on the same system): - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> permit-access www.privoxy.org/24 www.example.com/32</PRE -></TD -></TR -></TABLE -> - </P -><P -> 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 the IP address behind - www.dirty-stuff.example.com: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> permit-access 192.168.45.64/26 - deny-access 192.168.45.73 www.dirty-stuff.example.com</PRE -></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 -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="BUFFER-LIMIT" ->7.4.8. buffer-limit</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Maximum size of the buffer for content filtering. - </P -></DD -><DT ->Type of value:</DT -><DD -><P ->Size in Kbytes</P -></DD -><DT ->Default value:</DT -><DD -><P ->4096</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Use a 4MB (4096 KB) limit. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> For content filtering, i.e. the <TT -CLASS="LITERAL" ->+filter</TT -> and - <TT -CLASS="LITERAL" ->+deanimate-gif</TT -> actions, it is necessary that - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 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. - </P -><P -> When a document buffer size reaches the <TT -CLASS="LITERAL" ->buffer-limit</TT ->, 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 <TT -CLASS="LITERAL" ->buffer-limit</TT -> Kbytes - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->each</I -></SPAN ->, unless you have enabled <SPAN -CLASS="QUOTE" ->"single-threaded"</SPAN -> - above. - </P -></DD -></DL -></DIV -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="FORWARDING" ->7.5. Forwarding</A -></H2 -><P -> This feature allows routing of HTTP requests through a chain of - multiple proxies.</P -><P -> Forwarding can be used to chain Privoxy with a caching proxy to speed - up browsing. Using a parent proxy may also be necessary if the machine - that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> runs on has no direct Internet access.</P -><P -> Note that parent proxies can severely decrease your privacy level. - For example a parent proxy could add your IP address to the request - headers and if it's a caching proxy it may add the <SPAN -CLASS="QUOTE" ->"Etag"</SPAN -> - header to revalidation requests again, even though you configured Privoxy - to remove it. It may also ignore Privoxy's header time randomization and use the - original values which could be used by the server as cookie replacement - to track your steps between visits.</P -><P -> Also specified here are SOCKS proxies. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - supports the SOCKS 4 and SOCKS 4A protocols.</P -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="FORWARD" ->7.5.1. forward</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> To which parent HTTP proxy specific requests should be routed. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->target_pattern</I -></TT -> - <TT -CLASS="REPLACEABLE" -><I ->http_parent</I -></TT ->[:<TT -CLASS="REPLACEABLE" -><I ->port</I -></TT ->] - </P -><P -> where <TT -CLASS="REPLACEABLE" -><I ->target_pattern</I -></TT -> is a <A -HREF="actions-file.html#AF-PATTERNS" ->URL pattern</A -> - that specifies to which requests (i.e. URLs) this forward rule shall apply. Use <TT -CLASS="LITERAL" ->/</TT -> to - denote <SPAN -CLASS="QUOTE" ->"all URLs"</SPAN ->. - <TT -CLASS="REPLACEABLE" -><I ->http_parent</I -></TT ->[:<TT -CLASS="REPLACEABLE" -><I ->port</I -></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: 8000). - Use a single dot (<TT -CLASS="LITERAL" ->.</TT ->) to denote <SPAN -CLASS="QUOTE" ->"no forwarding"</SPAN ->. - </P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Don't use parent HTTP proxies. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> If <TT -CLASS="REPLACEABLE" -><I ->http_parent</I -></TT -> is <SPAN -CLASS="QUOTE" ->"."</SPAN ->, then requests are not - 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 -><DT ->Examples:</DT -><DD -><P -> Everything goes to an example parent proxy, except SSL on port 443 (which it doesn't handle): - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward / parent-proxy.example.org:8080 - forward :443 .</PRE -></TD -></TR -></TABLE -> - </P -><P -> Everything goes to our example ISP's caching proxy, except for requests - to that ISP's sites: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward / caching-proxy.isp.example.net:8000 - forward .isp.example.net .</PRE -></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" -> forward / [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 + debug 32768 # log all data read from the network +</pre> + </td> + </tr> + </table> + + <p> + To select multiple debug levels, you can either add them or + use multiple <tt class="LITERAL">debug</tt> lines. + </p> + <p> + A debug level of 1 is informative because it will show you + each request as it happens. <span class="emphasis"><i + class="EMPHASIS">1, 1024, 4096 and 8192 are + recommended</i></span> 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). + </p> + <p> + <span class="APPLICATION">Privoxy</span> used to ship with + the debug levels recommended above enabled by default, but + due to privacy concerns 3.0.7 and later are configured to + only log fatal errors. + </p> + <p> + If you are used to the more verbose settings, simply enable + the debug lines below again. + </p> + <p> + If you want to use pure CLF (Common Log Format), you should + set <span class="QUOTE">"debug 512"</span> <span class= + "emphasis"><i class="EMPHASIS">ONLY</i></span> and not + enable anything else. + </p> + <p> + <span class="APPLICATION">Privoxy</span> has a hard-coded + limit for the length of log messages. If it's reached, + messages are logged truncated and marked with <span class= + "QUOTE">"... [too long, truncated]"</span>. + </p> + <p> + Please don't file any support requests without trying to + reproduce the problem with increased debug level first. + Once you read the log messages, you may even be able to + solve the problem on your own. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="SINGLE-THREADED">7.3.2. single-threaded</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether to run only one server thread. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">None</i></span> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Multi-threaded (or, where unavailable: forked) operation, + i.e. the ability to serve multiple requests simultaneously. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This option is only there for debugging purposes. <span + class="emphasis"><i class="EMPHASIS">It will drastically + reduce performance.</i></span> + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HOSTNAME">7.3.3. hostname</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The hostname shown on the CGI pages. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + Text + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + The hostname provided by the operating system is used. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + On some misconfigured systems resolving the hostname fails + or takes too much time and slows Privoxy down. Setting a + fixed hostname works around the problem. + </p> + <p> + In other circumstances it might be desirable to show a + hostname other than the one returned by the operating + system. For example if the system has several different + hostnames and you don't want to use the first one. + </p> + <p> + Note that Privoxy does not validate the specified hostname + value. + </p> + </dd> + </dl> + </div> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="ACCESS-CONTROL">7.4. Access Control and Security</a> + </h2> + <p> + This section of the config file controls the security-relevant + aspects of <span class="APPLICATION">Privoxy</span>'s + configuration. + </p> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="LISTEN-ADDRESS">7.4.1. listen-address</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The address and TCP port on which <span class= + "APPLICATION">Privoxy</span> will listen for client + requests. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + [<tt class="REPLACEABLE"><i>IP-Address</i></tt>]:<tt class= + "REPLACEABLE"><i>Port</i></tt> + </p> + <p> + [<tt class="REPLACEABLE"><i>Hostname</i></tt>]:<tt class= + "REPLACEABLE"><i>Port</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 127.0.0.1:8118 + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + 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. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + You will need to configure your browser(s) to this proxy + address and port. + </p> + <p> + 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. + </p> + <p> + You can use this statement multiple times to make <span + class="APPLICATION">Privoxy</span> listen on more ports or + more <abbr class="ABBREV">IP</abbr> addresses. Suitable if + your operating system does not support sharing <abbr class= + "ABBREV">IPv6</abbr> and <abbr class="ABBREV">IPv4</abbr> + protocols on the same socket. + </p> + <p> + If a hostname is used instead of an IP address, <span + class="APPLICATION">Privoxy</span> will try to resolve it + to an IP address and if there are multiple, use the first + one returned. + </p> + <p> + If the address for the hostname isn't already known on the + system (for example because it's in /etc/hostname), this + may result in DNS traffic. + </p> + <p> + If the specified address isn't available on the system, or + if the hostname can't be resolved, <span class= + "APPLICATION">Privoxy</span> will fail to start. + </p> + <p> + IPv6 addresses containing colons have to be quoted by + brackets. They can only be used if <span class= + "APPLICATION">Privoxy</span> has been compiled with IPv6 + support. If you aren't sure if your version supports it, + have a look at <tt class= + "LITERAL">http://config.privoxy.org/show-status</tt>. + </p> + <p> + Some operating systems will prefer IPv6 to IPv4 addresses + even if the system has no IPv6 connectivity which is + usually not expected by the user. Some even rely on DNS to + resolve localhost which mean the "localhost" address used + may not actually be local. + </p> + <p> + It is therefore recommended to explicitly configure the + intended IP address instead of relying on the operating + system, unless there's a strong reason not to. + </p> + <p> + If you leave out the address, <span class= + "APPLICATION">Privoxy</span> will bind to all IPv4 + interfaces (addresses) on your machine and may become + reachable from the Internet and/or the local network. Be + aware that some GNU/Linux distributions modify that + behaviour without updating the documentation. Check for + non-standard patches if your <span class= + "APPLICATION">Privoxy</span>version behaves differently. + </p> + <p> + If you configure <span class="APPLICATION">Privoxy</span>to + be reachable from the network, consider using <a href= + "config.html#ACLS">access control lists</a> (ACL's, see + below), and/or a firewall. + </p> + <p> + If you open <span class="APPLICATION">Privoxy</span> to + untrusted users, you will also want to make sure that the + following actions are disabled: <tt class="LITERAL"><a + href= + "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a></tt> + and <tt class="LITERAL"><a href= + "config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a></tt> + </p> + <p> + With the exception noted above, listening on multiple + addresses is currently not supported by <span class= + "APPLICATION">Privoxy</span> directly. It can be done on + most operating systems by letting a packet filter redirect + request for certain addresses to Privoxy, though. + </p> + </dd> + <dt> + Example: + </dt> + <dd> + <p> + Suppose you are running <span class= + "APPLICATION">Privoxy</span> 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: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + listen-address 192.168.0.1:8118 +</pre> + </td> + </tr> + </table> + + <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> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + listen-address [::1]:8118 +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="TOGGLE">7.4.2. toggle</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Initial state of "toggle" status + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + 1 or 0 + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 1 + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Act as if toggled on + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + If set to 0, <span class="APPLICATION">Privoxy</span> will + start in <span class="QUOTE">"toggled off"</span> mode, + i.e. mostly behave like a normal, content-neutral proxy + with both ad blocking and content filtering disabled. See + <tt class="LITERAL">enable-remote-toggle</tt> below. + </p> + <p> + The windows version will only display the toggle icon in + the system tray if this option is present. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ENABLE-REMOTE-TOGGLE">7.4.3. enable-remote-toggle</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether or not the <a href= + "http://config.privoxy.org/toggle" target="_top">web-based + toggle feature</a> may be used + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + 0 or 1 + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 0 + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + The web-based toggle feature is disabled. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + When toggled off, <span class="APPLICATION">Privoxy</span> + mostly acts like a normal, content-neutral proxy, i.e. + doesn't block ads or filter content. + </p> + <p> + Access to the toggle feature can <span class="emphasis"><i + class="EMPHASIS">not</i></span> be controlled separately by + <span class="QUOTE">"ACLs"</span> or HTTP authentication, + so that everybody who can access <span class= + "APPLICATION">Privoxy</span> (see <span class= + "QUOTE">"ACLs"</span> and <tt class= + "LITERAL">listen-address</tt> above) can toggle it for all + users. So this option is <span class="emphasis"><i class= + "EMPHASIS">not recommended</i></span> for multi-user + environments with untrusted users. + </p> + <p> + Note that malicious client side code (e.g Java) is also + capable of using this option. + </p> + <p> + As a lot of <span class="APPLICATION">Privoxy</span> users + don't read documentation, this feature is disabled by + default. + </p> + <p> + Note that you must have compiled <span class= + "APPLICATION">Privoxy</span> with support for this feature, + otherwise this option has no effect. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ENABLE-REMOTE-HTTP-TOGGLE">7.4.4. + enable-remote-http-toggle</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether or not Privoxy recognizes special HTTP headers to + change its behaviour. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + 0 or 1 + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 0 + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Privoxy ignores special HTTP headers. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + When toggled on, the client can change <span class= + "APPLICATION">Privoxy's</span> behaviour by setting special + HTTP headers. Currently the only supported special header + is <span class="QUOTE">"X-Filter: No"</span>, to disable + filtering for the ongoing request, even if it is enabled in + one of the action files. + </p> + <p> + This feature is disabled by default. If you are using <span + class="APPLICATION">Privoxy</span> in a environment with + trusted clients, you may enable this feature at your + discretion. Note that malicious client side code (e.g Java) + is also capable of using this feature. + </p> + <p> + This option will be removed in future releases as it has + been obsoleted by the more general header taggers. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ENABLE-EDIT-ACTIONS">7.4.5. enable-edit-actions</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether or not the <a href= + "http://config.privoxy.org/show-status" target= + "_top">web-based actions file editor</a> may be used + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + 0 or 1 + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 0 + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + The web-based actions file editor is disabled. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Access to the editor can <span class="emphasis"><i class= + "EMPHASIS">not</i></span> be controlled separately by <span + class="QUOTE">"ACLs"</span> or HTTP authentication, so that + everybody who can access <span class= + "APPLICATION">Privoxy</span> (see <span class= + "QUOTE">"ACLs"</span> and <tt class= + "LITERAL">listen-address</tt> above) can modify its + configuration for all users. + </p> + <p> + This option is <span class="emphasis"><i class= + "EMPHASIS">not recommended</i></span> for environments with + untrusted users and as a lot of <span class= + "APPLICATION">Privoxy</span> users don't read + documentation, this feature is disabled by default. + </p> + <p> + Note that malicious client side code (e.g Java) is also + capable of using the actions editor and you shouldn't + enable this options unless you understand the consequences + and are sure your browser is configured correctly. + </p> + <p> + Note that you must have compiled <span class= + "APPLICATION">Privoxy</span> with support for this feature, + otherwise this option has no effect. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ENFORCE-BLOCKS">7.4.6. enforce-blocks</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether the user is allowed to ignore blocks and can <span + class="QUOTE">"go there anyway"</span>. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>0 or 1</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">0</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Blocks are not enforced. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + <span class="APPLICATION">Privoxy</span> is mainly used to + block and filter requests as a service to the user, for + example to block ads and other junk that clogs the pipes. + <span class="APPLICATION">Privoxy's</span> configuration + isn't perfect and sometimes innocent pages are blocked. In + this situation it makes sense to allow the user to enforce + the request and have <span class= + "APPLICATION">Privoxy</span> ignore the block. + </p> + <p> + In the default configuration <span class= + "APPLICATION">Privoxy's</span> <span class= + "QUOTE">"Blocked"</span> page contains a <span class= + "QUOTE">"go there anyway"</span> link to adds a special + string (the force prefix) to the request URL. If that link + is used, <span class="APPLICATION">Privoxy</span> will + detect the force prefix, remove it again and let the + request pass. + </p> + <p> + Of course <span class="APPLICATION">Privoxy</span> can also + be used to enforce a network policy. In that case the user + obviously should not be able to bypass any blocks, and + that's what the <span class="QUOTE">"enforce-blocks"</span> + option is for. If it's enabled, <span class= + "APPLICATION">Privoxy</span> hides the <span class= + "QUOTE">"go there anyway"</span> link. If the user adds the + force prefix by hand, it will not be accepted and the + circumvention attempt is logged. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + enforce-blocks 1 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ACLS">7.4.7. ACLs: permit-access and deny-access</a> + </h4> + <a name="PERMIT-ACCESS"></a><a name="DENY-ACCESS"></a> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Who can access what. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>src_addr</i></tt>[:<tt class= + "REPLACEABLE"><i>port</i></tt>][/<tt class= + "REPLACEABLE"><i>src_masklen</i></tt>] [<tt class= + "REPLACEABLE"><i>dst_addr</i></tt>[:<tt class= + "REPLACEABLE"><i>port</i></tt>][/<tt class= + "REPLACEABLE"><i>dst_masklen</i></tt>]] + </p> + <p> + Where <tt class="REPLACEABLE"><i>src_addr</i></tt> and <tt + class="REPLACEABLE"><i>dst_addr</i></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></tt> and <tt class= + "REPLACEABLE"><i>dst_masklen</i></tt> 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. + </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> + <dd> + <p> + <span class="emphasis"><i 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> + <dd> + <p> + Don't restrict access further than implied by <tt class= + "LITERAL">listen-address</tt> + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Access controls are included at the request of ISPs and + systems administrators, and <span class="emphasis"><i + class="EMPHASIS">are not usually needed by individual + users</i></span>. For a typical home user, it will normally + suffice to ensure that <span class= + "APPLICATION">Privoxy</span> only listens on the localhost + (127.0.0.1) or internal (home) network address by means of + the <a href="config.html#LISTEN-ADDRESS"><span class= + "emphasis"><i class= + "EMPHASIS">listen-address</i></span></a> option. + </p> + <p> + Please see the warnings in the FAQ that <span class= + "APPLICATION">Privoxy</span> is not intended to be a + substitute for a firewall or to encourage anyone to defer + addressing basic security weaknesses. + </p> + <p> + Multiple ACL lines are OK. If any ACLs are specified, <span + class="APPLICATION">Privoxy</span> only talks to IP + addresses that match at least one <tt class= + "LITERAL">permit-access</tt> line and don't match any + subsequent <tt class="LITERAL">deny-access</tt> line. In + other words, the last match wins, with the default being + <tt class="LITERAL">deny-access</tt>. + </p> + <p> + If <span class="APPLICATION">Privoxy</span> is using a + forwarder (see <tt class="LITERAL">forward</tt> below) for + a particular destination URL, the <tt class= + "REPLACEABLE"><i>dst_addr</i></tt> that is examined is the + address of the forwarder and <span class="emphasis"><i + class="EMPHASIS">NOT</i></span> the address of the ultimate + target. This is necessary because it may be impossible for + the local <span class="APPLICATION">Privoxy</span> to + determine the IP address of the ultimate target (that's + often what gateways are used for). + </p> + <p> + You should prefer using IP addresses over DNS names, + because the address lookups take time. All DNS names must + resolve! You can <span class="emphasis"><i class= + "EMPHASIS">not</i></span> use domain patterns like <span + class="QUOTE">"*.org"</span> or partial domain names. If a + DNS name resolves to multiple IP addresses, only the first + one is used. + </p> + <p> + Some systems allow IPv4 clients to connect to IPv6 server + sockets. Then the client's IPv4 address will be translated + by the 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). + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + Explicitly define the default behavior if no ACL and <tt + class="LITERAL">listen-address</tt> are set: <span class= + "QUOTE">"localhost"</span> is OK. The absence of a <tt + class="REPLACEABLE"><i>dst_addr</i></tt> implies that <span + class="emphasis"><i class="EMPHASIS">all</i></span> + destination addresses are OK: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + permit-access localhost +</pre> + </td> + </tr> + </table> + + <p> + Allow any host on the same class C subnet as + www.privoxy.org access to nothing but www.example.com (or + other domains hosted on the same system): + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + permit-access www.privoxy.org/24 www.example.com/32 +</pre> + </td> + </tr> + </table> + + <p> + 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 the IP address behind + www.dirty-stuff.example.com: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + permit-access 192.168.45.64/26 + deny-access 192.168.45.73 www.dirty-stuff.example.com +</pre> + </td> + </tr> + </table> + + <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> + </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> + This is equivalent to the following line even if listening + on an IPv4 address (not supported on all platforms): + </p> + <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> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="BUFFER-LIMIT">7.4.8. buffer-limit</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Maximum size of the buffer for content filtering. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + Size in Kbytes + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 4096 + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Use a 4MB (4096 KB) limit. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + For content filtering, i.e. the <tt class= + "LITERAL">+filter</tt> and <tt class= + "LITERAL">+deanimate-gif</tt> actions, it is necessary that + <span class="APPLICATION">Privoxy</span> 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. + </p> + <p> + When a document buffer size reaches the <tt class= + "LITERAL">buffer-limit</tt>, 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 <tt class= + "LITERAL">buffer-limit</tt> Kbytes <span class= + "emphasis"><i class="EMPHASIS">each</i></span>, unless you + have enabled <span class="QUOTE">"single-threaded"</span> + above. + </p> + </dd> + </dl> + </div> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="FORWARDING">7.5. Forwarding</a> + </h2> + <p> + This feature allows routing of HTTP requests through a chain of + multiple proxies. + </p> + <p> + Forwarding can be used to chain Privoxy with a caching proxy to + speed up browsing. Using a parent proxy may also be necessary if + the machine that <span class="APPLICATION">Privoxy</span> runs on + has no direct Internet access. + </p> + <p> + Note that parent proxies can severely decrease your privacy level. + For example a parent proxy could add your IP address to the request + headers and if it's a caching proxy it may add the <span class= + "QUOTE">"Etag"</span> header to revalidation requests again, even + though you configured Privoxy to remove it. It may also ignore + Privoxy's header time randomization and use the original values + which could be used by the server as cookie replacement to track + your steps between visits. + </p> + <p> + Also specified here are SOCKS proxies. <span class= + "APPLICATION">Privoxy</span> supports the SOCKS 4 and SOCKS 4A + protocols. + </p> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="FORWARD">7.5.1. forward</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + To which parent HTTP proxy specific requests should be + routed. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>target_pattern</i></tt> <tt + class="REPLACEABLE"><i>http_parent</i></tt>[:<tt class= + "REPLACEABLE"><i>port</i></tt>] + </p> + <p> + where <tt class="REPLACEABLE"><i>target_pattern</i></tt> is + a <a href="actions-file.html#AF-PATTERNS">URL pattern</a> + that specifies to which requests (i.e. URLs) this forward + rule shall apply. Use <tt class="LITERAL">/</tt> to denote + <span class="QUOTE">"all URLs"</span>. <tt class= + "REPLACEABLE"><i>http_parent</i></tt>[:<tt class= + "REPLACEABLE"><i>port</i></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: 8000). Use a single dot (<tt class= + "LITERAL">.</tt>) to denote <span class="QUOTE">"no + forwarding"</span>. + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Don't use parent HTTP proxies. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + If <tt class="REPLACEABLE"><i>http_parent</i></tt> is <span + class="QUOTE">"."</span>, then requests are not 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> + <dt> + Examples: + </dt> + <dd> + <p> + Everything goes to an example parent proxy, except SSL on + port 443 (which it doesn't handle): + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + forward / parent-proxy.example.org:8080 + forward :443 . +</pre> + </td> + </tr> + </table> + + <p> + Everything goes to our example ISP's caching proxy, except + for requests to that ISP's sites: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + forward / caching-proxy.isp.example.net:8000 + forward .isp.example.net . +</pre> + </td> + </tr> + </table> + + <p> + Parent proxy specified by an IPv6 address: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="PROGRAMLISTING"> + forward / [2001:DB8::1]:8000 +</pre> + </td> + </tr> + </table> + + <p> + Suppose your parent proxy doesn't support IPv6: + </p> + <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 <[2-3][0-9a-f][0-9a-f][0-9a-f]:*> .</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="SOCKS" ->7.5.2. forward-socks4, forward-socks4a and forward-socks5</A -></H4 -><A -NAME="FORWARD-SOCKS4" -></A -><A -NAME="FORWARD-SOCKS4A" -></A -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Through which SOCKS proxy (and optionally to which parent HTTP proxy) specific requests should be routed. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->target_pattern</I -></TT -> - <TT -CLASS="REPLACEABLE" -><I ->socks_proxy</I -></TT ->[:<TT -CLASS="REPLACEABLE" -><I ->port</I -></TT ->] - <TT -CLASS="REPLACEABLE" -><I ->http_parent</I -></TT ->[:<TT -CLASS="REPLACEABLE" -><I ->port</I -></TT ->] - </P -><P -> where <TT -CLASS="REPLACEABLE" -><I ->target_pattern</I -></TT -> is a - <A -HREF="actions-file.html#AF-PATTERNS" ->URL pattern</A -> that specifies to which - requests (i.e. URLs) this forward rule shall apply. Use <TT -CLASS="LITERAL" ->/</TT -> to - denote <SPAN -CLASS="QUOTE" ->"all URLs"</SPAN ->. <TT -CLASS="REPLACEABLE" -><I ->http_parent</I -></TT -> - and <TT -CLASS="REPLACEABLE" -><I ->socks_proxy</I -></TT -> - are IP addresses in dotted decimal notation or valid DNS names - (<TT -CLASS="REPLACEABLE" -><I ->http_parent</I -></TT -> - may be <SPAN -CLASS="QUOTE" ->"."</SPAN -> to denote <SPAN -CLASS="QUOTE" ->"no HTTP forwarding"</SPAN ->), and the optional - <TT -CLASS="REPLACEABLE" -><I ->port</I -></TT -> parameters are TCP ports, - i.e. integer values from 1 to 65535 - </P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Unset</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Don't use SOCKS proxies. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Multiple lines are OK, they are checked in sequence, and the last match wins. - </P -><P -> The difference between <TT -CLASS="LITERAL" ->forward-socks4</TT -> and <TT -CLASS="LITERAL" ->forward-socks4a</TT -> - 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. - </P -><P -> With <TT -CLASS="LITERAL" ->forward-socks5</TT -> 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 ->http_parent</I -></TT -> is <SPAN -CLASS="QUOTE" ->"."</SPAN ->, then requests are not - forwarded to another HTTP proxy but are made (HTTP-wise) directly to the web servers, albeit through - a SOCKS proxy. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> From the company example.com, direct connections are made to all - <SPAN -CLASS="QUOTE" ->"internal"</SPAN -> domains, but everything outbound goes through - their ISP's proxy by way of example.com's corporate SOCKS 4A gateway to - the Internet. - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward-socks4a / socks-gw.example.com:1080 www-cache.isp.example.net:8080 - forward .example.com .</PRE -></TD -></TR -></TABLE -> - </P -><P -> A rule that uses a SOCKS 4 gateway for all destinations but no HTTP parent looks like this: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward-socks4 / socks-gw.example.com:1080 .</PRE -></TD -></TR -></TABLE -> - </P -><P -> To chain Privoxy and Tor, both running on the same system, you would use - something like: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward-socks5 / 127.0.0.1:9050 .</PRE -></TD -></TR -></TABLE -> - </P -><P -> The public <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> network can't be used to - reach your local network, if you need to access local servers you - therefore might want to make some exceptions: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward 192.168.*.*/ . + forward <[2-3][0-9a-f][0-9a-f][0-9a-f]:*> . +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="SOCKS">7.5.2. forward-socks4, forward-socks4a and + forward-socks5</a> + </h4> + <a name="FORWARD-SOCKS4"></a><a name="FORWARD-SOCKS4A"></a> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Through which SOCKS proxy (and optionally to which parent + HTTP proxy) specific requests should be routed. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>target_pattern</i></tt> <tt + class="REPLACEABLE"><i>socks_proxy</i></tt>[:<tt class= + "REPLACEABLE"><i>port</i></tt>] <tt class= + "REPLACEABLE"><i>http_parent</i></tt>[:<tt class= + "REPLACEABLE"><i>port</i></tt>] + </p> + <p> + where <tt class="REPLACEABLE"><i>target_pattern</i></tt> is + a <a href="actions-file.html#AF-PATTERNS">URL pattern</a> + that specifies to which requests (i.e. URLs) this forward + rule shall apply. Use <tt class="LITERAL">/</tt> to denote + <span class="QUOTE">"all URLs"</span>. <tt class= + "REPLACEABLE"><i>http_parent</i></tt> and <tt class= + "REPLACEABLE"><i>socks_proxy</i></tt> are IP addresses in + dotted decimal notation or valid DNS names (<tt class= + "REPLACEABLE"><i>http_parent</i></tt> may be <span class= + "QUOTE">"."</span> to denote <span class="QUOTE">"no HTTP + forwarding"</span>), and the optional <tt class= + "REPLACEABLE"><i>port</i></tt> parameters are TCP ports, + i.e. integer values from 1 to 65535 + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">Unset</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Don't use SOCKS proxies. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Multiple lines are OK, they are checked in sequence, and + the last match wins. + </p> + <p> + The difference between <tt class= + "LITERAL">forward-socks4</tt> and <tt class= + "LITERAL">forward-socks4a</tt> 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. + </p> + <p> + With <tt class="LITERAL">forward-socks5</tt> 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>http_parent</i></tt> is <span + class="QUOTE">"."</span>, then requests are not forwarded + to another HTTP proxy but are made (HTTP-wise) directly to + the web servers, albeit through a SOCKS proxy. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + From the company example.com, direct connections are made + to all <span class="QUOTE">"internal"</span> domains, but + everything outbound goes through their ISP's proxy by way + of example.com's corporate SOCKS 4A gateway to the + Internet. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + forward-socks4a / socks-gw.example.com:1080 www-cache.isp.example.net:8080 + forward .example.com . +</pre> + </td> + </tr> + </table> + + <p> + A rule that uses a SOCKS 4 gateway for all destinations but + no HTTP parent looks like this: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + forward-socks4 / socks-gw.example.com:1080 . +</pre> + </td> + </tr> + </table> + + <p> + To chain Privoxy and Tor, both running on the same system, + you would use something like: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + forward-socks5 / 127.0.0.1:9050 . +</pre> + </td> + </tr> + </table> + + <p> + The public <span class="APPLICATION">Tor</span> network + can't be used to reach your local network, if you need to + access local servers you therefore might want to make some + exceptions: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + forward 192.168.*.*/ . forward 10.*.*.*/ . - forward 127.*.*.*/ .</PRE -></TD -></TR -></TABLE -> - </P -><P -> Unencrypted connections to systems in these address ranges will - be as (un)secure as the local network is, but the alternative is that you - can't reach the local network through <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - at all. Of course this may actually be desired and there is no reason - to make these exceptions if you aren't sure you need them. - </P -><P -> If you also want to be able to reach servers in your local network by - using their names, you will need additional exceptions that look like - this: - </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward localhost/ .</PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ADVANCED-FORWARDING-EXAMPLES" ->7.5.3. Advanced Forwarding Examples</A -></H4 -><P -> If you have links to multiple ISPs that provide various special content - only to their subscribers, you can configure multiple <SPAN -CLASS="APPLICATION" ->Privoxies</SPAN -> - which have connections to the respective ISPs to act as forwarders to each other, so that - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->your</I -></SPAN -> users can see the internal content of all ISPs.</P -><P -> Assume that host-a has a PPP connection to isp-a.example.net. And host-b has a PPP connection to - isp-b.example.org. Both run <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. Their forwarding - configuration can look like this:</P -><P -> host-a:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward / . - forward .isp-b.example.net host-b:8118</PRE -></TD -></TR -></TABLE -></P -><P -> host-b:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward / . - forward .isp-a.example.org host-a:8118</PRE -></TD -></TR -></TABLE -></P -><P -> 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.</P -><P -> If you intend to chain <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and - <SPAN -CLASS="APPLICATION" ->squid</SPAN -> locally, then chaining as - <TT -CLASS="LITERAL" ->browser -> squid -> privoxy</TT -> is the recommended way. </P -><P -> Assuming that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and <SPAN -CLASS="APPLICATION" ->squid</SPAN -> - run on the same box, your <SPAN -CLASS="APPLICATION" ->squid</SPAN -> configuration could then look like this:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # Define Privoxy as parent proxy (without ICP) - cache_peer 127.0.0.1 parent 8118 7 no-query + forward 127.*.*.*/ . +</pre> + </td> + </tr> + </table> + + <p> + Unencrypted connections to systems in these address ranges + will be as (un)secure as the local network is, but the + alternative is that you can't reach the local network + through <span class="APPLICATION">Privoxy</span> at all. Of + course this may actually be desired and there is no reason + to make these exceptions if you aren't sure you need them. + </p> + <p> + If you also want to be able to reach servers in your local + network by using their names, you will need additional + exceptions that look like this: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + forward localhost/ . +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ADVANCED-FORWARDING-EXAMPLES">7.5.3. Advanced Forwarding + Examples</a> + </h4> + <p> + If you have links to multiple ISPs that provide various special + content only to their subscribers, you can configure multiple + <span class="APPLICATION">Privoxies</span> which have connections + to the respective ISPs to act as forwarders to each other, so + that <span class="emphasis"><i class="EMPHASIS">your</i></span> + users can see the internal content of all ISPs. + </p> + <p> + Assume that host-a has a PPP connection to isp-a.example.net. And + host-b has a PPP connection to isp-b.example.org. Both run <span + class="APPLICATION">Privoxy</span>. Their forwarding + configuration can look like this: + </p> + <p> + host-a: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + forward / . + forward .isp-b.example.net host-b:8118 +</pre> + </td> + </tr> + </table> - # Define ACL for protocol FTP - acl ftp proto FTP + <p> + host-b: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + forward / . + forward .isp-a.example.org host-a:8118 +</pre> + </td> + </tr> + </table> + + <p> + 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. + </p> + <p> + If you intend to chain <span class="APPLICATION">Privoxy</span> + and <span class="APPLICATION">squid</span> locally, then chaining + as <tt class="LITERAL">browser -> squid -> privoxy</tt> is + the recommended way. + </p> + <p> + Assuming that <span class="APPLICATION">Privoxy</span> and <span + class="APPLICATION">squid</span> run on the same box, your <span + class="APPLICATION">squid</span> configuration could then look + like this: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="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 + always_direct allow ftp # Forward all the rest to Privoxy - never_direct allow all</PRE -></TD -></TR -></TABLE -></P -><P -> You would then need to change your browser's proxy settings to <SPAN -CLASS="APPLICATION" ->squid</SPAN ->'s address and port. - Squid normally uses port 3128. If unsure consult <TT -CLASS="LITERAL" ->http_port</TT -> in <TT -CLASS="FILENAME" ->squid.conf</TT ->.</P -><P -> You could just as well decide to only forward requests you suspect - of leading to Windows executables through a virus-scanning parent proxy, - say, on <TT -CLASS="LITERAL" ->antivir.example.com</TT ->, port 8010:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> forward / . - forward /.*\.(exe|com|dll|zip)$ antivir.example.com:8010</PRE -></TD -></TR -></TABLE -> </P -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="FORWARDED-CONNECT-RETRIES" ->7.5.4. forwarded-connect-retries</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> How often Privoxy retries if a forwarded connection request fails. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->Number of retries.</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->0</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Connections forwarded through other proxies are treated like direct connections and no retry attempts are made. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->forwarded-connect-retries</I -></TT -> is mainly interesting - for socks4a connections, where <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can't detect why the connections failed. - The connection might have failed because of a DNS timeout in which case a retry makes sense, - but it might also have failed because the server doesn't exist or isn't reachable. In this - case the retry will just delay the appearance of Privoxy's error message. - </P -><P -> Note that in the context of this option, <SPAN -CLASS="QUOTE" ->"forwarded connections"</SPAN -> includes all connections - that Privoxy forwards through other proxies. This option is not limited to the HTTP CONNECT method. - </P -><P -> Only use this option, if you are getting lots of forwarding-related error messages - that go away when you try again manually. Start with a small value and check Privoxy's - logfile from time to time, to see how many retries are usually needed. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> forwarded-connect-retries 1 - </P -></DD -></DL -></DIV -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="MISC" ->7.6. Miscellaneous</A -></H2 -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ACCEPT-INTERCEPTED-REQUESTS" ->7.6.1. accept-intercepted-requests</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether intercepted requests should be treated as valid. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->0 or 1</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->0</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Only proxy requests are accepted, intercepted requests are treated as invalid. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> If you don't trust your clients and want to force them - to use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, enable this - option and configure your packet filter to redirect outgoing - HTTP connections into <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - </P -><P -> Make sure that <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> own requests - aren't redirected as well. Additionally take care that - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can't intentionally connect - to itself, otherwise you could run into redirection loops if - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> listening port is reachable - by the outside or an attacker has access to the pages you visit. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> accept-intercepted-requests 1 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ALLOW-CGI-REQUEST-CRUNCHING" ->7.6.2. allow-cgi-request-crunching</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether requests to <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> CGI pages can be blocked or redirected. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->0 or 1</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->0</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> ignores block and redirect actions for its CGI pages. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> By default <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> ignores block or redirect actions - for its CGI pages. Intercepting these requests can be useful in multi-user - setups to implement fine-grained access control, but it can also render the complete - web interface useless and make debugging problems painful if done without care. - </P -><P -> Don't enable this option unless you're sure that you really need it. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> allow-cgi-request-crunching 1 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="SPLIT-LARGE-FORMS" ->7.6.3. split-large-forms</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether the CGI interface should stay compatible with broken HTTP clients. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->0 or 1</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->0</I -></SPAN -></P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> The CGI form generate long GET URLs. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> CGI forms can lead to - rather long URLs. This isn't a problem as far as the HTTP - standard is concerned, but it can confuse clients with arbitrary - URL length limitations. - </P -><P -> Enabling split-large-forms causes <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - to divide big forms into smaller ones to keep the URL length down. - It makes editing a lot less convenient and you can no longer - submit all changes at once, but at least it works around this - browser bug. - </P -><P -> If you don't notice any editing problems, there is no reason - to enable this option, but if one of the submit buttons appears - to be broken, you should give it a try. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> split-large-forms 1 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="KEEP-ALIVE-TIMEOUT" ->7.6.4. 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 kept alive. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This option allows clients to keep the connection to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - alive. If the server supports it, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will keep - the connection to the server alive as well. Under certain - circumstances this may result in speed-ups. - </P -><P -> By default, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will close the connection to the server if - the client connection gets closed, or if the specified timeout - has been reached without a new request coming in. This behaviour - can be changed with the <A -HREF="#CONNECTION-SHARING" -TARGET="_top" ->connection-sharing</A -> option. - </P -><P -> This option has no effect if <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - has been compiled without keep-alive support. - </P -><P -> Note that a timeout of five seconds as used in the default - configuration file significantly decreases the number of - connections that will be reused. The value is used because - some browsers limit the number of connections they open to - a single host and apply the same limit to proxies. This can - result in a single website <SPAN -CLASS="QUOTE" ->"grabbing"</SPAN -> all the - connections the browser allows, which means connections to - other websites can't be opened until the connections currently - in use time out. - </P -><P -> Several users have reported this as a Privoxy bug, so the - default value has been reduced. Consider increasing it to - 300 seconds or even more if you think your browser can handle - it. If your browser appears to be hanging it can't. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> keep-alive-timeout 300 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="DEFAULT-SERVER-TIMEOUT" ->7.6.5. default-server-timeout</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Assumed server-side keep-alive timeout if not specified by the server. - </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 for which the server didn't specify the keep-alive - timeout are not reused. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> Enabling this option significantly increases the number of connections - that are reused, provided the <A -HREF="#KEEP-ALIVE-TIMEOUT" -TARGET="_top" ->keep-alive-timeout</A -> option - is also enabled. - </P -><P -> While it also increases the number of connections problems - when <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> tries to reuse a connection that already has - been closed on the server side, or is closed while <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is trying to reuse it, this should only be a problem if it - happens for the first request sent by the client. If it happens - for requests on reused client connections, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will simply - close the connection and the client is supposed to retry the - request without bothering the user. - </P -><P -> Enabling this option is therefore only recommended if the - <A -HREF="#CONNECTION-SHARING" -TARGET="_top" ->connection-sharing</A -> option - is disabled. - </P -><P -> It is an error to specify a value larger than the <A -HREF="#KEEP-ALIVE-TIMEOUT" -TARGET="_top" ->keep-alive-timeout</A -> value. - </P -><P -> This option has no effect if <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - has been compiled without keep-alive support. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> default-server-timeout 60 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="CONNECTION-SHARING" ->7.6.6. connection-sharing</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether or not outgoing connections that have been kept alive - should be shared between different incoming connections. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->0 or 1</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P ->None</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Connections are not shared. - </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, or if it's disabled. - </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 -> If this option is effective, outgoing connections are shared between - clients (if there are more than one) and closing the browser that initiated - the outgoing connection does no longer affect the connection between <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - and the server unless the client's request hasn't been completed yet. - </P -><P -> 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 -><P -> If there are more than one client (maybe even belonging to multiple users), - they will be able to reuse each others connections. This is potentially - dangerous in case of authentication schemes like NTLM where only the - connection is authenticated, instead of requiring authentication for - each request. - </P -><P -> If there is only a single client, and if said client can keep connections - alive on its own, enabling this option has next to no effect. If the client - doesn't support connection keep-alive, enabling this option may make sense - as it allows <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to keep outgoing connections alive even if the client - itself doesn't support it. - </P -><P -> You should also be aware that enabling this option increases the likelihood - of getting the "No server or forwarder data" error message, especially if you - are using a slow connection to the Internet. - </P -><P -> This option should only be used by experienced users who - understand the risks and can weight them against the benefits. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> connection-sharing 1 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="SOCKET-TIMEOUT" ->7.6.7. 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 -> The default is quite high and you probably want to reduce it. - If you aren't using an occasionally slow proxy like Tor, reducing - it to a few seconds should be fine. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> socket-timeout 300 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="MAX-CLIENT-CONNECTIONS" ->7.6.8. max-client-connections</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Maximum number of client connections that will be served. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->Positive number.</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P ->None</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Connections are served until a resource limit is reached. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> creates one thread (or process) for every incoming client - connection that isn't rejected based on the access control settings. - </P -><P -> If the system is powerful enough, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can theoretically deal with - several hundred (or thousand) connections at the same time, but some - operating systems enforce resource limits by shutting down offending - processes and their default limits may be below the ones <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> would - require under heavy load. - </P -><P -> Configuring <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to enforce a connection limit below the thread - or process limit used by the operating system makes sure this doesn't - happen. Simply increasing the operating system's limit would work too, - but if <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> isn't the only application running on the system, - you may actually want to limit the resources used by <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - </P -><P -> If <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is only used by a single trusted user, limiting the - number of client connections is probably unnecessary. If there - are multiple possibly untrusted users you probably still want to - additionally use a packet filter to limit the maximal number of - incoming connections per client. Otherwise a malicious user could - intentionally create a high number of connections to prevent other - users from using <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - </P -><P -> Obviously using this option only makes sense if you choose a limit - below the one enforced by the operating system. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> max-client-connections 256 - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="HANDLE-AS-EMPTY-DOC-RETURNS-OK" ->7.6.9. handle-as-empty-doc-returns-ok</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The status code Privoxy returns for pages blocked with - - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" -TARGET="_top" ->+handle-as-empty-document</A -></TT ->. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->0 or 1</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P ->0</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Privoxy returns a status 403(forbidden) for all blocked pages. - </P -></DD -><DT ->Effect if set:</DT -><DD -><P -> Privoxy returns a status 200(OK) for pages blocked with +handle-as-empty-document - and a status 403(Forbidden) for all other blocked pages. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This is a work-around for Firefox bug 492459: - <SPAN -CLASS="QUOTE" ->" Websites are no longer rendered if SSL requests for JavaScripts are blocked by a proxy. - "</SPAN -> - (<A -HREF="https://bugzilla.mozilla.org/show_bug.cgi?id=492459" -TARGET="_top" ->https://bugzilla.mozilla.org/show_bug.cgi?id=492459</A ->) - As the bug has been fixed for quite some time this option should no longer - be needed and will be removed in a future release. Please speak up if you - have a reason why the option should be kept around. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="ENABLE-COMPRESSION" ->7.6.10. enable-compression</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> Whether or not buffered content is compressed before delivery. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->0 or 1</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P ->0</P -></DD -><DT ->Effect if unset:</DT -><DD -><P -> Privoxy does not compress buffered content. - </P -></DD -><DT ->Effect if set:</DT -><DD -><P -> Privoxy compresses buffered content before delivering it to the client, - provided the client supports it. - </P -></DD -><DT ->Notes:</DT -><DD -><P -> This directive is only supported if Privoxy has been compiled with - FEATURE_COMPRESSION, which should not to be confused with FEATURE_ZLIB. - </P -><P -> Compressing buffered content is mainly useful if Privoxy and the - client are running on different systems. If they are running on the - same system, enabling compression is likely to slow things down. - If you didn't measure otherwise, you should assume that it does - and keep this option disabled. - </P -><P -> Privoxy will not compress buffered content below a certain length. - </P -></DD -></DL -></DIV -></DIV -><DIV -CLASS="SECT3" -><H4 -CLASS="SECT3" -><A -NAME="COMPRESSION-LEVEL" ->7.6.11. compression-level</A -></H4 -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Specifies:</DT -><DD -><P -> The compression level that is passed to the zlib library when compressing buffered content. - </P -></DD -><DT ->Type of value:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->Positive number ranging from 0 to 9.</I -></TT -> - </P -></DD -><DT ->Default value:</DT -><DD -><P ->1</P -></DD -><DT ->Notes:</DT -><DD -><P -> Compressing the data more takes usually longer than compressing - it less or not compressing it at all. Which level is best depends - on the connection between Privoxy and the client. If you can't - be bothered to benchmark it for yourself, you should stick with - the default and keep compression disabled. - </P -><P -> If compression is disabled, the compression level is irrelevant. - </P -></DD -><DT ->Examples:</DT -><DD -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="90%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # Best speed (compared to the other levels) + never_direct allow all +</pre> + </td> + </tr> + </table> + + <p> + You would then need to change your browser's proxy settings to + <span class="APPLICATION">squid</span>'s address and port. Squid + normally uses port 3128. If unsure consult <tt class= + "LITERAL">http_port</tt> in <tt class="FILENAME">squid.conf</tt>. + </p> + <p> + You could just as well decide to only forward requests you + suspect of leading to Windows executables through a + virus-scanning parent proxy, say, on <tt class= + "LITERAL">antivir.example.com</tt>, port 8010: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + forward / . + forward /.*\.(exe|com|dll|zip)$ antivir.example.com:8010 +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="FORWARDED-CONNECT-RETRIES">7.5.4. + forwarded-connect-retries</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + How often Privoxy retries if a forwarded connection request + fails. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>Number of retries.</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">0</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Connections forwarded through other proxies are treated + like direct connections and no retry attempts are made. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + <tt class= + "REPLACEABLE"><i>forwarded-connect-retries</i></tt> is + mainly interesting for socks4a connections, where <span + class="APPLICATION">Privoxy</span> can't detect why the + connections failed. The connection might have failed + because of a DNS timeout in which case a retry makes sense, + but it might also have failed because the server doesn't + exist or isn't reachable. In this case the retry will just + delay the appearance of Privoxy's error message. + </p> + <p> + Note that in the context of this option, <span class= + "QUOTE">"forwarded connections"</span> includes all + connections that Privoxy forwards through other proxies. + This option is not limited to the HTTP CONNECT method. + </p> + <p> + Only use this option, if you are getting lots of + forwarding-related error messages that go away when you try + again manually. Start with a small value and check + Privoxy's logfile from time to time, to see how many + retries are usually needed. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + forwarded-connect-retries 1 + </p> + </dd> + </dl> + </div> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="MISC">7.6. Miscellaneous</a> + </h2> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ACCEPT-INTERCEPTED-REQUESTS">7.6.1. + accept-intercepted-requests</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether intercepted requests should be treated as valid. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>0 or 1</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">0</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Only proxy requests are accepted, intercepted requests are + treated as invalid. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + If you don't trust your clients and want to force them to + use <span class="APPLICATION">Privoxy</span>, enable this + option and configure your packet filter to redirect + outgoing HTTP connections into <span class= + "APPLICATION">Privoxy</span>. + </p> + <p> + Make sure that <span class="APPLICATION">Privoxy's</span> + own requests aren't redirected as well. Additionally take + care that <span class="APPLICATION">Privoxy</span> can't + intentionally connect to itself, otherwise you could run + into redirection loops if <span class= + "APPLICATION">Privoxy's</span> listening port is reachable + by the outside or an attacker has access to the pages you + visit. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + accept-intercepted-requests 1 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ALLOW-CGI-REQUEST-CRUNCHING">7.6.2. + allow-cgi-request-crunching</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether requests to <span class= + "APPLICATION">Privoxy's</span> CGI pages can be blocked or + redirected. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>0 or 1</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">0</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + <span class="APPLICATION">Privoxy</span> ignores block and + redirect actions for its CGI pages. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + By default <span class="APPLICATION">Privoxy</span> ignores + block or redirect actions for its CGI pages. Intercepting + these requests can be useful in multi-user setups to + implement fine-grained access control, but it can also + render the complete web interface useless and make + debugging problems painful if done without care. + </p> + <p> + Don't enable this option unless you're sure that you really + need it. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + allow-cgi-request-crunching 1 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="SPLIT-LARGE-FORMS">7.6.3. split-large-forms</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether the CGI interface should stay compatible with + broken HTTP clients. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>0 or 1</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + <span class="emphasis"><i class="EMPHASIS">0</i></span> + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + The CGI form generate long GET URLs. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + <span class="APPLICATION">Privoxy's</span> CGI forms can + lead to rather long URLs. This isn't a problem as far as + the HTTP standard is concerned, but it can confuse clients + with arbitrary URL length limitations. + </p> + <p> + Enabling split-large-forms causes <span class= + "APPLICATION">Privoxy</span> to divide big forms into + smaller ones to keep the URL length down. It makes editing + a lot less convenient and you can no longer submit all + changes at once, but at least it works around this browser + bug. + </p> + <p> + If you don't notice any editing problems, there is no + reason to enable this option, but if one of the submit + buttons appears to be broken, you should give it a try. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + split-large-forms 1 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="KEEP-ALIVE-TIMEOUT">7.6.4. keep-alive-timeout</a> + </h4> + <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 kept alive. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This option allows clients to keep the connection to <span + class="APPLICATION">Privoxy</span> alive. If the server + supports it, <span class="APPLICATION">Privoxy</span> will + keep the connection to the server alive as well. Under + certain circumstances this may result in speed-ups. + </p> + <p> + By default, <span class="APPLICATION">Privoxy</span> will + close the connection to the server if the client connection + gets closed, or if the specified timeout has been reached + without a new request coming in. This behaviour can be + changed with the <a href="#CONNECTION-SHARING" target= + "_top">connection-sharing</a> option. + </p> + <p> + This option has no effect if <span class= + "APPLICATION">Privoxy</span> has been compiled without + keep-alive support. + </p> + <p> + Note that a timeout of five seconds as used in the default + configuration file significantly decreases the number of + connections that will be reused. The value is used because + some browsers limit the number of connections they open to + a single host and apply the same limit to proxies. This can + result in a single website <span class= + "QUOTE">"grabbing"</span> all the connections the browser + allows, which means connections to other websites can't be + opened until the connections currently in use time out. + </p> + <p> + Several users have reported this as a Privoxy bug, so the + default value has been reduced. Consider increasing it to + 300 seconds or even more if you think your browser can + handle it. If your browser appears to be hanging it can't. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + keep-alive-timeout 300 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="DEFAULT-SERVER-TIMEOUT">7.6.5. + default-server-timeout</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Assumed server-side keep-alive timeout if not specified by + the server. + </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 for which the server didn't specify the + keep-alive timeout are not reused. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Enabling this option significantly increases the number of + connections that are reused, provided the <a href= + "#KEEP-ALIVE-TIMEOUT" target="_top">keep-alive-timeout</a> + option is also enabled. + </p> + <p> + While it also increases the number of connections problems + when <span class="APPLICATION">Privoxy</span> tries to + reuse a connection that already has been closed on the + server side, or is closed while <span class= + "APPLICATION">Privoxy</span> is trying to reuse it, this + should only be a problem if it happens for the first + request sent by the client. If it happens for requests on + reused client connections, <span class= + "APPLICATION">Privoxy</span> will simply close the + connection and the client is supposed to retry the request + without bothering the user. + </p> + <p> + Enabling this option is therefore only recommended if the + <a href="#CONNECTION-SHARING" target= + "_top">connection-sharing</a> option is disabled. + </p> + <p> + It is an error to specify a value larger than the <a href= + "#KEEP-ALIVE-TIMEOUT" target="_top">keep-alive-timeout</a> + value. + </p> + <p> + This option has no effect if <span class= + "APPLICATION">Privoxy</span> has been compiled without + keep-alive support. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + default-server-timeout 60 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="CONNECTION-SHARING">7.6.6. connection-sharing</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether or not outgoing connections that have been kept + alive should be shared between different incoming + connections. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>0 or 1</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + None + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Connections are not shared. + </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, or if it's disabled. + </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> + If this option is effective, outgoing connections are + shared between clients (if there are more than one) and + closing the browser that initiated the outgoing connection + does no longer affect the connection between <span class= + "APPLICATION">Privoxy</span> and the server unless the + client's request hasn't been completed yet. + </p> + <p> + 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> + <p> + If there are more than one client (maybe even belonging to + multiple users), they will be able to reuse each others + connections. This is potentially dangerous in case of + authentication schemes like NTLM where only the connection + is authenticated, instead of requiring authentication for + each request. + </p> + <p> + If there is only a single client, and if said client can + keep connections alive on its own, enabling this option has + next to no effect. If the client doesn't support connection + keep-alive, enabling this option may make sense as it + allows <span class="APPLICATION">Privoxy</span> to keep + outgoing connections alive even if the client itself + doesn't support it. + </p> + <p> + You should also be aware that enabling this option + increases the likelihood of getting the "No server or + forwarder data" error message, especially if you are using + a slow connection to the Internet. + </p> + <p> + This option should only be used by experienced users who + understand the risks and can weight them against the + benefits. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + connection-sharing 1 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="SOCKET-TIMEOUT">7.6.7. socket-timeout</a> + </h4> + <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> + The default is quite high and you probably want to reduce + it. If you aren't using an occasionally slow proxy like + Tor, reducing it to a few seconds should be fine. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + socket-timeout 300 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="MAX-CLIENT-CONNECTIONS">7.6.8. + max-client-connections</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Maximum number of client connections that will be served. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>Positive number.</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + None + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Connections are served until a resource limit is reached. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + <span class="APPLICATION">Privoxy</span> creates one thread + (or process) for every incoming client connection that + isn't rejected based on the access control settings. + </p> + <p> + If the system is powerful enough, <span class= + "APPLICATION">Privoxy</span> can theoretically deal with + several hundred (or thousand) connections at the same time, + but some operating systems enforce resource limits by + shutting down offending processes and their default limits + may be below the ones <span class= + "APPLICATION">Privoxy</span> would require under heavy + load. + </p> + <p> + Configuring <span class="APPLICATION">Privoxy</span> to + enforce a connection limit below the thread or process + limit used by the operating system makes sure this doesn't + happen. Simply increasing the operating system's limit + would work too, but if <span class= + "APPLICATION">Privoxy</span> isn't the only application + running on the system, you may actually want to limit the + resources used by <span class="APPLICATION">Privoxy</span>. + </p> + <p> + If <span class="APPLICATION">Privoxy</span> is only used by + a single trusted user, limiting the number of client + connections is probably unnecessary. If there are multiple + possibly untrusted users you probably still want to + additionally use a packet filter to limit the maximal + number of incoming connections per client. Otherwise a + malicious user could intentionally create a high number of + connections to prevent other users from using <span class= + "APPLICATION">Privoxy</span>. + </p> + <p> + Obviously using this option only makes sense if you choose + a limit below the one enforced by the operating system. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + max-client-connections 256 + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="HANDLE-AS-EMPTY-DOC-RETURNS-OK">7.6.9. + handle-as-empty-doc-returns-ok</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The status code Privoxy returns for pages blocked with <tt + class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" target= + "_top">+handle-as-empty-document</a></tt>. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>0 or 1</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 0 + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Privoxy returns a status 403(forbidden) for all blocked + pages. + </p> + </dd> + <dt> + Effect if set: + </dt> + <dd> + <p> + Privoxy returns a status 200(OK) for pages blocked with + +handle-as-empty-document and a status 403(Forbidden) for + all other blocked pages. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This is a work-around for Firefox bug 492459: <span class= + "QUOTE">" Websites are no longer rendered if SSL requests + for JavaScripts are blocked by a proxy. "</span> (<a href= + "https://bugzilla.mozilla.org/show_bug.cgi?id=492459" + target= + "_top">https://bugzilla.mozilla.org/show_bug.cgi?id=492459</a>) + As the bug has been fixed for quite some time this option + should no longer be needed and will be removed in a future + release. Please speak up if you have a reason why the + option should be kept around. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="ENABLE-COMPRESSION">7.6.10. enable-compression</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + Whether or not buffered content is compressed before + delivery. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>0 or 1</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 0 + </p> + </dd> + <dt> + Effect if unset: + </dt> + <dd> + <p> + Privoxy does not compress buffered content. + </p> + </dd> + <dt> + Effect if set: + </dt> + <dd> + <p> + Privoxy compresses buffered content before delivering it to + the client, provided the client supports it. + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + This directive is only supported if Privoxy has been + compiled with FEATURE_COMPRESSION, which should not to be + confused with FEATURE_ZLIB. + </p> + <p> + Compressing buffered content is mainly useful if Privoxy + and the client are running on different systems. If they + are running on the same system, enabling compression is + likely to slow things down. If you didn't measure + otherwise, you should assume that it does and keep this + option disabled. + </p> + <p> + Privoxy will not compress buffered content below a certain + length. + </p> + </dd> + </dl> + </div> + </div> + <div class="SECT3"> + <h4 class="SECT3"> + <a name="COMPRESSION-LEVEL">7.6.11. compression-level</a> + </h4> + <div class="VARIABLELIST"> + <dl> + <dt> + Specifies: + </dt> + <dd> + <p> + The compression level that is passed to the zlib library + when compressing buffered content. + </p> + </dd> + <dt> + Type of value: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>Positive number ranging from 0 + to 9.</i></tt> + </p> + </dd> + <dt> + Default value: + </dt> + <dd> + <p> + 1 + </p> + </dd> + <dt> + Notes: + </dt> + <dd> + <p> + Compressing the data more takes usually longer than + compressing it less or not compressing it at all. Which + level is best depends on the connection between Privoxy and + the client. If you can't be bothered to benchmark it for + yourself, you should stick with the default and keep + compression disabled. + </p> + <p> + If compression is disabled, the compression level is + irrelevant. + </p> + </dd> + <dt> + Examples: + </dt> + <dd> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="90%"> + <tr> + <td> +<pre class="SCREEN"> + # Best speed (compared to the other levels) compression-level 1 # Best compression compression-level 9 @@ -4703,373 +3516,188 @@ CLASS="SCREEN" # is superior to using no compression at all, the benchmark # is likely to be flawed. compression-level 0 - </PRE -></TD -></TR -></TABLE -> - </P -></DD -></DL -></DIV -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="WINDOWS-GUI" ->7.7. Windows GUI Options</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> has a number of options specific to the - Windows GUI interface:</P -><A -NAME="ACTIVITY-ANIMATION" -></A -><P -> If <SPAN -CLASS="QUOTE" ->"activity-animation"</SPAN -> is set to 1, the - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> icon will animate when - <SPAN -CLASS="QUOTE" ->"Privoxy"</SPAN -> is active. To turn off, set to 0.</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->activity-animation 1</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="LOG-MESSAGES" -></A -><P -> If <SPAN -CLASS="QUOTE" ->"log-messages"</SPAN -> is set to 1, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will log messages to the console - window:</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->log-messages 1</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="LOG-BUFFER-SIZE" -></A -><P -> - If <SPAN -CLASS="QUOTE" ->"log-buffer-size"</SPAN -> 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 <SPAN -CLASS="QUOTE" ->"log-max-lines"</SPAN -> (see below).</P -><P -> Warning: Setting this to 0 will result in the buffer to grow infinitely and - eat up all your memory!</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->log-buffer-size 1</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="LOG-MAX-LINES" -></A -><P -> <SPAN -CLASS="APPLICATION" ->log-max-lines</SPAN -> is the maximum number of lines held - in the log buffer. See above.</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->log-max-lines 200</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="LOG-HIGHLIGHT-MESSAGES" -></A -><P -> If <SPAN -CLASS="QUOTE" ->"log-highlight-messages"</SPAN -> is set to 1, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will highlight portions of the log - messages with a bold-faced font:</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->log-highlight-messages 1</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="LOG-FONT-NAME" -></A -><P -> The font used in the console window:</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->log-font-name Comic Sans MS</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="LOG-FONT-SIZE" -></A -><P -> Font size used in the console window:</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->log-font-size 8</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="SHOW-ON-TASK-BAR" -></A -><P -> - <SPAN -CLASS="QUOTE" ->"show-on-task-bar"</SPAN -> controls whether or not - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will appear as a button on the Task bar - when minimized:</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->show-on-task-bar 0</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="CLOSE-BUTTON-MINIMIZES" -></A -><P -> If <SPAN -CLASS="QUOTE" ->"close-button-minimizes"</SPAN -> is set to 1, the Windows close - button will minimize <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> instead of closing - the program (close with the exit option on the File menu).</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->close-button-minimizes 1</I -></SPAN -><br> - </P -> - </TT -></P -><A -NAME="HIDE-CONSOLE" -></A -><P -> The <SPAN -CLASS="QUOTE" ->"hide-console"</SPAN -> option is specific to the MS-Win console - version of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. If this option is used, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will disconnect from and hide the - command console.</P -><P -> <TT -CLASS="LITERAL" -> <P -CLASS="LITERALLAYOUT" -> #<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->hide-console</I -></SPAN -><br> - </P -> - </TT -></P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="configuration.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="actions-file.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Privoxy Configuration</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Actions Files</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file + +</pre> + </td> + </tr> + </table> + </dd> + </dl> + </div> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="WINDOWS-GUI">7.7. Windows GUI Options</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span> has a number of options + specific to the Windows GUI interface: + </p> + <a name="ACTIVITY-ANIMATION"></a> + <p> + If <span class="QUOTE">"activity-animation"</span> is set to 1, the + <span class="APPLICATION">Privoxy</span> icon will animate when + <span class="QUOTE">"Privoxy"</span> is active. To turn off, set to + 0. + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">activity-animation 1</i></span><br> + </tt> + </p> + <a name="LOG-MESSAGES"></a> + <p> + If <span class="QUOTE">"log-messages"</span> is set to 1, <span + class="APPLICATION">Privoxy</span> will log messages to the console + window: + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">log-messages 1</i></span><br> + </tt> + </p> + <a name="LOG-BUFFER-SIZE"></a> + <p> + If <span class="QUOTE">"log-buffer-size"</span> 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 <span + class="QUOTE">"log-max-lines"</span> (see below). + </p> + <p> + Warning: Setting this to 0 will result in the buffer to grow + infinitely and eat up all your memory! + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">log-buffer-size 1</i></span><br> + </tt> + </p> + <a name="LOG-MAX-LINES"></a> + <p> + <span class="APPLICATION">log-max-lines</span> is the maximum + number of lines held in the log buffer. See above. + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">log-max-lines 200</i></span><br> + </tt> + </p> + <a name="LOG-HIGHLIGHT-MESSAGES"></a> + <p> + If <span class="QUOTE">"log-highlight-messages"</span> is set to 1, + <span class="APPLICATION">Privoxy</span> will highlight portions of + the log messages with a bold-faced font: + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">log-highlight-messages 1</i></span><br> + </tt> + </p> + <a name="LOG-FONT-NAME"></a> + <p> + The font used in the console window: + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">log-font-name Comic Sans MS</i></span><br> + </tt> + </p> + <a name="LOG-FONT-SIZE"></a> + <p> + Font size used in the console window: + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">log-font-size 8</i></span><br> + </tt> + </p> + <a name="SHOW-ON-TASK-BAR"></a> + <p> + <span class="QUOTE">"show-on-task-bar"</span> controls whether or + not <span class="APPLICATION">Privoxy</span> will appear as a + button on the Task bar when minimized: + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">show-on-task-bar 0</i></span><br> + </tt> + </p> + <a name="CLOSE-BUTTON-MINIMIZES"></a> + <p> + If <span class="QUOTE">"close-button-minimizes"</span> is set to 1, + the Windows close button will minimize <span class= + "APPLICATION">Privoxy</span> instead of closing the program (close + with the exit option on the File menu). + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> <span class="emphasis"><i class= + "EMPHASIS">close-button-minimizes 1</i></span><br> + </tt> + </p> + <a name="HIDE-CONSOLE"></a> + <p> + The <span class="QUOTE">"hide-console"</span> option is specific to + the MS-Win console version of <span class= + "APPLICATION">Privoxy</span>. If this option is used, <span class= + "APPLICATION">Privoxy</span> will disconnect from and hide the + command console. + </p> + <p> + </p> + <p class="LITERALLAYOUT"> + <tt class="LITERAL"> #<span class="emphasis"><i class= + "EMPHASIS">hide-console</i></span><br> + </tt> + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="configuration.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="actions-file.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Privoxy Configuration + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Actions Files + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/configuration.html b/doc/webserver/user-manual/configuration.html index 318752a0..1885bdae 100644 --- a/doc/webserver/user-manual/configuration.html +++ b/doc/webserver/user-manual/configuration.html @@ -1,524 +1,320 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy Configuration</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Starting Privoxy" -HREF="startup.html"><LINK -REL="NEXT" -TITLE="The Main Configuration File" -HREF="config.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="startup.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="config.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="CONFIGURATION" ->6. Privoxy Configuration</A -></H1 -><P -> All <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> configuration is stored - in text files. These files can be edited with a text editor. - Many important aspects of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can - also be controlled easily with a web browser. - </P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN933" ->6.1. Controlling Privoxy with Your Web Browser</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s user interface can be reached through the special - URL <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A -> - (shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A ->), - which is a built-in page and works without Internet access. - You will see the following section: </P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> <H2 -CLASS="BRIDGEHEAD" -><A -NAME="AEN941" -></A -> Privoxy Menu</H2 -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> ▪ <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->View & change the current configuration</A -> - </TD -></TR -><TR -><TD -> ▪ <A -HREF="http://config.privoxy.org/show-version" -TARGET="_top" ->View the source code version numbers</A -> - </TD -></TR -><TR -><TD -> ▪ <A -HREF="http://config.privoxy.org/show-request" -TARGET="_top" ->View the request headers.</A -> - </TD -></TR -><TR -><TD -> ▪ <A -HREF="http://config.privoxy.org/show-url-info" -TARGET="_top" ->Look up which actions apply to a URL and why</A -> - </TD -></TR -><TR -><TD -> ▪ <A -HREF="http://config.privoxy.org/toggle" -TARGET="_top" ->Toggle Privoxy on or off</A -> - </TD -></TR -><TR -><TD -> ▪ <A -HREF="http://www.privoxy.org/3.0.18/user-manual/" -TARGET="_top" ->Documentation</A -> - </TD -></TR -></TBODY -></TABLE -><P -></P -></PRE -></TD -></TR -></TABLE -><P -> This should be self-explanatory. Note the first item leads to an editor for the - <A -HREF="actions-file.html" ->actions files</A ->, which is where the ad, banner, - cookie, and URL blocking magic is configured as well as other advanced features of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. This is an easy way to adjust various - aspects of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> configuration. The actions - file, and other configuration files, are explained in detail below. </P -><P -> <SPAN -CLASS="QUOTE" ->"Toggle Privoxy On or Off"</SPAN -> 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 <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - causing the problem or not. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> continues - to run as a proxy in this case, but all manipulation is disabled, i.e. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> acts like a normal forwarding proxy. There - is even a toggle <A -HREF="appendix.html#BOOKMARKLETS" ->Bookmarklet</A -> offered, so - that you can toggle <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with one click from - your browser.</P -><P -> Note that several of the features described above are disabled by default - in <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.7 beta and later. - Check the - <A -HREF="config.html" -TARGET="_top" ->configuration file</A -> to learn why - and in which cases it's safe to enable them again.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CONFOVERVIEW" ->6.2. Configuration Files Overview</A -></H2 -><P -> For Unix, *BSD and Linux, all configuration files are located in - <TT -CLASS="FILENAME" ->/etc/privoxy/</TT -> by default. For MS Windows, OS/2, and - AmigaOS these are all in the same directory as the - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> executable. The name - and number of configuration files has changed from previous versions, and is - subject to change as development progresses.</P -><P -> 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:</P -><P -> <P -></P -><UL -><LI -><P -> The <A -HREF="config.html" ->main configuration file</A -> is named <TT -CLASS="FILENAME" ->config</TT -> - on Linux, Unix, BSD, OS/2, and AmigaOS and <TT -CLASS="FILENAME" ->config.txt</TT -> - on Windows. This is a required file. - </P -></LI -><LI -><P -> <TT -CLASS="FILENAME" ->match-all.action</TT -> is used to define which <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> - relating to banner-blocking, images, pop-ups, content modification, cookie handling - etc should be applied by default. It should be the first actions file loaded. - </P -><P -> <TT -CLASS="FILENAME" ->default.action</TT -> defines many exceptions (both positive and negative) - from the default set of actions that's configured in <TT -CLASS="FILENAME" ->match-all.action</TT ->. - It should be the second actions file loaded and shouldn't be edited by the user. - </P -><P -> Multiple actions files may be defined in <TT -CLASS="FILENAME" ->config</TT ->. These - are processed in the order they are defined. Local customizations and locally - preferred exceptions to the default policies as defined in - <TT -CLASS="FILENAME" ->match-all.action</TT -> (which you will most probably want - to define sooner or later) are best applied in <TT -CLASS="FILENAME" ->user.action</TT ->, - where you can preserve them across upgrades. The file isn't installed by all - installers, but you can easily create it yourself with a text editor. - </P -><P -> - There is also a web based editor that can be accessed from - <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A -> - (Shortcut: <A -HREF="http://p.p/show-status" -TARGET="_top" ->http://p.p/show-status</A ->) for the - various actions files. - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"Filter files"</SPAN -> (the <A -HREF="filter-file.html" ->filter - file</A ->) 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. - <TT -CLASS="FILENAME" ->default.filter</TT -> includes various filters made - available for use by the developers. Some are much more intrusive than - others, and all should be used with caution. You may define additional - filter files in <TT -CLASS="FILENAME" ->config</TT -> as you can with - actions files. We suggest <TT -CLASS="FILENAME" ->user.filter</TT -> for any - locally defined filters or customizations. - </P -></LI -></UL -></P -><P -> The syntax of the configuration and filter files may change between different - Privoxy versions, unfortunately some enhancements cost backwards compatibility. - </P -><P -> All files use the <SPAN -CLASS="QUOTE" ->"<TT -CLASS="LITERAL" ->#</TT ->"</SPAN -> character to denote a - comment (the rest of the line will be ignored) and understand line continuation - through placing a backslash ("<TT -CLASS="LITERAL" ->\</TT ->") as the very last character - in a line. If the <TT -CLASS="LITERAL" ->#</TT -> is preceded by a backslash, it looses - its special function. Placing a <TT -CLASS="LITERAL" ->#</TT -> in front of an otherwise - valid configuration line to prevent it from being interpreted is called "commenting - out" that line. Blank lines are ignored.</P -><P -> The actions files and filter files - can use Perl style <A -HREF="appendix.html#REGEX" ->regular expressions</A -> for - maximum flexibility. </P -><P -> After making any changes, there is no need to restart - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in order for the changes to take - effect. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 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 <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, these <SPAN -CLASS="QUOTE" ->"wake up"</SPAN -> requests - must obviously be sent to the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->old</I -></SPAN -> listening address.</P -><P -> 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 <SPAN -CLASS="QUOTE" ->"default"</SPAN -> setting, may change, so - please check all your configuration files on important issues.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="startup.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="config.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Starting Privoxy</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->The Main Configuration File</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy Configuration + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Starting Privoxy" href="startup.html"> + <link rel="NEXT" title="The Main Configuration File" href="config.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="startup.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="config.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="CONFIGURATION">6. Privoxy Configuration</a> + </h1> + <p> + All <span class="APPLICATION">Privoxy</span> configuration is stored + in text files. These files can be edited with a text editor. Many + important aspects of <span class="APPLICATION">Privoxy</span> can + also be controlled easily with a web browser. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN933">6.1. Controlling Privoxy with Your Web Browser</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span>'s user interface can be + reached through the special URL <a href= + "http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a> (shortcut: <a href= + "http://p.p/" target="_top">http://p.p/</a>), which is a built-in + page and works without Internet access. You will see the following + section: + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + +</pre> + <h2 class="BRIDGEHEAD"> + <a name="AEN941"></a> Privoxy Menu + </h2> +<pre> +</pre> + <table border="0"> + <tbody> + <tr> + <td> + ▪ <a + href="http://config.privoxy.org/show-status" target= + "_top">View & change the current configuration</a> + </td> + </tr> + <tr> + <td> + ▪ <a + href="http://config.privoxy.org/show-version" target= + "_top">View the source code version numbers</a> + </td> + </tr> + <tr> + <td> + ▪ <a + href="http://config.privoxy.org/show-request" target= + "_top">View the request headers.</a> + </td> + </tr> + <tr> + <td> + ▪ <a + href="http://config.privoxy.org/show-url-info" target= + "_top">Look up which actions apply to a URL and why</a> + + </td> + </tr> + <tr> + <td> + ▪ <a + href="http://config.privoxy.org/toggle" target= + "_top">Toggle Privoxy on or off</a> + </td> + </tr> + <tr> + <td> + ▪ <a + href="http://www.privoxy.org/3.0.18/user-manual/" + target="_top">Documentation</a> + </td> + </tr> + </tbody> + </table> +<pre> +</pre> + </td> + </tr> + </table> + <p> + This should be self-explanatory. Note the first item leads to an + editor for the <a href="actions-file.html">actions files</a>, which + is where the ad, banner, cookie, and URL blocking magic is + configured as well as other advanced features of <span class= + "APPLICATION">Privoxy</span>. This is an easy way to adjust various + aspects of <span class="APPLICATION">Privoxy</span> configuration. + The actions file, and other configuration files, are explained in + detail below. + </p> + <p> + <span class="QUOTE">"Toggle Privoxy On or Off"</span> 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 + <span class="APPLICATION">Privoxy</span> causing the problem or + not. <span class="APPLICATION">Privoxy</span> continues to run as a + proxy in this case, but all manipulation is disabled, i.e. <span + class="APPLICATION">Privoxy</span> acts like a normal forwarding + proxy. There is even a toggle <a href= + "appendix.html#BOOKMARKLETS">Bookmarklet</a> offered, so that you + can toggle <span class="APPLICATION">Privoxy</span> with one click + from your browser. + </p> + <p> + Note that several of the features described above are disabled by + default in <span class="APPLICATION">Privoxy</span> 3.0.7 beta and + later. Check the <a href="config.html" target="_top">configuration + file</a> to learn why and in which cases it's safe to enable them + again. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CONFOVERVIEW">6.2. Configuration Files Overview</a> + </h2> + <p> + For Unix, *BSD and Linux, all configuration files are located in + <tt class="FILENAME">/etc/privoxy/</tt> by default. For MS Windows, + OS/2, and AmigaOS these are all in the same directory as the <span + class="APPLICATION">Privoxy</span> executable. The name and number + of configuration files has changed from previous versions, and is + subject to change as development progresses. + </p> + <p> + 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: + </p> + <p> + </p> + <ul> + <li> + <p> + The <a href="config.html">main configuration file</a> is named + <tt class="FILENAME">config</tt> on Linux, Unix, BSD, OS/2, and + AmigaOS and <tt class="FILENAME">config.txt</tt> on Windows. + This is a required file. + </p> + </li> + <li> + <p> + <tt class="FILENAME">match-all.action</tt> is used to define + which <span class="QUOTE">"actions"</span> relating to + banner-blocking, images, pop-ups, content modification, cookie + handling etc should be applied by default. It should be the + first actions file loaded. + </p> + <p> + <tt class="FILENAME">default.action</tt> defines many + exceptions (both positive and negative) from the default set of + actions that's configured in <tt class= + "FILENAME">match-all.action</tt>. It should be the second + actions file loaded and shouldn't be edited by the user. + </p> + <p> + Multiple actions files may be defined in <tt class= + "FILENAME">config</tt>. These are processed in the order they + are defined. Local customizations and locally preferred + exceptions to the default policies as defined in <tt class= + "FILENAME">match-all.action</tt> (which you will most probably + want to define sooner or later) are best applied in <tt class= + "FILENAME">user.action</tt>, where you can preserve them across + upgrades. The file isn't installed by all installers, but you + can easily create it yourself with a text editor. + </p> + <p> + There is also a web based editor that can be accessed from <a + href="http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a> (Shortcut: <a + href="http://p.p/show-status" target= + "_top">http://p.p/show-status</a>) for the various actions + files. + </p> + </li> + <li> + <p> + <span class="QUOTE">"Filter files"</span> (the <a href= + "filter-file.html">filter file</a>) 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. <tt class= + "FILENAME">default.filter</tt> includes various filters made + available for use by the developers. Some are much more + intrusive than others, and all should be used with caution. You + may define additional filter files in <tt class= + "FILENAME">config</tt> as you can with actions files. We + suggest <tt class="FILENAME">user.filter</tt> for any locally + defined filters or customizations. + </p> + </li> + </ul> + + <p> + The syntax of the configuration and filter files may change between + different Privoxy versions, unfortunately some enhancements cost + backwards compatibility. + </p> + <p> + All files use the <span class="QUOTE">"<tt class= + "LITERAL">#</tt>"</span> character to denote a comment (the rest of + the line will be ignored) and understand line continuation through + placing a backslash ("<tt class="LITERAL">\</tt>") as the very last + character in a line. If the <tt class="LITERAL">#</tt> is preceded + by a backslash, it looses its special function. Placing a <tt + class="LITERAL">#</tt> in front of an otherwise valid configuration + line to prevent it from being interpreted is called "commenting + out" that line. Blank lines are ignored. + </p> + <p> + The actions files and filter files can use Perl style <a href= + "appendix.html#REGEX">regular expressions</a> for maximum + flexibility. + </p> + <p> + After making any changes, there is no need to restart <span class= + "APPLICATION">Privoxy</span> in order for the changes to take + effect. <span class="APPLICATION">Privoxy</span> 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 <span class="APPLICATION">Privoxy</span>, + these <span class="QUOTE">"wake up"</span> requests must obviously + be sent to the <span class="emphasis"><i class= + "EMPHASIS">old</i></span> listening address. + </p> + <p> + 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 <span class= + "QUOTE">"default"</span> setting, may change, so please check all + your configuration files on important issues. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="startup.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="config.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Starting Privoxy + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + The Main Configuration File + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/contact.html b/doc/webserver/user-manual/contact.html index 5b8d72f7..189114c3 100644 --- a/doc/webserver/user-manual/contact.html +++ b/doc/webserver/user-manual/contact.html @@ -1,567 +1,407 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Contacting the Developers, Bug Reporting and Feature -Requests</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Privoxy's Template Files" -HREF="templates.html"><LINK -REL="NEXT" -TITLE="Privoxy Copyright, License and History" -HREF="copyright.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="templates.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="copyright.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="CONTACT" ->11. Contacting the Developers, Bug Reporting and Feature -Requests</A -></H1 -><P -> We value your feedback. In fact, we rely on it to improve - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and its configuration. - However, please note the following hints, so we can - provide you with the best support:</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CONTACT-SUPPORT" ->11.1. Get Support</A -></H2 -><P -> For casual users, our - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118" -TARGET="_top" ->support forum at SourceForge</A -> - is probably best suited: - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118" -TARGET="_top" ->http://sourceforge.net/tracker/?group_id=11118&atid=211118</A -></P -><P -> All users are of course welcome to discuss their issues on the <A -HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-users" -TARGET="_top" ->users - mailing list</A ->, where the developers also hang around.</P -><P -> Please don't sent private support requests to individual Privoxy - developers, either use the mailing lists or the support trackers.</P -><P -> If you have to contact a Privoxy developer directly for other reasons, - please send a real mail and do not bother with SourceForge's messaging - system. Answers to SourceForge messages are usually bounced by SourceForge's - mail server in which case the developer wasted time writing a response you - don't get. From your point of view it will look like your message has - been completely ignored, so this is frustrating for all parties involved.</P -><P -> Note that the Privoxy mailing lists are moderated. Posts from unsubscribed - addresses have to be accepted manually by a moderator. This may cause a - delay of several days and if you use a subject that doesn't clearly - mention Privoxy or one of its features, your message may be accidentally - discarded as spam.</P -><P -> If you aren't subscribed, you should therefore spend a few seconds - to come up with a proper subject. Additionally you should make it clear - that you want to get CC'd. Otherwise some responses will be directed to - the mailing list only, and you won't see them.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="REPORTING" ->11.2. Reporting Problems</A -></H2 -><P -><SPAN -CLASS="QUOTE" ->"Problems"</SPAN -> for our purposes, come in two forms:</P -><P -></P -><UL -><LI -><P -> Configuration issues, such as ads that slip through, or sites that - don't function properly due to one <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - <SPAN -CLASS="QUOTE" ->"action"</SPAN -> or another being turned <SPAN -CLASS="QUOTE" ->"on"</SPAN ->. - </P -></LI -><LI -><P -> <SPAN -CLASS="QUOTE" ->"Bugs"</SPAN -> in the programming code that makes up - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, such as that might cause a crash. - </P -></LI -></UL -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="CONTACT-ADS" ->11.2.1. Reporting Ads or Other Configuration Problems</A -></H3 -><P -> Please send feedback on ads that slipped through, innocent images that were - blocked, sites that don't work properly, and other configuration related problem of - <TT -CLASS="FILENAME" ->default.action</TT -> file, to - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=460288" -TARGET="_top" -> http://sourceforge.net/tracker/?group_id=11118&atid=460288</A ->, - the Actions File Tracker.</P -><P -> New, improved <TT -CLASS="FILENAME" ->default.action</TT -> files may occasionally be made - available based on your feedback. These will be announced on the <A -HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-announce" -TARGET="_top" ->ijbswa-announce</A -> - list and available from our the <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->files section</A -> of - our <A -HREF="http://sf.net/projects/ijbswa/" -TARGET="_top" ->project page</A ->.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="CONTACT-BUGS" ->11.2.2. Reporting Bugs</A -></H3 -><P -> Please report all bugs through our bug tracker: - <A -HREF="http://sourceforge.net/tracker/?group_id=11118&atid=111118" -TARGET="_top" ->http://sourceforge.net/tracker/?group_id=11118&atid=111118</A ->. </P -><P -> Before doing so, please make sure that the bug has <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not already been submitted</I -></SPAN -> - and observe the additional hints at the top of the <A -HREF="http://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118" -TARGET="_top" ->submit - form</A ->. If already submitted, please feel free to add any info to the - original report that might help to solve the issue.</P -><P -> Please try to verify that it is a <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> bug, - and not a browser or site bug or documented behaviour that just happens - to be different than what you expected. If unsure, - try <A -HREF="http://config.privoxy.org/toggle?set=disable" -TARGET="_top" ->toggling - off</A -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, and see if the problem persists.</P -><P -> If you are using your own custom configuration, please try - the stock configs to see if the problem is configuration related. - If you're having problems with a feature that is disabled by default, - please ask around on the mailing list if others can reproduce the problem.</P -><P -> If you aren't using the latest Privoxy version, the bug may have been found - and fixed in the meantime. We would appreciate if you could take the time - to <A -HREF="http://www.privoxy.org/user-manual/installation.html" -TARGET="_top" ->upgrade - to the latest version</A -> (or even the latest CVS snapshot) and verify - that your bug still exists.</P -><P ->Please be sure to provide the following information:</P -><P -> <P -></P -><UL -><LI -><P -> The exact <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version you are using - (if you got the source from CVS, please also provide the source code revisions - as shown in <A -HREF="http://config.privoxy.org/show-version" -TARGET="_top" ->http://config.privoxy.org/show-version</A ->). - </P -></LI -><LI -><P -> The operating system and versions you run - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on, (e.g. <SPAN -CLASS="APPLICATION" ->Windows - XP SP2</SPAN ->), if you are using a Unix flavor, - sending the output of <SPAN -CLASS="QUOTE" ->"uname -a"</SPAN -> should do, - in case of GNU/Linux, please also name the distribution. - </P -></LI -><LI -><P -> The name, platform, and version of the <SPAN -CLASS="APPLICATION" ->browser</SPAN -> - you were using (e.g. <SPAN -CLASS="APPLICATION" ->Internet Explorer v5.5</SPAN -> for Mac). - </P -></LI -><LI -><P -> The URL where the problem occurred, or some way for us to duplicate the - problem (e.g. <TT -CLASS="LITERAL" ->http://somesite.example.com/?somethingelse=123</TT ->). - </P -></LI -><LI -><P -> Whether your version of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is one supplied - by the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> developers via SourceForge, - or if you got your copy somewhere else. - </P -></LI -><LI -><P -> Whether you are using <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in tandem with - another proxy such as <SPAN -CLASS="APPLICATION" ->Tor</SPAN ->. If so, please - temporary disable the other proxy to see if the symptoms change. - </P -></LI -><LI -><P -> Whether you are using a personal firewall product. If so, does - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> work without it? - </P -></LI -><LI -><P -> Any other pertinent information to help identify the problem such as config - or log file excerpts (yes, you should have log file entries for each - action taken). To get a meaningful logfile, please make sure that the - <A -HREF="../user-manual/config.html#LOGFILE" -TARGET="_top" ->logfile directive</A -> - is being used and the following <A -HREF="../user-manual/config.html#DEBUG" -TARGET="_top" ->debug options</A -> are enabled: - <P -CLASS="LITERALLAYOUT" ->debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.<br> -debug 2 # show each connection status<br> -debug 4 # show I/O status<br> -debug 8 # show header parsing<br> -debug 128 # debug redirects<br> -debug 256 # debug GIF de-animation<br> -debug 512 # Common Log Format<br> -debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.<br> -debug 4096 # Startup banner and warnings.<br> -debug 8192 # Non-fatal errors</P -> - If you are having trouble with a filter, please additionally enable - <P -CLASS="LITERALLAYOUT" ->debug 64 # debug regular expression filters</P -> - If you are using Privoxy 3.0.17 or later and suspect that it interprets the - request or the response incorrectly, please enable - <P -CLASS="LITERALLAYOUT" ->debug 32768 # log all data read from the network</P -> - Note that Privoxy log files may contain sensitive information so please don't - submit any logfiles you didn't read first. You can mask sensitive information - as long as it's clear that you removed something. - </P -></LI -></UL -></P -><P -> You don't have to tell us your actual name when filing a problem - report, but if you don't, please use a nickname so we can differentiate - between your messages and the ones entered by other "anonymous" users that - may respond to your request if they have the same problem or already - found a solution. Note that due to spam the trackers may not always - allow to post without being logged into SourceForge. If that's the - case, you are still free to create a login that isn't directly linked - to your name, though.</P -><P -> Please also check the status of your request a few days after submitting - it, as we may request additional information. If you use a SF id, - you should automatically get a mail when someone responds to your request. - Please don't bother to add an email address when using the tracker. - If you prefer to communicate through email, just use one of the mailing - lists directly.</P -><P -> The <A -HREF="http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" -TARGET="_top" ->appendix - of the Privoxy User Manual</A -> also has helpful information - on understanding <TT -CLASS="LITERAL" ->actions</TT ->, and <TT -CLASS="LITERAL" ->action</TT -> debugging. </P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CONTACT-FEATURE" ->11.3. Request New Features</A -></H2 -><P -> You are welcome to submit ideas on new features or other proposals - for improvement through our feature request tracker at - <A -HREF="http://sourceforge.net/tracker/?atid=361118&group_id=11118" -TARGET="_top" ->http://sourceforge.net/tracker/?atid=361118&group_id=11118</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="MAILING-LISTS" ->11.4. Mailing Lists</A -></H2 -><P ->If you prefer to communicate through email, instead of using a web interface, -feel free to use one of the mailing lists. -To discuss issues that haven't been completely diagnosed yet, please use the Privoxy -users list. Technically interested users and people who wish to contribute to -the project are always welcome on the developers list. -You can find an overview of all <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->-related mailing lists, -including list archives, at: -<A -HREF="http://sourceforge.net/mail/?group_id=11118" -TARGET="_top" ->http://sourceforge.net/mail/?group_id=11118</A ->.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="templates.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="copyright.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Privoxy's Template Files</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Privoxy Copyright, License and History</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Contacting the Developers, Bug Reporting and Feature Requests + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Privoxy's Template Files" href= + "templates.html"> + <link rel="NEXT" title="Privoxy Copyright, License and History" href= + "copyright.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="templates.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="copyright.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="CONTACT">11. Contacting the Developers, Bug Reporting and + Feature Requests</a> + </h1> + <p> + We value your feedback. In fact, we rely on it to improve <span + class="APPLICATION">Privoxy</span> and its configuration. However, + please note the following hints, so we can provide you with the best + support: + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CONTACT-SUPPORT">11.1. Get Support</a> + </h2> + <p> + For casual users, our <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=211118" + target="_top">support forum at SourceForge</a> is probably best + suited: <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=211118" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=211118</a> + </p> + <p> + All users are of course welcome to discuss their issues on the <a + href="http://lists.sourceforge.net/lists/listinfo/ijbswa-users" + target="_top">users mailing list</a>, where the developers also + hang around. + </p> + <p> + Please don't sent private support requests to individual Privoxy + developers, either use the mailing lists or the support trackers. + </p> + <p> + If you have to contact a Privoxy developer directly for other + reasons, please send a real mail and do not bother with + SourceForge's messaging system. Answers to SourceForge messages are + usually bounced by SourceForge's mail server in which case the + developer wasted time writing a response you don't get. From your + point of view it will look like your message has been completely + ignored, so this is frustrating for all parties involved. + </p> + <p> + Note that the Privoxy mailing lists are moderated. Posts from + unsubscribed addresses have to be accepted manually by a moderator. + This may cause a delay of several days and if you use a subject + that doesn't clearly mention Privoxy or one of its features, your + message may be accidentally discarded as spam. + </p> + <p> + If you aren't subscribed, you should therefore spend a few seconds + to come up with a proper subject. Additionally you should make it + clear that you want to get CC'd. Otherwise some responses will be + directed to the mailing list only, and you won't see them. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="REPORTING">11.2. Reporting Problems</a> + </h2> + <p> + <span class="QUOTE">"Problems"</span> for our purposes, come in two + forms: + </p> + <ul> + <li> + <p> + Configuration issues, such as ads that slip through, or sites + that don't function properly due to one <span class= + "APPLICATION">Privoxy</span> <span class= + "QUOTE">"action"</span> or another being turned <span class= + "QUOTE">"on"</span>. + </p> + </li> + <li> + <p> + <span class="QUOTE">"Bugs"</span> in the programming code that + makes up <span class="APPLICATION">Privoxy</span>, such as that + might cause a crash. + </p> + </li> + </ul> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="CONTACT-ADS">11.2.1. Reporting Ads or Other + Configuration Problems</a> + </h3> + <p> + Please send feedback on ads that slipped through, innocent images + that were blocked, sites that don't work properly, and other + configuration related problem of <tt class= + "FILENAME">default.action</tt> file, to <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=460288" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, + the Actions File Tracker. + </p> + <p> + New, improved <tt class="FILENAME">default.action</tt> files may + occasionally be made available based on your feedback. These will + be announced on the <a href= + "http://lists.sourceforge.net/lists/listinfo/ijbswa-announce" + target="_top">ijbswa-announce</a> list and available from our the + <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">files section</a> of our <a href= + "http://sf.net/projects/ijbswa/" target="_top">project page</a>. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="CONTACT-BUGS">11.2.2. Reporting Bugs</a> + </h3> + <p> + Please report all bugs through our bug tracker: <a href= + "http://sourceforge.net/tracker/?group_id=11118&atid=111118" + target= + "_top">http://sourceforge.net/tracker/?group_id=11118&atid=111118</a>. + </p> + <p> + Before doing so, please make sure that the bug has <span class= + "emphasis"><i class="EMPHASIS">not already been + submitted</i></span> and observe the additional hints at the top + of the <a href= + "http://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118" + target="_top">submit form</a>. If already submitted, please feel + free to add any info to the original report that might help to + solve the issue. + </p> + <p> + Please try to verify that it is a <span class= + "APPLICATION">Privoxy</span> bug, and not a browser or site bug + or documented behaviour that just happens to be different than + what you expected. If unsure, try <a href= + "http://config.privoxy.org/toggle?set=disable" target= + "_top">toggling off</a> <span class="APPLICATION">Privoxy</span>, + and see if the problem persists. + </p> + <p> + If you are using your own custom configuration, please try the + stock configs to see if the problem is configuration related. If + you're having problems with a feature that is disabled by + default, please ask around on the mailing list if others can + reproduce the problem. + </p> + <p> + If you aren't using the latest Privoxy version, the bug may have + been found and fixed in the meantime. We would appreciate if you + could take the time to <a href= + "http://www.privoxy.org/user-manual/installation.html" target= + "_top">upgrade to the latest version</a> (or even the latest CVS + snapshot) and verify that your bug still exists. + </p> + <p> + Please be sure to provide the following information: + </p> + <p> + </p> + <ul> + <li> + <p> + The exact <span class="APPLICATION">Privoxy</span> version + you are using (if you got the source from CVS, please also + provide the source code revisions as shown in <a href= + "http://config.privoxy.org/show-version" target= + "_top">http://config.privoxy.org/show-version</a>). + </p> + </li> + <li> + <p> + The operating system and versions you run <span class= + "APPLICATION">Privoxy</span> on, (e.g. <span class= + "APPLICATION">Windows XP SP2</span>), if you are using a Unix + flavor, sending the output of <span class="QUOTE">"uname + -a"</span> should do, in case of GNU/Linux, please also name + the distribution. + </p> + </li> + <li> + <p> + The name, platform, and version of the <span class= + "APPLICATION">browser</span> you were using (e.g. <span + class="APPLICATION">Internet Explorer v5.5</span> for Mac). + </p> + </li> + <li> + <p> + The URL where the problem occurred, or some way for us to + duplicate the problem (e.g. <tt class= + "LITERAL">http://somesite.example.com/?somethingelse=123</tt>). + </p> + </li> + <li> + <p> + Whether your version of <span class= + "APPLICATION">Privoxy</span> is one supplied by the <span + class="APPLICATION">Privoxy</span> developers via + SourceForge, or if you got your copy somewhere else. + </p> + </li> + <li> + <p> + Whether you are using <span class= + "APPLICATION">Privoxy</span> in tandem with another proxy + such as <span class="APPLICATION">Tor</span>. If so, please + temporary disable the other proxy to see if the symptoms + change. + </p> + </li> + <li> + <p> + Whether you are using a personal firewall product. If so, + does <span class="APPLICATION">Privoxy</span> work without + it? + </p> + </li> + <li> + <p> + Any other pertinent information to help identify the problem + such as config or log file excerpts (yes, you should have log + file entries for each action taken). To get a meaningful + logfile, please make sure that the <a href= + "../user-manual/config.html#LOGFILE" target="_top">logfile + directive</a> is being used and the following <a href= + "../user-manual/config.html#DEBUG" target="_top">debug + options</a> are enabled: + </p> + <p class="LITERALLAYOUT"> + debug 1 # Log the destination for each request Privoxy let through. See also debug 1024.<br> + + debug 2 # show each connection status<br> + + debug 4 # show I/O status<br> + + debug 8 # show header parsing<br> + + debug 128 # debug redirects<br> + + debug 256 # debug GIF de-animation<br> + + debug 512 # Common Log Format<br> + + debug 1024 # Log the destination for requests Privoxy didn't let through, and the reason why.<br> + + debug 4096 # Startup banner and warnings.<br> + + debug 8192 # Non-fatal errors + </p> + If you are having trouble with a filter, please additionally + enable + <p class="LITERALLAYOUT"> + debug 64 # debug regular expression filters + </p> + If you are using Privoxy 3.0.17 or later and suspect that it + interprets the request or the response incorrectly, please + enable + <p class="LITERALLAYOUT"> + debug 32768 # log all data read from the network + </p> + Note that Privoxy log files may contain sensitive information + so please don't submit any logfiles you didn't read first. You + can mask sensitive information as long as it's clear that you + removed something.<br> + </li> + </ul> + + <p> + You don't have to tell us your actual name when filing a problem + report, but if you don't, please use a nickname so we can + differentiate between your messages and the ones entered by other + "anonymous" users that may respond to your request if they have + the same problem or already found a solution. Note that due to + spam the trackers may not always allow to post without being + logged into SourceForge. If that's the case, you are still free + to create a login that isn't directly linked to your name, + though. + </p> + <p> + Please also check the status of your request a few days after + submitting it, as we may request additional information. If you + use a SF id, you should automatically get a mail when someone + responds to your request. Please don't bother to add an email + address when using the tracker. If you prefer to communicate + through email, just use one of the mailing lists directly. + </p> + <p> + The <a href= + "http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT" + target="_top">appendix of the Privoxy User Manual</a> also has + helpful information on understanding <tt class= + "LITERAL">actions</tt>, and <tt class="LITERAL">action</tt> + debugging. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CONTACT-FEATURE">11.3. Request New Features</a> + </h2> + <p> + You are welcome to submit ideas on new features or other proposals + for improvement through our feature request tracker at <a href= + "http://sourceforge.net/tracker/?atid=361118&group_id=11118" + target= + "_top">http://sourceforge.net/tracker/?atid=361118&group_id=11118</a>. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="MAILING-LISTS">11.4. Mailing Lists</a> + </h2> + <p> + If you prefer to communicate through email, instead of using a web + interface, feel free to use one of the mailing lists. To discuss + issues that haven't been completely diagnosed yet, please use the + Privoxy users list. Technically interested users and people who + wish to contribute to the project are always welcome on the + developers list. You can find an overview of all <span class= + "APPLICATION">Privoxy</span>-related mailing lists, including list + archives, at: <a href="http://sourceforge.net/mail/?group_id=11118" + target="_top">http://sourceforge.net/mail/?group_id=11118</a>. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="templates.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="copyright.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Privoxy's Template Files + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Privoxy Copyright, License and History + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/copyright.html b/doc/webserver/user-manual/copyright.html index 1f078cbf..217336e8 100644 --- a/doc/webserver/user-manual/copyright.html +++ b/doc/webserver/user-manual/copyright.html @@ -1,430 +1,306 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy Copyright, License and History</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Contacting the Developers, Bug Reporting and Feature -Requests" -HREF="contact.html"><LINK -REL="NEXT" -TITLE="See Also" -HREF="seealso.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="contact.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="seealso.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="COPYRIGHT" ->12. Privoxy Copyright, License and History</A -></H1 -><P -> Copyright © 2001-2011 by Privoxy Developers <CODE -CLASS="EMAIL" -><<A -HREF="mailto:ijbswa-developers@lists.sourceforge.net" ->ijbswa-developers@lists.sourceforge.net</A ->></CODE -></P -><P -> Some source code is based on code Copyright © 1997 by Anonymous Coders - and Junkbusters, Inc. and licensed under the <I -CLASS="CITETITLE" ->GNU General Public - License</I ->.</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN5383" ->12.1. License</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is free software; you can - redistribute it and/or modify it under the terms of the - <I -CLASS="CITETITLE" ->GNU General Public License</I ->, version 2, - as published by the Free Software Foundation.</P -><P -> 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 <A -HREF="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" -TARGET="_top" -> <I -CLASS="CITETITLE" ->GNU General Public License</I -></A -> for details.</P -><P -> You should have received a copy of the <I -CLASS="CITETITLE" ->GNU GPL</I -> - along with this program; if not, write to the <P -CLASS="ADDRESS" -> Free Software<br> - Foundation, Inc. <SPAN -CLASS="STREET" ->51 Franklin Street, Fifth Floor</SPAN -><br> - <SPAN -CLASS="CITY" ->Boston</SPAN ->, <SPAN -CLASS="STATE" ->MA</SPAN -> <SPAN -CLASS="POSTCODE" ->02110-1301</SPAN -><br> - <SPAN -CLASS="COUNTRY" ->USA</SPAN -> </P -></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="HISTORY" ->12.2. History</A -></H2 -><P -> A long time ago, there was the - <A -HREF="http://www.junkbusters.com/ijb.html" -TARGET="_top" -><SPAN -CLASS="APPLICATION" ->Internet Junkbuster</SPAN -></A ->, - by Anonymous Coders and <A -HREF="http://www.junkbusters.com/" -TARGET="_top" ->Junkbusters - Corporation</A ->. This saved many users a lot of pain in the early days of - web advertising and user tracking.</P -><P -> But the web, its protocols and standards, and with it, the techniques for - forcing ads on users, give up autonomy over their browsing, and - for tracking them, keeps evolving. Unfortunately, the <SPAN -CLASS="APPLICATION" ->Internet - Junkbuster</SPAN -> did not. Version 2.0.2, published in 1998, was - (and is) the last official - <A -HREF="http://www.junkbusters.com/ijbdist.html#release" -TARGET="_top" ->release</A -> - available from <A -HREF="http://www.junkbusters.com" -TARGET="_top" ->Junkbusters Corporation</A ->. - Fortunately, it had been released under the GNU - <A -HREF="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" -TARGET="_top" ->GPL</A ->, - which allowed further development by others.</P -><P -> So Stefan Waldherr started maintaining an improved version of the - software, to which eventually a number of people contributed patches. - It could already replace banners with a transparent image, and had a first - version of pop-up killing, but it was still very closely based on the - original, with all its limitations, such as the lack of HTTP/1.1 support, - flexible per-site configuration, or content modification. The last release - from this effort was version 2.0.2-10, published in 2000.</P -><P -> Then, some - <A -HREF="http://www.privoxy.org/user-manual/copyright.html#AUTHORS" -TARGET="_top" ->developers</A -> - picked up the thread, and started turning the software inside out, upside down, - and then reassembled it, adding many - <A -HREF="http://www.privoxy.org/user-manual/introduction.html#FEATURES" -TARGET="_top" ->new - features</A -> along the way.</P -><P -> The result of this is <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, whose first - stable version, 3.0, was released August, 2002. - </P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AUTHORS" ->12.3. Authors</A -></H2 -><P ->Current Privoxy Team:</P -><P -CLASS="LITERALLAYOUT" -> Fabian Keil, lead developer<br> - David Schmidt, developer<br> -<br> - Hal Burgiss<br> - Mark Miller<br> - Gerry Murphy<br> - Lee Rian<br> - Roland Rosenfeld</P -><P -> Former Privoxy Team Members:</P -><P -CLASS="LITERALLAYOUT" -> Johny Agotnes<br> - Rodrigo Barbosa<br> - Moritz Barsnick<br> - Ian Cummings<br> - Brian Dessent<br> - Jon Foster<br> - Karsten Hopp<br> - Alexander Lazic<br> - Daniel Leite<br> - Gábor Lipták<br> - Adam Lock<br> - Guy Laroche<br> - Justin McMurtry<br> - Andreas Oesterhelt<br> - Haroon Rafique<br> - Georg Sauthoff<br> - Thomas Steudten<br> - Jörg Strohmayer<br> - Rodney Stromlund<br> - Sviatoslav Sviridov<br> - Sarantis Paskalis<br> - Stefan Waldherr</P -><P -> Thanks to the many people who have tested Privoxy, reported bugs, provided - patches, made suggestions or contributed in some way. These include (in - alphabetical order):</P -><P -CLASS="LITERALLAYOUT" -> Ken Arromdee<br> - Devin Bayer<br> - Havard Berland<br> - Gergely Bor<br> - Francois Botha<br> - Reiner Buehl<br> - Andrew J. Caines<br> - Clifford Caoile<br> - Wan-Teh Chang<br> - Frédéric Crozat<br> - Michael T. Davis<br> - Mattes Dolak<br> - Matthias Drochner<br> - Peter E.<br> - Florian Effenberger<br> - Markus Elfring<br> - Dean Gaudet<br> - Stephen Gildea<br> - Daniel Griscom<br> - Felix Gröbert<br> - Jeff H.<br> - Aaron Hamid<br> - Darel Henman<br> - Magnus Holmgren<br> - Eric M. Hopper<br> - Ralf Horstmann<br> - Stefan Huehner<br> - Peter Hyman<br> - Derek Jennings<br> - Petr Kadlec<br> - David Laight<br> - Bert van Leeuwen<br> - Don Libes<br> - Paul Lieverse<br> - Toby Lyward<br> - Wil Mahan<br> - Jindrich Makovicka<br> - Francois Marier<br> - David Mediavilla<br> - Raphael Moll<br> - Amuro Namie<br> - Adam Piggott<br> - Petr PÃsar<br> - Dan Price<br> - Roberto Ragusa<br> - Félix Rauch<br> - Maynard Riley<br> - Chung-chieh Shan<br> - Spinor S.<br> - Bart Schelstraete<br> - Oliver Stoeneberg<br> - Peter Thoenen<br> - Martin Thomas<br> - Bobby G. Vinyard<br> - Jochen Voss<br> - Glenn Washburn<br> - Song Weijia<br> - Jörg Weinmann<br> - Darren Wiebe<br> - Anduin Withers<br> - Oliver Yeoh<br> - Jamie Zawinski</P -><P -> Privoxy is based in part on code originally developed by - Junkbusters Corp. and Anonymous Coders.</P -><P -> Privoxy heavily relies on Philip Hazel's PCRE.</P -><P -> The code to filter compressed content makes use of zlib - which is written by Jean-loup Gailly and Mark Adler.</P -><P -> On systems that lack snprintf(), Privoxy is using a version - written by Mark Martinec. On systems that lack strptime(), - Privoxy is using the one from the GNU C Library written - by Ulrich Drepper.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="contact.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="seealso.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Contacting the Developers, Bug Reporting and Feature -Requests</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->See Also</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy Copyright, License and History + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title= + "Contacting the Developers, Bug Reporting and Feature Requests" href= + "contact.html"> + <link rel="NEXT" title="See Also" href="seealso.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="contact.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="seealso.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="COPYRIGHT">12. Privoxy Copyright, License and History</a> + </h1> + <p> + Copyright © 2001-2011 by Privoxy Developers <code class= + "EMAIL"><<a href= + "mailto:ijbswa-developers@lists.sourceforge.net">ijbswa-developers@lists.sourceforge.net</a>></code> + </p> + <p> + Some source code is based on code Copyright © 1997 by Anonymous + Coders and Junkbusters, Inc. and licensed under the <i class= + "CITETITLE">GNU General Public License</i>. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN5383">12.1. License</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span> is free software; you can + redistribute it and/or modify it under the terms of the <i class= + "CITETITLE">GNU General Public License</i>, version 2, as published + by the Free Software Foundation. + </p> + <p> + 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 <a + href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + target="_top"><i class="CITETITLE">GNU General Public + License</i></a> for details. + </p> + <p> + You should have received a copy of the <i class="CITETITLE">GNU + GPL</i> along with this program; if not, write to the + </p> + <p class="ADDRESS"> + Free Software<br> + Foundation, Inc. <span class="STREET">51 Franklin + Street, Fifth Floor</span><br> + <span class="CITY">Boston</span>, <span class= + "STATE">MA</span> <span class="POSTCODE">02110-1301</span><br> + <span class="COUNTRY">USA</span> + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="HISTORY">12.2. History</a> + </h2> + <p> + A long time ago, there was the <a href= + "http://www.junkbusters.com/ijb.html" target="_top"><span class= + "APPLICATION">Internet Junkbuster</span></a>, by Anonymous Coders + and <a href="http://www.junkbusters.com/" target="_top">Junkbusters + Corporation</a>. This saved many users a lot of pain in the early + days of web advertising and user tracking. + </p> + <p> + But the web, its protocols and standards, and with it, the + techniques for forcing ads on users, give up autonomy over their + browsing, and for tracking them, keeps evolving. Unfortunately, the + <span class="APPLICATION">Internet Junkbuster</span> did not. + Version 2.0.2, published in 1998, was (and is) the last official <a + href="http://www.junkbusters.com/ijbdist.html#release" target= + "_top">release</a> available from <a href= + "http://www.junkbusters.com" target="_top">Junkbusters + Corporation</a>. Fortunately, it had been released under the GNU <a + href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + target="_top">GPL</a>, which allowed further development by others. + </p> + <p> + So Stefan Waldherr started maintaining an improved version of the + software, to which eventually a number of people contributed + patches. It could already replace banners with a transparent image, + and had a first version of pop-up killing, but it was still very + closely based on the original, with all its limitations, such as + the lack of HTTP/1.1 support, flexible per-site configuration, or + content modification. The last release from this effort was version + 2.0.2-10, published in 2000. + </p> + <p> + Then, some <a href= + "http://www.privoxy.org/user-manual/copyright.html#AUTHORS" target= + "_top">developers</a> picked up the thread, and started turning the + software inside out, upside down, and then reassembled it, adding + many <a href= + "http://www.privoxy.org/user-manual/introduction.html#FEATURES" + target="_top">new features</a> along the way. + </p> + <p> + The result of this is <span class="APPLICATION">Privoxy</span>, + whose first stable version, 3.0, was released August, 2002. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AUTHORS">12.3. Authors</a> + </h2> + <p> + Current Privoxy Team: + </p> + <p class="LITERALLAYOUT"> + Fabian Keil, lead developer<br> + David Schmidt, developer<br> + Hal Burgiss<br> + Mark Miller<br> + Gerry Murphy<br> + Lee Rian<br> + Roland Rosenfeld + </p> + <p> + Former Privoxy Team Members: + </p> + <p class="LITERALLAYOUT"> + Johny Agotnes<br> + Rodrigo Barbosa<br> + Moritz Barsnick<br> + Ian Cummings<br> + Brian Dessent<br> + Jon Foster<br> + Karsten Hopp<br> + Alexander Lazic<br> + Daniel Leite<br> + Gábor Lipták<br> + Adam Lock<br> + Guy Laroche<br> + Justin McMurtry<br> + Andreas Oesterhelt<br> + Haroon Rafique<br> + Georg Sauthoff<br> + Thomas Steudten<br> + Jörg Strohmayer<br> + Rodney Stromlund<br> + Sviatoslav Sviridov<br> + Sarantis Paskalis<br> + Stefan Waldherr + </p> + <p> + Thanks to the many people who have tested Privoxy, reported bugs, + provided patches, made suggestions or contributed in some way. + These include (in alphabetical order): + </p> + <p class="LITERALLAYOUT"> + Ken Arromdee<br> + Devin Bayer<br> + Havard Berland<br> + Gergely Bor<br> + Francois Botha<br> + Reiner Buehl<br> + Andrew J. Caines<br> + Clifford Caoile<br> + Wan-Teh Chang<br> + Frédéric Crozat<br> + Michael T. Davis<br> + Mattes Dolak<br> + Matthias Drochner<br> + Peter E.<br> + Florian Effenberger<br> + Markus Elfring<br> + Dean Gaudet<br> + Stephen Gildea<br> + Daniel Griscom<br> + Felix Gröbert<br> + Jeff H.<br> + Aaron Hamid<br> + Darel Henman<br> + Magnus Holmgren<br> + Eric M. Hopper<br> + Ralf Horstmann<br> + Stefan Huehner<br> + Peter Hyman<br> + Derek Jennings<br> + Petr Kadlec<br> + David Laight<br> + Bert van Leeuwen<br> + Don Libes<br> + Paul Lieverse<br> + Toby Lyward<br> + Wil Mahan<br> + Jindrich Makovicka<br> + Francois Marier<br> + David Mediavilla<br> + Raphael Moll<br> + Amuro Namie<br> + Adam Piggott<br> + Petr Písar<br> + Dan Price<br> + Roberto Ragusa<br> + Félix Rauch<br> + Maynard Riley<br> + Chung-chieh Shan<br> + Spinor S.<br> + Bart Schelstraete<br> + Oliver Stoeneberg<br> + Peter Thoenen<br> + Martin Thomas<br> + Bobby G. Vinyard<br> + Jochen Voss<br> + Glenn Washburn<br> + Song Weijia<br> + Jörg Weinmann<br> + Darren Wiebe<br> + Anduin Withers<br> + Oliver Yeoh<br> + Jamie Zawinski + </p> + <p> + Privoxy is based in part on code originally developed by + Junkbusters Corp. and Anonymous Coders. + </p> + <p> + Privoxy heavily relies on Philip Hazel's PCRE. + </p> + <p> + The code to filter compressed content makes use of zlib which is + written by Jean-loup Gailly and Mark Adler. + </p> + <p> + On systems that lack snprintf(), Privoxy is using a version written + by Mark Martinec. On systems that lack strptime(), Privoxy is using + the one from the GNU C Library written by Ulrich Drepper. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="contact.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="seealso.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Contacting the Developers, Bug Reporting and Feature Requests + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + See Also + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/filter-file.html b/doc/webserver/user-manual/filter-file.html index 330c5bd3..d48f67e7 100644 --- a/doc/webserver/user-manual/filter-file.html +++ b/doc/webserver/user-manual/filter-file.html @@ -1,867 +1,460 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Filter Files</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Actions Files" -HREF="actions-file.html"><LINK -REL="NEXT" -TITLE="Privoxy's Template Files" -HREF="templates.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="actions-file.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="templates.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="FILTER-FILE" ->9. Filter Files</A -></H1 -><P -> On-the-fly text substitutions need - to be defined in a <SPAN -CLASS="QUOTE" ->"filter file"</SPAN ->. Once defined, they - can then be invoked as an <SPAN -CLASS="QUOTE" ->"action"</SPAN ->.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> supports three different filter actions: - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->filter</A -></TT -> to - rewrite the content that is send to the client, - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CLIENT-HEADER-FILTER" ->client-header-filter</A -></TT -> - to rewrite headers that are send by the client, and - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SERVER-HEADER-FILTER" ->server-header-filter</A -></TT -> - to rewrite headers that are send by the server.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> also supports two tagger actions: - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CLIENT-HEADER-TAGGER" ->client-header-tagger</A -></TT -> - and - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SERVER-HEADER-TAGGER" ->server-header-tagger</A -></TT ->. - Taggers and filters use the same syntax in the filter files, the difference - is that taggers don't modify the text they are filtering, but use a rewritten - version of the filtered text as tag. The tags can then be used to change the - applying actions through sections with <A -HREF="actions-file.html#TAG-PATTERN" ->tag-patterns</A ->.</P -><P -> Multiple filter files can be defined through the <TT -CLASS="LITERAL" -> <A -HREF="config.html#FILTERFILE" ->filterfile</A -></TT -> config directive. The filters - as supplied by the developers are located in - <TT -CLASS="FILENAME" ->default.filter</TT ->. It is recommended that any locally - defined or modified filters go in a separately defined file such as - <TT -CLASS="FILENAME" ->user.filter</TT ->. - </P -><P -> Common tasks for content filters are to eliminate common annoyances in - HTML and JavaScript, such as pop-up windows, - exit consoles, crippled windows without navigation tools, the - infamous <BLINK> tag etc, to suppress images with certain - width and height attributes (standard banner sizes or web-bugs), - or just to have fun.</P -><P -> Enabled content filters are applied to any content whose - <SPAN -CLASS="QUOTE" ->"Content Type"</SPAN -> header is recognised as a sign - of text-based content, with the exception of <TT -CLASS="LITERAL" ->text/plain</TT ->. - Use the <A -HREF="actions-file.html#FORCE-TEXT-MODE" ->force-text-mode</A -> action - to also filter other content.</P -><P -> Substitutions are made at the source level, so if you want to <SPAN -CLASS="QUOTE" ->"roll - your own"</SPAN -> filters, you should first be familiar with HTML syntax, - and, of course, regular expressions.</P -><P -> Just like the <A -HREF="actions-file.html" ->actions files</A ->, the - filter file is organized in sections, which are called <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->filters</I -></SPAN -> - here. Each filter consists of a heading line, that starts with one of the - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->keywords</I -></SPAN -> <TT -CLASS="LITERAL" ->FILTER:</TT ->, - <TT -CLASS="LITERAL" ->CLIENT-HEADER-FILTER:</TT -> or <TT -CLASS="LITERAL" ->SERVER-HEADER-FILTER:</TT -> - followed by the filter's <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->name</I -></SPAN ->, and a short (one line) - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->description</I -></SPAN -> of what it does. Below that line - come the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->jobs</I -></SPAN ->, i.e. lines that define the actual - text substitutions. By convention, the name of a filter - should describe what the filter <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->eliminates</I -></SPAN ->. The - comment is used in the <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->web-based - user interface</A ->.</P -><P -> Once a filter called <TT -CLASS="REPLACEABLE" -><I ->name</I -></TT -> has been defined - in the filter file, it can be invoked by using an action of the form - +<TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->filter</A ->{<TT -CLASS="REPLACEABLE" -><I ->name</I -></TT ->}</TT -> - in any <A -HREF="actions-file.html" ->actions file</A ->.</P -><P -> Filter definitions start with a header line that contains the filter - type, the filter name and the filter description. - A content filter header line for a filter called <SPAN -CLASS="QUOTE" ->"foo"</SPAN -> could look - like this:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->FILTER: foo Replace all "foo" with "bar"</PRE -></TD -></TR -></TABLE -></P -><P -> Below that line, and up to the next header line, come the jobs that - define what text replacements the filter executes. They are specified - in a syntax that imitates <A -HREF="http://www.perl.org/" -TARGET="_top" ->Perl</A ->'s - <TT -CLASS="LITERAL" ->s///</TT -> operator. If you are familiar with Perl, you - will find this to be quite intuitive, and may want to look at the - PCRS documentation for the subtle differences to Perl behaviour. Most - notably, the non-standard option letter <TT -CLASS="LITERAL" ->U</TT -> is supported, - which turns the default to ungreedy matching.</P -><P -> If you are new to - <A -HREF="http://en.wikipedia.org/wiki/Regular_expressions" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"Regular - Expressions"</SPAN -></A ->, you might want to take a look at - the <A -HREF="appendix.html#REGEX" ->Appendix on regular expressions</A ->, and - see the <A -HREF="http://perldoc.perl.org/perlre.html" -TARGET="_top" ->Perl - manual</A -> for - <A -HREF="http://perldoc.perl.org/perlop.html" -TARGET="_top" ->the - <TT -CLASS="LITERAL" ->s///</TT -> operator's syntax</A -> and <A -HREF="http://perldoc.perl.org/perlre.html" -TARGET="_top" ->Perl-style regular - expressions</A -> in general. - The below examples might also help to get you started.</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="AEN4903" ->9.1. Filter File Tutorial</A -></H2 -><P -> Now, let's complete our <SPAN -CLASS="QUOTE" ->"foo"</SPAN -> content filter. We have already defined - the heading, but the jobs are still missing. Since all it does is to replace - <SPAN -CLASS="QUOTE" ->"foo"</SPAN -> with <SPAN -CLASS="QUOTE" ->"bar"</SPAN ->, there is only one (trivial) job - needed:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->s/foo/bar/</PRE -></TD -></TR -></TABLE -></P -><P -> But wait! Didn't the comment say that <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> occurrences - of <SPAN -CLASS="QUOTE" ->"foo"</SPAN -> should be replaced? Our current job will only take - care of the first <SPAN -CLASS="QUOTE" ->"foo"</SPAN -> on each page. For global substitution, - we'll need to add the <TT -CLASS="LITERAL" ->g</TT -> option:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->s/foo/bar/g</PRE -></TD -></TR -></TABLE -></P -><P -> Our complete filter now looks like this:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->FILTER: foo Replace all "foo" with "bar" -s/foo/bar/g</PRE -></TD -></TR -></TABLE -></P -><P -> Let's look at some real filters for more interesting examples. Here you see - a filter that protects against some common annoyances that arise from JavaScript - abuse. Let's look at its jobs one after the other:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Filter Files + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Actions Files" href="actions-file.html"> + <link rel="NEXT" title="Privoxy's Template Files" href="templates.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="actions-file.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="templates.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="FILTER-FILE">9. Filter Files</a> + </h1> + <p> + On-the-fly text substitutions need to be defined in a <span class= + "QUOTE">"filter file"</span>. Once defined, they can then be invoked + as an <span class="QUOTE">"action"</span>. + </p> + <p> + <span class="APPLICATION">Privoxy</span> supports three different + filter actions: <tt class="LITERAL"><a href= + "actions-file.html#FILTER">filter</a></tt> to rewrite the content + that is send to the client, <tt class="LITERAL"><a href= + "actions-file.html#CLIENT-HEADER-FILTER">client-header-filter</a></tt> + to rewrite headers that are send by the client, and <tt class= + "LITERAL"><a href= + "actions-file.html#SERVER-HEADER-FILTER">server-header-filter</a></tt> + to rewrite headers that are send by the server. + </p> + <p> + <span class="APPLICATION">Privoxy</span> also supports two tagger + actions: <tt class="LITERAL"><a href= + "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a></tt> + and <tt class="LITERAL"><a href= + "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a></tt>. + Taggers and filters use the same syntax in the filter files, the + difference is that taggers don't modify the text they are filtering, + but use a rewritten version of the filtered text as tag. The tags can + then be used to change the applying actions through sections with <a + href="actions-file.html#TAG-PATTERN">tag-patterns</a>. + </p> + <p> + Multiple filter files can be defined through the <tt class= + "LITERAL"><a href="config.html#FILTERFILE">filterfile</a></tt> config + directive. The filters as supplied by the developers are located in + <tt class="FILENAME">default.filter</tt>. It is recommended that any + locally defined or modified filters go in a separately defined file + such as <tt class="FILENAME">user.filter</tt>. + </p> + <p> + Common tasks for content filters are to eliminate common annoyances + in HTML and JavaScript, such as pop-up windows, exit consoles, + crippled windows without navigation tools, the infamous <BLINK> + tag etc, to suppress images with certain width and height attributes + (standard banner sizes or web-bugs), or just to have fun. + </p> + <p> + Enabled content filters are applied to any content whose <span class= + "QUOTE">"Content Type"</span> header is recognised as a sign of + text-based content, with the exception of <tt class= + "LITERAL">text/plain</tt>. Use the <a href= + "actions-file.html#FORCE-TEXT-MODE">force-text-mode</a> action to + also filter other content. + </p> + <p> + Substitutions are made at the source level, so if you want to <span + class="QUOTE">"roll your own"</span> filters, you should first be + familiar with HTML syntax, and, of course, regular expressions. + </p> + <p> + Just like the <a href="actions-file.html">actions files</a>, the + filter file is organized in sections, which are called <span class= + "emphasis"><i class="EMPHASIS">filters</i></span> here. Each filter + consists of a heading line, that starts with one of the <span class= + "emphasis"><i class="EMPHASIS">keywords</i></span> <tt class= + "LITERAL">FILTER:</tt>, <tt class= + "LITERAL">CLIENT-HEADER-FILTER:</tt> or <tt class= + "LITERAL">SERVER-HEADER-FILTER:</tt> followed by the filter's <span + class="emphasis"><i class="EMPHASIS">name</i></span>, and a short + (one line) <span class="emphasis"><i class= + "EMPHASIS">description</i></span> of what it does. Below that line + come the <span class="emphasis"><i class="EMPHASIS">jobs</i></span>, + i.e. lines that define the actual text substitutions. By convention, + the name of a filter should describe what the filter <span class= + "emphasis"><i class="EMPHASIS">eliminates</i></span>. The comment is + used in the <a href="http://config.privoxy.org/" target= + "_top">web-based user interface</a>. + </p> + <p> + Once a filter called <tt class="REPLACEABLE"><i>name</i></tt> has + been defined in the filter file, it can be invoked by using an action + of the form +<tt class="LITERAL"><a href= + "actions-file.html#FILTER">filter</a>{<tt class= + "REPLACEABLE"><i>name</i></tt>}</tt> in any <a href= + "actions-file.html">actions file</a>. + </p> + <p> + Filter definitions start with a header line that contains the filter + type, the filter name and the filter description. A content filter + header line for a filter called <span class="QUOTE">"foo"</span> + could look like this: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +FILTER: foo Replace all "foo" with "bar" +</pre> + </td> + </tr> + </table> + + <p> + Below that line, and up to the next header line, come the jobs that + define what text replacements the filter executes. They are specified + in a syntax that imitates <a href="http://www.perl.org/" target= + "_top">Perl</a>'s <tt class="LITERAL">s///</tt> operator. If you are + familiar with Perl, you will find this to be quite intuitive, and may + want to look at the PCRS documentation for the subtle differences to + Perl behaviour. Most notably, the non-standard option letter <tt + class="LITERAL">U</tt> is supported, which turns the default to + ungreedy matching. + </p> + <p> + If you are new to <a href= + "http://en.wikipedia.org/wiki/Regular_expressions" target= + "_top"><span class="QUOTE">"Regular Expressions"</span></a>, you + might want to take a look at the <a href= + "appendix.html#REGEX">Appendix on regular expressions</a>, and see + the <a href="http://perldoc.perl.org/perlre.html" target="_top">Perl + manual</a> for <a href="http://perldoc.perl.org/perlop.html" target= + "_top">the <tt class="LITERAL">s///</tt> operator's syntax</a> and <a + href="http://perldoc.perl.org/perlre.html" target="_top">Perl-style + regular expressions</a> in general. The below examples might also + help to get you started. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="AEN4903">9.1. Filter File Tutorial</a> + </h2> + <p> + Now, let's complete our <span class="QUOTE">"foo"</span> content + filter. We have already defined the heading, but the jobs are still + missing. Since all it does is to replace <span class= + "QUOTE">"foo"</span> with <span class="QUOTE">"bar"</span>, there + is only one (trivial) job needed: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +s/foo/bar/ +</pre> + </td> + </tr> + </table> + + <p> + But wait! Didn't the comment say that <span class="emphasis"><i + class="EMPHASIS">all</i></span> occurrences of <span class= + "QUOTE">"foo"</span> should be replaced? Our current job will only + take care of the first <span class="QUOTE">"foo"</span> on each + page. For global substitution, we'll need to add the <tt class= + "LITERAL">g</tt> option: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +s/foo/bar/g +</pre> + </td> + </tr> + </table> + + <p> + Our complete filter now looks like this: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +FILTER: foo Replace all "foo" with "bar" +s/foo/bar/g +</pre> + </td> + </tr> + </table> + + <p> + Let's look at some real filters for more interesting examples. Here + you see a filter that protects against some common annoyances that + arise from JavaScript abuse. Let's look at its jobs one after the + other: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse # Get rid of JavaScript referrer tracking. Test page: http://www.randomoddness.com/untitled.htm # -s|(<script.*)document\.referrer(.*</script>)|$1"Not Your Business!"$2|Usg</PRE -></TD -></TR -></TABLE -></P -><P -> Following the header line and a comment, you see the job. Note that it uses - <TT -CLASS="LITERAL" ->|</TT -> as the delimiter instead of <TT -CLASS="LITERAL" ->/</TT ->, because - the pattern contains a forward slash, which would otherwise have to be escaped - by a backslash (<TT -CLASS="LITERAL" ->\</TT ->).</P -><P -> Now, let's examine the pattern: it starts with the text <TT -CLASS="LITERAL" -><script.*</TT -> - enclosed in parentheses. Since the dot matches any character, and <TT -CLASS="LITERAL" ->*</TT -> - means: <SPAN -CLASS="QUOTE" ->"Match an arbitrary number of the element left of myself"</SPAN ->, this - matches <SPAN -CLASS="QUOTE" ->"<script"</SPAN ->, followed by <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->any</I -></SPAN -> text, i.e. - it matches the whole page, from the start of the first <script> tag.</P -><P -> That's more than we want, but the pattern continues: <TT -CLASS="LITERAL" ->document\.referrer</TT -> - matches only the exact string <SPAN -CLASS="QUOTE" ->"document.referrer"</SPAN ->. The dot needed to - be <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->escaped</I -></SPAN ->, i.e. preceded by a backslash, to take away its - special meaning as a joker, and make it just a regular dot. So far, the meaning is: - Match from the start of the first <script> tag in a the page, up to, and including, - the text <SPAN -CLASS="QUOTE" ->"document.referrer"</SPAN ->, if <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->both</I -></SPAN -> are present - in the page (and appear in that order).</P -><P -> But there's still more pattern to go. The next element, again enclosed in parentheses, - is <TT -CLASS="LITERAL" ->.*</script></TT ->. You already know what <TT -CLASS="LITERAL" ->.*</TT -> - means, so the whole pattern translates to: Match from the start of the first <script> - tag in a page to the end of the last <script> tag, provided that the text - <SPAN -CLASS="QUOTE" ->"document.referrer"</SPAN -> appears somewhere in between.</P -><P -> This is still not the whole story, since we have ignored the options and the parentheses: - The portions of the page matched by sub-patterns that are enclosed in parentheses, will be - remembered and be available through the variables <TT -CLASS="LITERAL" ->$1, $2, ...</TT -> in - the substitute. The <TT -CLASS="LITERAL" ->U</TT -> option switches to ungreedy matching, which means - that the first <TT -CLASS="LITERAL" ->.*</TT -> in the pattern will only <SPAN -CLASS="QUOTE" ->"eat up"</SPAN -> all - text in between <SPAN -CLASS="QUOTE" ->"<script"</SPAN -> and the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->first</I -></SPAN -> occurrence - of <SPAN -CLASS="QUOTE" ->"document.referrer"</SPAN ->, and that the second <TT -CLASS="LITERAL" ->.*</TT -> will - only span the text up to the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->first</I -></SPAN -> <SPAN -CLASS="QUOTE" ->"</script>"</SPAN -> - tag. Furthermore, the <TT -CLASS="LITERAL" ->s</TT -> option says that the match may span - multiple lines in the page, and the <TT -CLASS="LITERAL" ->g</TT -> option again means that the - substitution is global.</P -><P -> So, to summarize, the pattern means: Match all scripts that contain the text - <SPAN -CLASS="QUOTE" ->"document.referrer"</SPAN ->. Remember the parts of the script from - (and including) the start tag up to (and excluding) the string - <SPAN -CLASS="QUOTE" ->"document.referrer"</SPAN -> as <TT -CLASS="LITERAL" ->$1</TT ->, and the part following - that string, up to and including the closing tag, as <TT -CLASS="LITERAL" ->$2</TT ->.</P -><P -> Now the pattern is deciphered, but wasn't this about substituting things? So - lets look at the substitute: <TT -CLASS="LITERAL" ->$1"Not Your Business!"$2</TT -> is - easy to read: The text remembered as <TT -CLASS="LITERAL" ->$1</TT ->, followed by - <TT -CLASS="LITERAL" ->"Not Your Business!"</TT -> (<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->including</I -></SPAN -> - the quotation marks!), followed by the text remembered as <TT -CLASS="LITERAL" ->$2</TT ->. - This produces an exact copy of the original string, with the middle part - (the <SPAN -CLASS="QUOTE" ->"document.referrer"</SPAN ->) replaced by <TT -CLASS="LITERAL" ->"Not Your - Business!"</TT ->.</P -><P -> The whole job now reads: Replace <SPAN -CLASS="QUOTE" ->"document.referrer"</SPAN -> by - <TT -CLASS="LITERAL" ->"Not Your Business!"</TT -> wherever it appears inside a - <script> tag. Note that this job won't break JavaScript syntax, - since both the original and the replacement are syntactically valid - string objects. The script just won't have access to the referrer - information anymore.</P -><P -> We'll show you two other jobs from the JavaScript taming department, but - this time only point out the constructs of special interest:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># The status bar is for displaying link targets, not pointless blahblah +s|(<script.*)document\.referrer(.*</script>)|$1"Not Your Business!"$2|Usg +</pre> + </td> + </tr> + </table> + + <p> + Following the header line and a comment, you see the job. Note that + it uses <tt class="LITERAL">|</tt> as the delimiter instead of <tt + class="LITERAL">/</tt>, because the pattern contains a forward + slash, which would otherwise have to be escaped by a backslash (<tt + class="LITERAL">\</tt>). + </p> + <p> + Now, let's examine the pattern: it starts with the text <tt class= + "LITERAL"><script.*</tt> enclosed in parentheses. Since the dot + matches any character, and <tt class="LITERAL">*</tt> means: <span + class="QUOTE">"Match an arbitrary number of the element left of + myself"</span>, this matches <span class= + "QUOTE">"<script"</span>, followed by <span class="emphasis"><i + class="EMPHASIS">any</i></span> text, i.e. it matches the whole + page, from the start of the first <script> tag. + </p> + <p> + That's more than we want, but the pattern continues: <tt class= + "LITERAL">document\.referrer</tt> matches only the exact string + <span class="QUOTE">"document.referrer"</span>. The dot needed to + be <span class="emphasis"><i class="EMPHASIS">escaped</i></span>, + i.e. preceded by a backslash, to take away its special meaning as a + joker, and make it just a regular dot. So far, the meaning is: + Match from the start of the first <script> tag in a the page, + up to, and including, the text <span class= + "QUOTE">"document.referrer"</span>, if <span class="emphasis"><i + class="EMPHASIS">both</i></span> are present in the page (and + appear in that order). + </p> + <p> + But there's still more pattern to go. The next element, again + enclosed in parentheses, is <tt class= + "LITERAL">.*</script></tt>. You already know what <tt class= + "LITERAL">.*</tt> means, so the whole pattern translates to: Match + from the start of the first <script> tag in a page to the end + of the last <script> tag, provided that the text <span class= + "QUOTE">"document.referrer"</span> appears somewhere in between. + </p> + <p> + This is still not the whole story, since we have ignored the + options and the parentheses: The portions of the page matched by + sub-patterns that are enclosed in parentheses, will be remembered + and be available through the variables <tt class="LITERAL">$1, $2, + ...</tt> in the substitute. The <tt class="LITERAL">U</tt> option + switches to ungreedy matching, which means that the first <tt + class="LITERAL">.*</tt> in the pattern will only <span class= + "QUOTE">"eat up"</span> all text in between <span class= + "QUOTE">"<script"</span> and the <span class="emphasis"><i + class="EMPHASIS">first</i></span> occurrence of <span class= + "QUOTE">"document.referrer"</span>, and that the second <tt class= + "LITERAL">.*</tt> will only span the text up to the <span class= + "emphasis"><i class="EMPHASIS">first</i></span> <span class= + "QUOTE">"</script>"</span> tag. Furthermore, the <tt class= + "LITERAL">s</tt> option says that the match may span multiple lines + in the page, and the <tt class="LITERAL">g</tt> option again means + that the substitution is global. + </p> + <p> + So, to summarize, the pattern means: Match all scripts that contain + the text <span class="QUOTE">"document.referrer"</span>. Remember + the parts of the script from (and including) the start tag up to + (and excluding) the string <span class= + "QUOTE">"document.referrer"</span> as <tt class="LITERAL">$1</tt>, + and the part following that string, up to and including the closing + tag, as <tt class="LITERAL">$2</tt>. + </p> + <p> + Now the pattern is deciphered, but wasn't this about substituting + things? So lets look at the substitute: <tt class="LITERAL">$1"Not + Your Business!"$2</tt> is easy to read: The text remembered as <tt + class="LITERAL">$1</tt>, followed by <tt class="LITERAL">"Not Your + Business!"</tt> (<span class="emphasis"><i class= + "EMPHASIS">including</i></span> the quotation marks!), followed by + the text remembered as <tt class="LITERAL">$2</tt>. This produces + an exact copy of the original string, with the middle part (the + <span class="QUOTE">"document.referrer"</span>) replaced by <tt + class="LITERAL">"Not Your Business!"</tt>. + </p> + <p> + The whole job now reads: Replace <span class= + "QUOTE">"document.referrer"</span> by <tt class="LITERAL">"Not Your + Business!"</tt> wherever it appears inside a <script> tag. + Note that this job won't break JavaScript syntax, since both the + original and the replacement are syntactically valid string + objects. The script just won't have access to the referrer + information anymore. + </p> + <p> + We'll show you two other jobs from the JavaScript taming + department, but this time only point out the constructs of special + interest: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# The status bar is for displaying link targets, not pointless blahblah # -s/window\.status\s*=\s*(['"]).*?\1/dUmMy=1/ig</PRE -></TD -></TR -></TABLE -></P -><P -> <TT -CLASS="LITERAL" ->\s</TT -> stands for whitespace characters (space, tab, newline, - carriage return, form feed), so that <TT -CLASS="LITERAL" ->\s*</TT -> means: <SPAN -CLASS="QUOTE" ->"zero - or more whitespace"</SPAN ->. The <TT -CLASS="LITERAL" ->?</TT -> in <TT -CLASS="LITERAL" ->.*?</TT -> - makes this matching of arbitrary text ungreedy. (Note that the <TT -CLASS="LITERAL" ->U</TT -> - option is not set). The <TT -CLASS="LITERAL" ->['"]</TT -> construct means: <SPAN -CLASS="QUOTE" ->"a single - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->or</I -></SPAN -> a double quote"</SPAN ->. Finally, <TT -CLASS="LITERAL" ->\1</TT -> is - a back-reference to the first parenthesis just like <TT -CLASS="LITERAL" ->$1</TT -> above, - with the difference that in the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->pattern</I -></SPAN ->, a backslash indicates - a back-reference, whereas in the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->substitute</I -></SPAN ->, it's the dollar.</P -><P -> So what does this job do? It replaces assignments of single- or double-quoted - strings to the <SPAN -CLASS="QUOTE" ->"window.status"</SPAN -> object with a dummy assignment - (using a variable name that is hopefully odd enough not to conflict with - real variables in scripts). Thus, it catches many cases where e.g. pointless - descriptions are displayed in the status bar instead of the link target when - you move your mouse over links.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html +s/window\.status\s*=\s*(['"]).*?\1/dUmMy=1/ig +</pre> + </td> + </tr> + </table> + + <p> + <tt class="LITERAL">\s</tt> stands for whitespace characters + (space, tab, newline, carriage return, form feed), so that <tt + class="LITERAL">\s*</tt> means: <span class="QUOTE">"zero or more + whitespace"</span>. The <tt class="LITERAL">?</tt> in <tt class= + "LITERAL">.*?</tt> makes this matching of arbitrary text ungreedy. + (Note that the <tt class="LITERAL">U</tt> option is not set). The + <tt class="LITERAL">['"]</tt> construct means: <span class= + "QUOTE">"a single <span class="emphasis"><i class= + "EMPHASIS">or</i></span> a double quote"</span>. Finally, <tt + class="LITERAL">\1</tt> is a back-reference to the first + parenthesis just like <tt class="LITERAL">$1</tt> above, with the + difference that in the <span class="emphasis"><i class= + "EMPHASIS">pattern</i></span>, a backslash indicates a + back-reference, whereas in the <span class="emphasis"><i class= + "EMPHASIS">substitute</i></span>, it's the dollar. + </p> + <p> + So what does this job do? It replaces assignments of single- or + double-quoted strings to the <span class= + "QUOTE">"window.status"</span> object with a dummy assignment + (using a variable name that is hopefully odd enough not to conflict + with real variables in scripts). Thus, it catches many cases where + e.g. pointless descriptions are displayed in the status bar instead + of the link target when you move your mouse over links. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html # -s/(<body [^>]*)onunload(.*>)/$1never$2/iU</PRE -></TD -></TR -></TABLE -></P -><P -> Including the - <A -HREF="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-htmlevents" -TARGET="_top" ->OnUnload - event binding</A -> in the HTML DOM was a <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->CRIME</I -></SPAN ->. - When I close a browser window, I want it to close and die. Basta. - This job replaces the <SPAN -CLASS="QUOTE" ->"onunload"</SPAN -> attribute in - <SPAN -CLASS="QUOTE" ->"<body>"</SPAN -> tags with the dummy word <TT -CLASS="LITERAL" ->never</TT ->. - Note that the <TT -CLASS="LITERAL" ->i</TT -> option makes the pattern matching - case-insensitive. Also note that ungreedy matching alone doesn't always guarantee - a minimal match: In the first parenthesis, we had to use <TT -CLASS="LITERAL" ->[^>]*</TT -> - instead of <TT -CLASS="LITERAL" ->.*</TT -> to prevent the match from exceeding the - <body> tag if it doesn't contain <SPAN -CLASS="QUOTE" ->"OnUnload"</SPAN ->, but the page's - content does.</P -><P -> The last example is from the fun department:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" ->FILTER: fun Fun text replacements +s/(<body [^>]*)onunload(.*>)/$1never$2/iU +</pre> + </td> + </tr> + </table> + + <p> + Including the <a href= + "http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-htmlevents" + target="_top">OnUnload event binding</a> in the HTML DOM was a + <span class="emphasis"><i class="EMPHASIS">CRIME</i></span>. When I + close a browser window, I want it to close and die. Basta. This job + replaces the <span class="QUOTE">"onunload"</span> attribute in + <span class="QUOTE">"<body>"</span> tags with the dummy word + <tt class="LITERAL">never</tt>. Note that the <tt class= + "LITERAL">i</tt> option makes the pattern matching + case-insensitive. Also note that ungreedy matching alone doesn't + always guarantee a minimal match: In the first parenthesis, we had + to use <tt class="LITERAL">[^>]*</tt> instead of <tt class= + "LITERAL">.*</tt> to prevent the match from exceeding the + <body> tag if it doesn't contain <span class= + "QUOTE">"OnUnload"</span>, but the page's content does. + </p> + <p> + The last example is from the fun department: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +FILTER: fun Fun text replacements # Spice the daily news: # -s/microsoft(?!\.com)/MicroSuck/ig</PRE -></TD -></TR -></TABLE -></P -><P -> Note the <TT -CLASS="LITERAL" ->(?!\.com)</TT -> part (a so-called negative lookahead) - in the job's pattern, which means: Don't match, if the string - <SPAN -CLASS="QUOTE" ->".com"</SPAN -> appears directly following <SPAN -CLASS="QUOTE" ->"microsoft"</SPAN -> - in the page. This prevents links to microsoft.com from being trashed, while - still replacing the word everywhere else.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -># Buzzword Bingo (example for extended regex syntax) +s/microsoft(?!\.com)/MicroSuck/ig +</pre> + </td> + </tr> + </table> + + <p> + Note the <tt class="LITERAL">(?!\.com)</tt> part (a so-called + negative lookahead) in the job's pattern, which means: Don't match, + if the string <span class="QUOTE">".com"</span> appears directly + following <span class="QUOTE">"microsoft"</span> in the page. This + prevents links to microsoft.com from being trashed, while still + replacing the word everywhere else. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +# Buzzword Bingo (example for extended regex syntax) # s* industry[ -]leading \ | cutting[ -]edge \ @@ -873,780 +466,542 @@ s* industry[ -]leading \ | unmatched \ | unparalleled \ | unrivalled \ -*<font color="red"><b>BINGO!</b></font> \ -*igx</PRE -></TD -></TR -></TABLE -></P -><P -> The <TT -CLASS="LITERAL" ->x</TT -> option in this job turns on extended syntax, and allows for - e.g. the liberal use of (non-interpreted!) whitespace for nicer formatting. </P -><P -> You get the idea?</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="PREDEFINED-FILTERS" ->9.2. The Pre-defined Filters</A -></H2 -><P ->The distribution <TT -CLASS="FILENAME" ->default.filter</TT -> file contains a selection of -pre-defined filters for your convenience:</P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->js-annoyances</I -></SPAN -></DT -><DD -><P -> The purpose of this filter is to get rid of particularly annoying JavaScript abuse. - To that end, it - <P -></P -><UL -><LI -><P -> replaces JavaScript references to the browser's referrer information - with the string "Not Your Business!". This compliments the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HIDE-REFERRER" ->hide-referrer</A -></TT -> action on the content level. - </P -></LI -><LI -><P -> removes the bindings to the DOM's - <A -HREF="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-htmlevents" -TARGET="_top" ->unload - event</A -> which we feel has no right to exist and is responsible for most <SPAN -CLASS="QUOTE" ->"exit consoles"</SPAN ->, i.e. - nasty windows that pop up when you close another one. - </P -></LI -><LI -><P -> removes code that causes new windows to be opened with undesired properties, such as being - full-screen, non-resizeable, without location, status or menu bar etc. - </P -></LI -></UL -> - </P -><P -> Use with caution. This is an aggressive filter, and can break sites that - rely heavily on JavaScript. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->js-events</I -></SPAN -></DT -><DD -><P -> This is a very radical measure. It removes virtually all JavaScript event bindings, which - means that scripts can not react to user actions such as mouse movements or clicks, window - resizing etc, anymore. Use with caution! - </P -><P -> We <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->strongly discourage</I -></SPAN -> using this filter as a default since it breaks - many legitimate scripts. It is meant for use only on extra-nasty sites (should you really - need to go there). - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->html-annoyances</I -></SPAN -></DT -><DD -><P -> This filter will undo many common instances of HTML based abuse. - </P -><P -> The <TT -CLASS="LITERAL" ->BLINK</TT -> and <TT -CLASS="LITERAL" ->MARQUEE</TT -> tags - are neutralized (yeah baby!), and browser windows will be created as - resizeable (as of course they should be!), and will have location, - scroll and menu bars -- even if specified otherwise. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->content-cookies</I -></SPAN -></DT -><DD -><P -> Most cookies are set in the HTTP dialog, where they can be intercepted - by the - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -></TT -> - and <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -></TT -> - actions. But web sites increasingly make use of HTML meta tags and JavaScript - to sneak cookies to the browser on the content level. - </P -><P -> This filter disables most HTML and JavaScript code that reads or sets - cookies. It cannot detect all clever uses of these types of code, so it - should not be relied on as an absolute fix. Use it wherever you would also - use the cookie crunch actions. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->refresh tags</I -></SPAN -></DT -><DD -><P -> Disable any refresh tags if the interval is greater than nine seconds (so - that redirections done via refresh tags are not destroyed). This is useful - for dial-on-demand setups, or for those who find this HTML feature - annoying. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->unsolicited-popups</I -></SPAN -></DT -><DD -><P -> This filter attempts to prevent only <SPAN -CLASS="QUOTE" ->"unsolicited"</SPAN -> pop-up - windows from opening, yet still allow pop-up windows that the user - has explicitly chosen to open. It was added in version 3.0.1, - as an improvement over earlier such filters. - </P -><P -> Technical note: The filter works by redefining the window.open JavaScript - function to a dummy function, <TT -CLASS="LITERAL" ->PrivoxyWindowOpen()</TT ->, - during the loading and rendering phase of each HTML page access, and - restoring the function afterward. - </P -><P -> This is recommended only for browsers that cannot perform this function - reliably themselves. And be aware that some sites require such windows - in order to function normally. Use with caution. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all-popups</I -></SPAN -></DT -><DD -><P -> Attempt to prevent <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> pop-up windows from opening. - Note this should be used with even more discretion than the above, since - it is more likely to break some sites that require pop-ups for normal - usage. Use with caution. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->img-reorder</I -></SPAN -></DT -><DD -><P -> This is a helper filter that has no value if used alone. It makes the - <TT -CLASS="LITERAL" ->banners-by-size</TT -> and <TT -CLASS="LITERAL" ->banners-by-link</TT -> - (see below) filters more effective and should be enabled together with them. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->banners-by-size</I -></SPAN -></DT -><DD -><P -> This filter removes image tags purely based on what size they are. Fortunately - for us, many ads and banner images tend to conform to certain standardized - sizes, which makes this filter quite effective for ad stripping purposes. - </P -><P -> Occasionally this filter will cause false positives on images that are not ads, - but just happen to be of one of the standard banner sizes. - </P -><P -> Recommended only for those who require extreme ad blocking. The default - block rules should catch 95+% of all ads <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->without</I -></SPAN -> this filter enabled. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->banners-by-link</I -></SPAN -></DT -><DD -><P -> This is an experimental filter that attempts to kill any banners if - their URLs seem to point to known or suspected click trackers. It is currently - not of much value and is not recommended for use by default. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->webbugs</I -></SPAN -></DT -><DD -><P -> Webbugs are small, invisible images (technically 1X1 GIF images), that - are used to track users across websites, and collect information on them. - As an HTML page is loaded by the browser, an embedded image tag causes the - browser to contact a third-party site, disclosing the tracking information - through the requested URL and/or cookies for that third-party domain, without - the user ever becoming aware of the interaction with the third-party site. - HTML-ized spam also uses a similar technique to verify email addresses. - </P -><P -> This filter removes the HTML code that loads such <SPAN -CLASS="QUOTE" ->"webbugs"</SPAN ->. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->tiny-textforms</I -></SPAN -></DT -><DD -><P -> A rather special-purpose filter that can be used to enlarge textareas (those - multi-line text boxes in web forms) and turn off hard word wrap in them. - It was written for the sourceforge.net tracker system where such boxes are - a nuisance, but it can be handy on other sites, too. - </P -><P -> It is not recommended to use this filter as a default. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->jumping-windows</I -></SPAN -></DT -><DD -><P -> Many consider windows that move, or resize themselves to be abusive. This filter - neutralizes the related JavaScript code. Note that some sites might not display - or behave as intended when using this filter. Use with caution. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->frameset-borders</I -></SPAN -></DT -><DD -><P -> Some web designers seem to assume that everyone in the world will view their - web sites using the same browser brand and version, screen resolution etc, - because only that assumption could explain why they'd use static frame sizes, - yet prevent their frames from being resized by the user, should they be too - small to show their whole content. - </P -><P -> This filter removes the related HTML code. It should only be applied to sites - which need it. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->demoronizer</I -></SPAN -></DT -><DD -><P -> Many Microsoft products that generate HTML use non-standard extensions (read: - violations) of the ISO 8859-1 aka Latin-1 character set. This can cause those - HTML documents to display with errors on standard-compliant platforms. - </P -><P -> This filter translates the MS-only characters into Latin-1 equivalents. - It is not necessary when using MS products, and will cause corruption of - all documents that use 8-bit character sets other than Latin-1. It's mostly - worthwhile for Europeans on non-MS platforms, if weird garbage characters - sometimes appear on some pages, or user agents that don't correct for this on - the fly. - - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->shockwave-flash</I -></SPAN -></DT -><DD -><P -> A filter for shockwave haters. As the name suggests, this filter strips code - out of web pages that is used to embed shockwave flash objects. - </P -><P -> </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->quicktime-kioskmode</I -></SPAN -></DT -><DD -><P -> Change HTML code that embeds Quicktime objects so that kioskmode, which - prevents saving, is disabled. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->fun</I -></SPAN -></DT -><DD -><P -> Text replacements for subversive browsing fun. Make fun of your favorite - Monopolist or play buzzword bingo. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->crude-parental</I -></SPAN -></DT -><DD -><P -> A demonstration-only filter that shows how <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - can be used to delete web content on a keyword basis. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->ie-exploits</I -></SPAN -></DT -><DD -><P -> An experimental collection of text replacements to disable malicious HTML and JavaScript - code that exploits known security holes in Internet Explorer. - </P -><P -> Presently, it only protects against Nimda and a cross-site scripting bug, and - would need active maintenance to provide more substantial protection. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->site-specifics</I -></SPAN -></DT -><DD -><P -> Some web sites have very specific problems, the cure for which doesn't apply - anywhere else, or could even cause damage on other sites. - </P -><P -> This is a collection of such site-specific cures which should only be applied - to the sites they were intended for, which is what the supplied - <TT -CLASS="FILENAME" ->default.action</TT -> file does. Users shouldn't need to change - anything regarding this filter. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->google</I -></SPAN -></DT -><DD -><P -> A CSS based block for Google text ads. Also removes a width limitation - and the toolbar advertisement. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->yahoo</I -></SPAN -></DT -><DD -><P -> Another CSS based block, this time for Yahoo text ads. And removes - a width limitation as well. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->msn</I -></SPAN -></DT -><DD -><P -> Another CSS based block, this time for MSN text ads. And removes - tracking URLs, as well as a width limitation. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->blogspot</I -></SPAN -></DT -><DD -><P -> Cleans up some Blogspot blogs. Read the fine print before using this one! - </P -><P -> This filter also intentionally removes some navigation stuff and sets the - page width to 100%. As a result, some rounded <SPAN -CLASS="QUOTE" ->"corners"</SPAN -> would - appear to early or not at all and as fixing this would require a browser - that understands background-size (CSS3), they are removed instead. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->xml-to-html</I -></SPAN -></DT -><DD -><P -> Server-header filter to change the Content-Type from xml to html. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->html-to-xml</I -></SPAN -></DT -><DD -><P -> Server-header filter to change the Content-Type from html to xml. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->no-ping</I -></SPAN -></DT -><DD -><P -> Removes the non-standard <TT -CLASS="LITERAL" ->ping</TT -> attribute from - anchor and area HTML tags. - </P -></DD -><DT -><SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->hide-tor-exit-notation</I -></SPAN -></DT -><DD -><P -> Client-header filter to remove the <B -CLASS="COMMAND" ->Tor</B -> exit node notation - found in Host and Referer headers. - </P -><P -> If <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> and <B -CLASS="COMMAND" ->Tor</B -> are chained and <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is configured to use socks4a, one can use <SPAN -CLASS="QUOTE" ->"http://www.example.org.foobar.exit/"</SPAN -> - to access the host <SPAN -CLASS="QUOTE" ->"www.example.org"</SPAN -> through the - <B -CLASS="COMMAND" ->Tor</B -> exit node <SPAN -CLASS="QUOTE" ->"foobar"</SPAN ->. - </P -><P -> As the HTTP client isn't aware of this notation, it treats the - whole string <SPAN -CLASS="QUOTE" ->"www.example.org.foobar.exit"</SPAN -> as host and uses it - for the <SPAN -CLASS="QUOTE" ->"Host"</SPAN -> and <SPAN -CLASS="QUOTE" ->"Referer"</SPAN -> headers. From the - server's point of view the resulting headers are invalid and can cause problems. - </P -><P -> An invalid <SPAN -CLASS="QUOTE" ->"Referer"</SPAN -> header can trigger <SPAN -CLASS="QUOTE" ->"hot-linking"</SPAN -> - protections, an invalid <SPAN -CLASS="QUOTE" ->"Host"</SPAN -> header will make it impossible for - the server to find the right vhost (several domains hosted on the same IP address). - </P -><P -> This client-header filter removes the <SPAN -CLASS="QUOTE" ->"foo.exit"</SPAN -> part in those headers - to prevent the mentioned problems. Note that it only modifies - the HTTP headers, it doesn't make it impossible for the server - to detect your <B -CLASS="COMMAND" ->Tor</B -> exit node based on the IP address - the request is coming from. - </P -></DD -></DL -></DIV -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="actions-file.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="templates.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Actions Files</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Privoxy's Template Files</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +*<font color="red"><b>BINGO!</b></font> \ +*igx +</pre> + </td> + </tr> + </table> + + <p> + The <tt class="LITERAL">x</tt> option in this job turns on extended + syntax, and allows for e.g. the liberal use of (non-interpreted!) + whitespace for nicer formatting. + </p> + <p> + You get the idea? + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="PREDEFINED-FILTERS">9.2. The Pre-defined Filters</a> + </h2> + <p> + The distribution <tt class="FILENAME">default.filter</tt> file + contains a selection of pre-defined filters for your convenience: + </p> + <div class="VARIABLELIST"> + <dl> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">js-annoyances</i></span> + </dt> + <dd> + <p> + The purpose of this filter is to get rid of particularly + annoying JavaScript abuse. To that end, it + </p> + <ul> + <li> + <p> + replaces JavaScript references to the browser's referrer + information with the string "Not Your Business!". This + compliments the <tt class="LITERAL"><a href= + "actions-file.html#HIDE-REFERRER">hide-referrer</a></tt> + action on the content level. + </p> + </li> + <li> + <p> + removes the bindings to the DOM's <a href= + "http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-eventgroupings-htmlevents" + target="_top">unload event</a> which we feel has no + right to exist and is responsible for most <span class= + "QUOTE">"exit consoles"</span>, i.e. nasty windows that + pop up when you close another one. + </p> + </li> + <li> + <p> + removes code that causes new windows to be opened with + undesired properties, such as being full-screen, + non-resizeable, without location, status or menu bar etc. + </p> + </li> + </ul> + + <p> + Use with caution. This is an aggressive filter, and can break + sites that rely heavily on JavaScript. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">js-events</i></span> + </dt> + <dd> + <p> + This is a very radical measure. It removes virtually all + JavaScript event bindings, which means that scripts can not + react to user actions such as mouse movements or clicks, + window resizing etc, anymore. Use with caution! + </p> + <p> + We <span class="emphasis"><i class="EMPHASIS">strongly + discourage</i></span> using this filter as a default since it + breaks many legitimate scripts. It is meant for use only on + extra-nasty sites (should you really need to go there). + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">html-annoyances</i></span> + </dt> + <dd> + <p> + This filter will undo many common instances of HTML based + abuse. + </p> + <p> + The <tt class="LITERAL">BLINK</tt> and <tt class= + "LITERAL">MARQUEE</tt> tags are neutralized (yeah baby!), and + browser windows will be created as resizeable (as of course + they should be!), and will have location, scroll and menu + bars -- even if specified otherwise. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">content-cookies</i></span> + </dt> + <dd> + <p> + Most cookies are set in the HTTP dialog, where they can be + intercepted by the <tt class="LITERAL"><a href= + "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a></tt> + and <tt class="LITERAL"><a href= + "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a></tt> + actions. But web sites increasingly make use of HTML meta + tags and JavaScript to sneak cookies to the browser on the + content level. + </p> + <p> + This filter disables most HTML and JavaScript code that reads + or sets cookies. It cannot detect all clever uses of these + types of code, so it should not be relied on as an absolute + fix. Use it wherever you would also use the cookie crunch + actions. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">refresh + tags</i></span> + </dt> + <dd> + <p> + Disable any refresh tags if the interval is greater than nine + seconds (so that redirections done via refresh tags are not + destroyed). This is useful for dial-on-demand setups, or for + those who find this HTML feature annoying. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">unsolicited-popups</i></span> + </dt> + <dd> + <p> + This filter attempts to prevent only <span class= + "QUOTE">"unsolicited"</span> pop-up windows from opening, yet + still allow pop-up windows that the user has explicitly + chosen to open. It was added in version 3.0.1, as an + improvement over earlier such filters. + </p> + <p> + Technical note: The filter works by redefining the + window.open JavaScript function to a dummy function, <tt + class="LITERAL">PrivoxyWindowOpen()</tt>, during the loading + and rendering phase of each HTML page access, and restoring + the function afterward. + </p> + <p> + This is recommended only for browsers that cannot perform + this function reliably themselves. And be aware that some + sites require such windows in order to function normally. Use + with caution. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">all-popups</i></span> + </dt> + <dd> + <p> + Attempt to prevent <span class="emphasis"><i class= + "EMPHASIS">all</i></span> pop-up windows from opening. Note + this should be used with even more discretion than the above, + since it is more likely to break some sites that require + pop-ups for normal usage. Use with caution. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">img-reorder</i></span> + </dt> + <dd> + <p> + This is a helper filter that has no value if used alone. It + makes the <tt class="LITERAL">banners-by-size</tt> and <tt + class="LITERAL">banners-by-link</tt> (see below) filters more + effective and should be enabled together with them. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">banners-by-size</i></span> + </dt> + <dd> + <p> + This filter removes image tags purely based on what size they + are. Fortunately for us, many ads and banner images tend to + conform to certain standardized sizes, which makes this + filter quite effective for ad stripping purposes. + </p> + <p> + Occasionally this filter will cause false positives on images + that are not ads, but just happen to be of one of the + standard banner sizes. + </p> + <p> + Recommended only for those who require extreme ad blocking. + The default block rules should catch 95+% of all ads <span + class="emphasis"><i class="EMPHASIS">without</i></span> this + filter enabled. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">banners-by-link</i></span> + </dt> + <dd> + <p> + This is an experimental filter that attempts to kill any + banners if their URLs seem to point to known or suspected + click trackers. It is currently not of much value and is not + recommended for use by default. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">webbugs</i></span> + </dt> + <dd> + <p> + Webbugs are small, invisible images (technically 1X1 GIF + images), that are used to track users across websites, and + collect information on them. As an HTML page is loaded by the + browser, an embedded image tag causes the browser to contact + a third-party site, disclosing the tracking information + through the requested URL and/or cookies for that third-party + domain, without the user ever becoming aware of the + interaction with the third-party site. HTML-ized spam also + uses a similar technique to verify email addresses. + </p> + <p> + This filter removes the HTML code that loads such <span + class="QUOTE">"webbugs"</span>. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">tiny-textforms</i></span> + </dt> + <dd> + <p> + A rather special-purpose filter that can be used to enlarge + textareas (those multi-line text boxes in web forms) and turn + off hard word wrap in them. It was written for the + sourceforge.net tracker system where such boxes are a + nuisance, but it can be handy on other sites, too. + </p> + <p> + It is not recommended to use this filter as a default. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">jumping-windows</i></span> + </dt> + <dd> + <p> + Many consider windows that move, or resize themselves to be + abusive. This filter neutralizes the related JavaScript code. + Note that some sites might not display or behave as intended + when using this filter. Use with caution. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">frameset-borders</i></span> + </dt> + <dd> + <p> + Some web designers seem to assume that everyone in the world + will view their web sites using the same browser brand and + version, screen resolution etc, because only that assumption + could explain why they'd use static frame sizes, yet prevent + their frames from being resized by the user, should they be + too small to show their whole content. + </p> + <p> + This filter removes the related HTML code. It should only be + applied to sites which need it. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">demoronizer</i></span> + </dt> + <dd> + <p> + Many Microsoft products that generate HTML use non-standard + extensions (read: violations) of the ISO 8859-1 aka Latin-1 + character set. This can cause those HTML documents to display + with errors on standard-compliant platforms. + </p> + <p> + This filter translates the MS-only characters into Latin-1 + equivalents. It is not necessary when using MS products, and + will cause corruption of all documents that use 8-bit + character sets other than Latin-1. It's mostly worthwhile for + Europeans on non-MS platforms, if weird garbage characters + sometimes appear on some pages, or user agents that don't + correct for this on the fly. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">shockwave-flash</i></span> + </dt> + <dd> + <p> + A filter for shockwave haters. As the name suggests, this + filter strips code out of web pages that is used to embed + shockwave flash objects. + </p> + <p> + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">quicktime-kioskmode</i></span> + </dt> + <dd> + <p> + Change HTML code that embeds Quicktime objects so that + kioskmode, which prevents saving, is disabled. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">fun</i></span> + </dt> + <dd> + <p> + Text replacements for subversive browsing fun. Make fun of + your favorite Monopolist or play buzzword bingo. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">crude-parental</i></span> + </dt> + <dd> + <p> + A demonstration-only filter that shows how <span class= + "APPLICATION">Privoxy</span> can be used to delete web + content on a keyword basis. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">ie-exploits</i></span> + </dt> + <dd> + <p> + An experimental collection of text replacements to disable + malicious HTML and JavaScript code that exploits known + security holes in Internet Explorer. + </p> + <p> + Presently, it only protects against Nimda and a cross-site + scripting bug, and would need active maintenance to provide + more substantial protection. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">site-specifics</i></span> + </dt> + <dd> + <p> + Some web sites have very specific problems, the cure for + which doesn't apply anywhere else, or could even cause damage + on other sites. + </p> + <p> + This is a collection of such site-specific cures which should + only be applied to the sites they were intended for, which is + what the supplied <tt class="FILENAME">default.action</tt> + file does. Users shouldn't need to change anything regarding + this filter. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">google</i></span> + </dt> + <dd> + <p> + A CSS based block for Google text ads. Also removes a width + limitation and the toolbar advertisement. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">yahoo</i></span> + </dt> + <dd> + <p> + Another CSS based block, this time for Yahoo text ads. And + removes a width limitation as well. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">msn</i></span> + </dt> + <dd> + <p> + Another CSS based block, this time for MSN text ads. And + removes tracking URLs, as well as a width limitation. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">blogspot</i></span> + </dt> + <dd> + <p> + Cleans up some Blogspot blogs. Read the fine print before + using this one! + </p> + <p> + This filter also intentionally removes some navigation stuff + and sets the page width to 100%. As a result, some rounded + <span class="QUOTE">"corners"</span> would appear to early or + not at all and as fixing this would require a browser that + understands background-size (CSS3), they are removed instead. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">xml-to-html</i></span> + </dt> + <dd> + <p> + Server-header filter to change the Content-Type from xml to + html. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">html-to-xml</i></span> + </dt> + <dd> + <p> + Server-header filter to change the Content-Type from html to + xml. + </p> + </dd> + <dt> + <span class="emphasis"><i class="EMPHASIS">no-ping</i></span> + </dt> + <dd> + <p> + Removes the non-standard <tt class="LITERAL">ping</tt> + attribute from anchor and area HTML tags. + </p> + </dd> + <dt> + <span class="emphasis"><i class= + "EMPHASIS">hide-tor-exit-notation</i></span> + </dt> + <dd> + <p> + Client-header filter to remove the <b class="COMMAND">Tor</b> + exit node notation found in Host and Referer headers. + </p> + <p> + If <span class="APPLICATION">Privoxy</span> and <b class= + "COMMAND">Tor</b> are chained and <span class= + "APPLICATION">Privoxy</span> is configured to use socks4a, + one can use <span class= + "QUOTE">"http://www.example.org.foobar.exit/"</span> to + access the host <span class="QUOTE">"www.example.org"</span> + through the <b class="COMMAND">Tor</b> exit node <span class= + "QUOTE">"foobar"</span>. + </p> + <p> + As the HTTP client isn't aware of this notation, it treats + the whole string <span class= + "QUOTE">"www.example.org.foobar.exit"</span> as host and uses + it for the <span class="QUOTE">"Host"</span> and <span class= + "QUOTE">"Referer"</span> headers. From the server's point of + view the resulting headers are invalid and can cause + problems. + </p> + <p> + An invalid <span class="QUOTE">"Referer"</span> header can + trigger <span class="QUOTE">"hot-linking"</span> protections, + an invalid <span class="QUOTE">"Host"</span> header will make + it impossible for the server to find the right vhost (several + domains hosted on the same IP address). + </p> + <p> + This client-header filter removes the <span class= + "QUOTE">"foo.exit"</span> part in those headers to prevent + the mentioned problems. Note that it only modifies the HTTP + headers, it doesn't make it impossible for the server to + detect your <b class="COMMAND">Tor</b> exit node based on the + IP address the request is coming from. + </p> + </dd> + </dl> + </div> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="actions-file.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="templates.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Actions Files + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Privoxy's Template Files + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/index.html b/doc/webserver/user-manual/index.html index 70fb37d4..d2f17e42 100644 --- a/doc/webserver/user-manual/index.html +++ b/doc/webserver/user-manual/index.html @@ -1,1022 +1,771 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy 3.0.18 User Manual</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="NEXT" -TITLE="Introduction" -HREF="introduction.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="ARTICLE" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="ARTICLE" -><DIV -CLASS="TITLEPAGE" -><H1 -CLASS="TITLE" -><A -NAME="AEN2" ->Privoxy 3.0.18 User Manual</A -></H1 -><P -CLASS="PUBDATE" -> <SUB -> <A -HREF="copyright.html" ->Copyright</A -> © 2001-2011 by - <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->Privoxy Developers</A -> - </SUB -><BR></P -><P -CLASS="PUBDATE" ->$Id: index.html,v 1.76 2011/08/17 10:37:48 fabiankeil Exp $<BR></P -><DIV -><DIV -CLASS="ABSTRACT" -><P -></P -><A -NAME="AEN9" -></A -><P -> The <I -CLASS="CITETITLE" ->Privoxy User Manual</I -> gives users information on how to - install, configure and use <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->Privoxy</A ->. - </P -><P -> Privoxy is a non-caching web proxy with advanced filtering capabilities - for enhancing privacy, modifying web page data and HTTP headers, controlling - access, and removing ads and other obnoxious Internet junk. Privoxy has a - flexible configuration and can be customized to suit individual needs and tastes. - It has application for both stand-alone systems and multi-user networks.</P -><P -> Privoxy is Free Software and licensed under the GNU GPLv2.</P -><P -> Privoxy is an associated project of Software in the Public Interest (SPI).</P -><P -> Helping hands and donations are welcome: - <P -></P -><UL -><LI -><P -> <A -HREF="http://www.privoxy.org/faq/general.html#PARTICIPATE" -TARGET="_top" ->http://www.privoxy.org/faq/general.html#PARTICIPATE</A -> - </P -></LI -><LI -><P -> <A -HREF="http://www.privoxy.org/faq/general.html#DONATE" -TARGET="_top" ->http://www.privoxy.org/faq/general.html#DONATE</A -> - </P -></LI -></UL -></P -><P -> You can find the latest version of the <I -CLASS="CITETITLE" ->Privoxy User Manual</I -> at <A -HREF="http://www.privoxy.org/user-manual/" -TARGET="_top" ->http://www.privoxy.org/user-manual/</A ->. - Please see the <A -HREF="contact.html" ->Contact section</A -> on how to - contact the developers. - </P -><P -></P -></DIV -></DIV -><HR></DIV -><DIV -CLASS="TOC" -><DL -><DT -><B ->Table of Contents</B -></DT -><DT ->1. <A -HREF="introduction.html" ->Introduction</A -></DT -><DD -><DL -><DT ->1.1. <A -HREF="introduction.html#FEATURES" ->Features</A -></DT -></DL -></DD -><DT ->2. <A -HREF="installation.html" ->Installation</A -></DT -><DD -><DL -><DT ->2.1. <A -HREF="installation.html#INSTALLATION-PACKAGES" ->Binary Packages</A -></DT -><DD -><DL -><DT ->2.1.1. <A -HREF="installation.html#INSTALLATION-PACK-RPM" ->Red Hat and Fedora RPMs</A -></DT -><DT ->2.1.2. <A -HREF="installation.html#INSTALLATION-DEB" ->Debian and Ubuntu</A -></DT -><DT ->2.1.3. <A -HREF="installation.html#INSTALLATION-PACK-WIN" ->Windows</A -></DT -><DT ->2.1.4. <A -HREF="installation.html#INSTALLATION-PACK-BINTGZ" ->Solaris</A -></DT -><DT ->2.1.5. <A -HREF="installation.html#INSTALLATION-OS2" ->OS/2</A -></DT -><DT ->2.1.6. <A -HREF="installation.html#INSTALLATION-MAC" ->Mac OS X</A -></DT -><DT ->2.1.7. <A -HREF="installation.html#INSTALLATION-AMIGA" ->AmigaOS</A -></DT -><DT ->2.1.8. <A -HREF="installation.html#INSTALLATION-TBZ" ->FreeBSD</A -></DT -><DT ->2.1.9. <A -HREF="installation.html#INSTALLATTION-GENTOO" ->Gentoo</A -></DT -></DL -></DD -><DT ->2.2. <A -HREF="installation.html#INSTALLATION-SOURCE" ->Building from Source</A -></DT -><DT ->2.3. <A -HREF="installation.html#INSTALLATION-KEEPUPDATED" ->Keeping your Installation Up-to-Date</A -></DT -></DL -></DD -><DT ->3. <A -HREF="whatsnew.html" ->What's New in this Release</A -></DT -><DD -><DL -><DT ->3.1. <A -HREF="whatsnew.html#UPGRADERSNOTE" ->Note to Upgraders</A -></DT -></DL -></DD -><DT ->4. <A -HREF="quickstart.html" ->Quickstart to Using Privoxy</A -></DT -><DD -><DL -><DT ->4.1. <A -HREF="quickstart.html#QUICKSTART-AD-BLOCKING" ->Quickstart to Ad Blocking</A -></DT -></DL -></DD -><DT ->5. <A -HREF="startup.html" ->Starting Privoxy</A -></DT -><DD -><DL -><DT ->5.1. <A -HREF="startup.html#START-REDHAT" ->Red Hat and Fedora</A -></DT -><DT ->5.2. <A -HREF="startup.html#START-DEBIAN" ->Debian</A -></DT -><DT ->5.3. <A -HREF="startup.html#START-WINDOWS" ->Windows</A -></DT -><DT ->5.4. <A -HREF="startup.html#START-UNICES" ->Solaris, NetBSD, FreeBSD, HP-UX and others</A -></DT -><DT ->5.5. <A -HREF="startup.html#START-OS2" ->OS/2</A -></DT -><DT ->5.6. <A -HREF="startup.html#START-MACOSX" ->Mac OS X</A -></DT -><DT ->5.7. <A -HREF="startup.html#START-AMIGAOS" ->AmigaOS</A -></DT -><DT ->5.8. <A -HREF="startup.html#START-GENTOO" ->Gentoo</A -></DT -><DT ->5.9. <A -HREF="startup.html#CMDOPTIONS" ->Command Line Options</A -></DT -></DL -></DD -><DT ->6. <A -HREF="configuration.html" ->Privoxy Configuration</A -></DT -><DD -><DL -><DT ->6.1. <A -HREF="configuration.html#AEN933" ->Controlling Privoxy with Your Web Browser</A -></DT -><DT ->6.2. <A -HREF="configuration.html#CONFOVERVIEW" ->Configuration Files Overview</A -></DT -></DL -></DD -><DT ->7. <A -HREF="config.html" ->The Main Configuration File</A -></DT -><DD -><DL -><DT ->7.1. <A -HREF="config.html#LOCAL-SET-UP" ->Local Set-up Documentation</A -></DT -><DD -><DL -><DT ->7.1.1. <A -HREF="config.html#USER-MANUAL" ->user-manual</A -></DT -><DT ->7.1.2. <A -HREF="config.html#TRUST-INFO-URL" ->trust-info-url</A -></DT -><DT ->7.1.3. <A -HREF="config.html#ADMIN-ADDRESS" ->admin-address</A -></DT -><DT ->7.1.4. <A -HREF="config.html#PROXY-INFO-URL" ->proxy-info-url</A -></DT -></DL -></DD -><DT ->7.2. <A -HREF="config.html#CONF-LOG-LOC" ->Configuration and Log File Locations</A -></DT -><DD -><DL -><DT ->7.2.1. <A -HREF="config.html#CONFDIR" ->confdir</A -></DT -><DT ->7.2.2. <A -HREF="config.html#TEMPLDIR" ->templdir</A -></DT -><DT ->7.2.3. <A -HREF="config.html#LOGDIR" ->logdir</A -></DT -><DT ->7.2.4. <A -HREF="config.html#ACTIONSFILE" ->actionsfile</A -></DT -><DT ->7.2.5. <A -HREF="config.html#FILTERFILE" ->filterfile</A -></DT -><DT ->7.2.6. <A -HREF="config.html#LOGFILE" ->logfile</A -></DT -><DT ->7.2.7. <A -HREF="config.html#TRUSTFILE" ->trustfile</A -></DT -></DL -></DD -><DT ->7.3. <A -HREF="config.html#DEBUGGING" ->Debugging</A -></DT -><DD -><DL -><DT ->7.3.1. <A -HREF="config.html#DEBUG" ->debug</A -></DT -><DT ->7.3.2. <A -HREF="config.html#SINGLE-THREADED" ->single-threaded</A -></DT -><DT ->7.3.3. <A -HREF="config.html#HOSTNAME" ->hostname</A -></DT -></DL -></DD -><DT ->7.4. <A -HREF="config.html#ACCESS-CONTROL" ->Access Control and Security</A -></DT -><DD -><DL -><DT ->7.4.1. <A -HREF="config.html#LISTEN-ADDRESS" ->listen-address</A -></DT -><DT ->7.4.2. <A -HREF="config.html#TOGGLE" ->toggle</A -></DT -><DT ->7.4.3. <A -HREF="config.html#ENABLE-REMOTE-TOGGLE" ->enable-remote-toggle</A -></DT -><DT ->7.4.4. <A -HREF="config.html#ENABLE-REMOTE-HTTP-TOGGLE" ->enable-remote-http-toggle</A -></DT -><DT ->7.4.5. <A -HREF="config.html#ENABLE-EDIT-ACTIONS" ->enable-edit-actions</A -></DT -><DT ->7.4.6. <A -HREF="config.html#ENFORCE-BLOCKS" ->enforce-blocks</A -></DT -><DT ->7.4.7. <A -HREF="config.html#ACLS" ->ACLs: permit-access and deny-access</A -></DT -><DT ->7.4.8. <A -HREF="config.html#BUFFER-LIMIT" ->buffer-limit</A -></DT -></DL -></DD -><DT ->7.5. <A -HREF="config.html#FORWARDING" ->Forwarding</A -></DT -><DD -><DL -><DT ->7.5.1. <A -HREF="config.html#FORWARD" ->forward</A -></DT -><DT ->7.5.2. <A -HREF="config.html#SOCKS" ->forward-socks4, forward-socks4a and forward-socks5</A -></DT -><DT ->7.5.3. <A -HREF="config.html#ADVANCED-FORWARDING-EXAMPLES" ->Advanced Forwarding Examples</A -></DT -><DT ->7.5.4. <A -HREF="config.html#FORWARDED-CONNECT-RETRIES" ->forwarded-connect-retries</A -></DT -></DL -></DD -><DT ->7.6. <A -HREF="config.html#MISC" ->Miscellaneous</A -></DT -><DD -><DL -><DT ->7.6.1. <A -HREF="config.html#ACCEPT-INTERCEPTED-REQUESTS" ->accept-intercepted-requests</A -></DT -><DT ->7.6.2. <A -HREF="config.html#ALLOW-CGI-REQUEST-CRUNCHING" ->allow-cgi-request-crunching</A -></DT -><DT ->7.6.3. <A -HREF="config.html#SPLIT-LARGE-FORMS" ->split-large-forms</A -></DT -><DT ->7.6.4. <A -HREF="config.html#KEEP-ALIVE-TIMEOUT" ->keep-alive-timeout</A -></DT -><DT ->7.6.5. <A -HREF="config.html#DEFAULT-SERVER-TIMEOUT" ->default-server-timeout</A -></DT -><DT ->7.6.6. <A -HREF="config.html#CONNECTION-SHARING" ->connection-sharing</A -></DT -><DT ->7.6.7. <A -HREF="config.html#SOCKET-TIMEOUT" ->socket-timeout</A -></DT -><DT ->7.6.8. <A -HREF="config.html#MAX-CLIENT-CONNECTIONS" ->max-client-connections</A -></DT -><DT ->7.6.9. <A -HREF="config.html#HANDLE-AS-EMPTY-DOC-RETURNS-OK" ->handle-as-empty-doc-returns-ok</A -></DT -><DT ->7.6.10. <A -HREF="config.html#ENABLE-COMPRESSION" ->enable-compression</A -></DT -><DT ->7.6.11. <A -HREF="config.html#COMPRESSION-LEVEL" ->compression-level</A -></DT -></DL -></DD -><DT ->7.7. <A -HREF="config.html#WINDOWS-GUI" ->Windows GUI Options</A -></DT -></DL -></DD -><DT ->8. <A -HREF="actions-file.html" ->Actions Files</A -></DT -><DD -><DL -><DT ->8.1. <A -HREF="actions-file.html#AEN2724" ->Finding the Right Mix</A -></DT -><DT ->8.2. <A -HREF="actions-file.html#AEN2731" ->How to Edit</A -></DT -><DT ->8.3. <A -HREF="actions-file.html#ACTIONS-APPLY" ->How Actions are Applied to Requests</A -></DT -><DT ->8.4. <A -HREF="actions-file.html#AF-PATTERNS" ->Patterns</A -></DT -><DD -><DL -><DT ->8.4.1. <A -HREF="actions-file.html#AEN2843" ->The Domain Pattern</A -></DT -><DT ->8.4.2. <A -HREF="actions-file.html#AEN2919" ->The Path Pattern</A -></DT -><DT ->8.4.3. <A -HREF="actions-file.html#TAG-PATTERN" ->The Tag Pattern</A -></DT -></DL -></DD -><DT ->8.5. <A -HREF="actions-file.html#ACTIONS" ->Actions</A -></DT -><DD -><DL -><DT ->8.5.1. <A -HREF="actions-file.html#ADD-HEADER" ->add-header</A -></DT -><DT ->8.5.2. <A -HREF="actions-file.html#BLOCK" ->block</A -></DT -><DT ->8.5.3. <A -HREF="actions-file.html#CHANGE-X-FORWARDED-FOR" ->change-x-forwarded-for</A -></DT -><DT ->8.5.4. <A -HREF="actions-file.html#CLIENT-HEADER-FILTER" ->client-header-filter</A -></DT -><DT ->8.5.5. <A -HREF="actions-file.html#CLIENT-HEADER-TAGGER" ->client-header-tagger</A -></DT -><DT ->8.5.6. <A -HREF="actions-file.html#CONTENT-TYPE-OVERWRITE" ->content-type-overwrite</A -></DT -><DT ->8.5.7. <A -HREF="actions-file.html#CRUNCH-CLIENT-HEADER" ->crunch-client-header</A -></DT -><DT ->8.5.8. <A -HREF="actions-file.html#CRUNCH-IF-NONE-MATCH" ->crunch-if-none-match</A -></DT -><DT ->8.5.9. <A -HREF="actions-file.html#CRUNCH-INCOMING-COOKIES" ->crunch-incoming-cookies</A -></DT -><DT ->8.5.10. <A -HREF="actions-file.html#CRUNCH-SERVER-HEADER" ->crunch-server-header</A -></DT -><DT ->8.5.11. <A -HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES" ->crunch-outgoing-cookies</A -></DT -><DT ->8.5.12. <A -HREF="actions-file.html#DEANIMATE-GIFS" ->deanimate-gifs</A -></DT -><DT ->8.5.13. <A -HREF="actions-file.html#DOWNGRADE-HTTP-VERSION" ->downgrade-http-version</A -></DT -><DT ->8.5.14. <A -HREF="actions-file.html#FAST-REDIRECTS" ->fast-redirects</A -></DT -><DT ->8.5.15. <A -HREF="actions-file.html#FILTER" ->filter</A -></DT -><DT ->8.5.16. <A -HREF="actions-file.html#FORCE-TEXT-MODE" ->force-text-mode</A -></DT -><DT ->8.5.17. <A -HREF="actions-file.html#FORWARD-OVERRIDE" ->forward-override</A -></DT -><DT ->8.5.18. <A -HREF="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" ->handle-as-empty-document</A -></DT -><DT ->8.5.19. <A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></DT -><DT ->8.5.20. <A -HREF="actions-file.html#HIDE-ACCEPT-LANGUAGE" ->hide-accept-language</A -></DT -><DT ->8.5.21. <A -HREF="actions-file.html#HIDE-CONTENT-DISPOSITION" ->hide-content-disposition</A -></DT -><DT ->8.5.22. <A -HREF="actions-file.html#HIDE-IF-MODIFIED-SINCE" ->hide-if-modified-since</A -></DT -><DT ->8.5.23. <A -HREF="actions-file.html#HIDE-FROM-HEADER" ->hide-from-header</A -></DT -><DT ->8.5.24. <A -HREF="actions-file.html#HIDE-REFERRER" ->hide-referrer</A -></DT -><DT ->8.5.25. <A -HREF="actions-file.html#HIDE-USER-AGENT" ->hide-user-agent</A -></DT -><DT ->8.5.26. <A -HREF="actions-file.html#LIMIT-CONNECT" ->limit-connect</A -></DT -><DT ->8.5.27. <A -HREF="actions-file.html#PREVENT-COMPRESSION" ->prevent-compression</A -></DT -><DT ->8.5.28. <A -HREF="actions-file.html#OVERWRITE-LAST-MODIFIED" ->overwrite-last-modified</A -></DT -><DT ->8.5.29. <A -HREF="actions-file.html#REDIRECT" ->redirect</A -></DT -><DT ->8.5.30. <A -HREF="actions-file.html#SERVER-HEADER-FILTER" ->server-header-filter</A -></DT -><DT ->8.5.31. <A -HREF="actions-file.html#SERVER-HEADER-TAGGER" ->server-header-tagger</A -></DT -><DT ->8.5.32. <A -HREF="actions-file.html#SESSION-COOKIES-ONLY" ->session-cookies-only</A -></DT -><DT ->8.5.33. <A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker</A -></DT -><DT ->8.5.34. <A -HREF="actions-file.html#AEN4549" ->Summary</A -></DT -></DL -></DD -><DT ->8.6. <A -HREF="actions-file.html#ALIASES" ->Aliases</A -></DT -><DT ->8.7. <A -HREF="actions-file.html#ACT-EXAMPLES" ->Actions Files Tutorial</A -></DT -><DD -><DL -><DT ->8.7.1. <A -HREF="actions-file.html#AEN4613" ->match-all.action</A -></DT -><DT ->8.7.2. <A -HREF="actions-file.html#AEN4635" ->default.action</A -></DT -><DT ->8.7.3. <A -HREF="actions-file.html#AEN4748" ->user.action</A -></DT -></DL -></DD -></DL -></DD -><DT ->9. <A -HREF="filter-file.html" ->Filter Files</A -></DT -><DD -><DL -><DT ->9.1. <A -HREF="filter-file.html#AEN4903" ->Filter File Tutorial</A -></DT -><DT ->9.2. <A -HREF="filter-file.html#PREDEFINED-FILTERS" ->The Pre-defined Filters</A -></DT -></DL -></DD -><DT ->10. <A -HREF="templates.html" ->Privoxy's Template Files</A -></DT -><DT ->11. <A -HREF="contact.html" ->Contacting the Developers, Bug Reporting and Feature -Requests</A -></DT -><DD -><DL -><DT ->11.1. <A -HREF="contact.html#CONTACT-SUPPORT" ->Get Support</A -></DT -><DT ->11.2. <A -HREF="contact.html#REPORTING" ->Reporting Problems</A -></DT -><DD -><DL -><DT ->11.2.1. <A -HREF="contact.html#CONTACT-ADS" ->Reporting Ads or Other Configuration Problems</A -></DT -><DT ->11.2.2. <A -HREF="contact.html#CONTACT-BUGS" ->Reporting Bugs</A -></DT -></DL -></DD -><DT ->11.3. <A -HREF="contact.html#CONTACT-FEATURE" ->Request New Features</A -></DT -><DT ->11.4. <A -HREF="contact.html#MAILING-LISTS" ->Mailing Lists</A -></DT -></DL -></DD -><DT ->12. <A -HREF="copyright.html" ->Privoxy Copyright, License and History</A -></DT -><DD -><DL -><DT ->12.1. <A -HREF="copyright.html#AEN5383" ->License</A -></DT -><DT ->12.2. <A -HREF="copyright.html#HISTORY" ->History</A -></DT -><DT ->12.3. <A -HREF="copyright.html#AUTHORS" ->Authors</A -></DT -></DL -></DD -><DT ->13. <A -HREF="seealso.html" ->See Also</A -></DT -><DT ->14. <A -HREF="appendix.html" ->Appendix</A -></DT -><DD -><DL -><DT ->14.1. <A -HREF="appendix.html#REGEX" ->Regular Expressions</A -></DT -><DT ->14.2. <A -HREF="appendix.html#AEN5636" ->Privoxy's Internal Pages</A -></DT -><DD -><DL -><DT ->14.2.1. <A -HREF="appendix.html#BOOKMARKLETS" ->Bookmarklets</A -></DT -></DL -></DD -><DT ->14.3. <A -HREF="appendix.html#CHAIN" ->Chain of Events</A -></DT -><DT ->14.4. <A -HREF="appendix.html#ACTIONSANAT" ->Troubleshooting: Anatomy of an Action</A -></DT -></DL -></DD -></DL -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -> </TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="introduction.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -> </TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Introduction</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy 3.0.18 User Manual + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="NEXT" title="Introduction" href="introduction.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c2 {text-align: left} + dt.c1 {font-weight: bold} +</style> + </head> + <body class="ARTICLE"> + <div class="ARTICLE"> + <div class="TITLEPAGE"> + <h1 class="TITLE"> + <a name="AEN2">Privoxy 3.0.18 User Manual</a> + </h1> + <p class="PUBDATE"> + <sub><a href="copyright.html">Copyright</a> © 2001-2011 by <a + href="http://www.privoxy.org/" target="_top">Privoxy + Developers</a></sub><br> + </p> + <p class="PUBDATE"> + $Id: index.html,v 1.77 2011/08/26 16:14:24 fabiankeil Exp $<br> + </p> + <div> + <a name="AEN9"></a> + <p> + The <i class="CITETITLE">Privoxy User Manual</i> gives users + information on how to install, configure and use <a href= + "http://www.privoxy.org/" target="_top">Privoxy</a>. + </p> + <p> + Privoxy is a non-caching web proxy with advanced filtering + capabilities for enhancing privacy, modifying web page data and + HTTP headers, controlling access, and removing ads and other + obnoxious Internet junk. Privoxy has a flexible configuration and + can be customized to suit individual needs and tastes. It has + application for both stand-alone systems and multi-user networks. + </p> + <p> + Privoxy is Free Software and licensed under the GNU GPLv2. + </p> + <p> + Privoxy is an associated project of Software in the Public + Interest (SPI). + </p> + <p> + Helping hands and donations are welcome: + </p> + <ul> + <li> + <p> + <a href="http://www.privoxy.org/faq/general.html#PARTICIPATE" + target= + "_top">http://www.privoxy.org/faq/general.html#PARTICIPATE</a> + </p> + </li> + <li> + <p> + <a href="http://www.privoxy.org/faq/general.html#DONATE" + target= + "_top">http://www.privoxy.org/faq/general.html#DONATE</a> + </p> + </li> + </ul> + + <p> + You can find the latest version of the <i class= + "CITETITLE">Privoxy User Manual</i> at <a href= + "http://www.privoxy.org/user-manual/" target= + "_top">http://www.privoxy.org/user-manual/</a>. Please see the <a + href="contact.html">Contact section</a> on how to contact the + developers. + </p> + </div> + <hr> + </div> + <div class="TOC"> + <dl> + <dt class="c1"> + Table of Contents + </dt> + <dt> + 1. <a href="introduction.html">Introduction</a> + </dt> + <dd> + <dl> + <dt> + 1.1. <a href="introduction.html#FEATURES">Features</a> + </dt> + </dl> + </dd> + <dt> + 2. <a href="installation.html">Installation</a> + </dt> + <dd> + <dl> + <dt> + 2.1. <a href="installation.html#INSTALLATION-PACKAGES">Binary + Packages</a> + </dt> + <dd> + <dl> + <dt> + 2.1.1. <a href= + "installation.html#INSTALLATION-PACK-RPM">Red Hat and + Fedora RPMs</a> + </dt> + <dt> + 2.1.2. <a href= + "installation.html#INSTALLATION-DEB">Debian and + Ubuntu</a> + </dt> + <dt> + 2.1.3. <a href= + "installation.html#INSTALLATION-PACK-WIN">Windows</a> + </dt> + <dt> + 2.1.4. <a href= + "installation.html#INSTALLATION-PACK-BINTGZ">Solaris</a> + </dt> + <dt> + 2.1.5. <a href= + "installation.html#INSTALLATION-OS2">OS/2</a> + </dt> + <dt> + 2.1.6. <a href="installation.html#INSTALLATION-MAC">Mac + OS X</a> + </dt> + <dt> + 2.1.7. <a href= + "installation.html#INSTALLATION-AMIGA">AmigaOS</a> + </dt> + <dt> + 2.1.8. <a href= + "installation.html#INSTALLATION-TBZ">FreeBSD</a> + </dt> + <dt> + 2.1.9. <a href= + "installation.html#INSTALLATTION-GENTOO">Gentoo</a> + </dt> + </dl> + </dd> + <dt> + 2.2. <a href="installation.html#INSTALLATION-SOURCE">Building + from Source</a> + </dt> + <dt> + 2.3. <a href= + "installation.html#INSTALLATION-KEEPUPDATED">Keeping your + Installation Up-to-Date</a> + </dt> + </dl> + </dd> + <dt> + 3. <a href="whatsnew.html">What's New in this Release</a> + </dt> + <dd> + <dl> + <dt> + 3.1. <a href="whatsnew.html#UPGRADERSNOTE">Note to + Upgraders</a> + </dt> + </dl> + </dd> + <dt> + 4. <a href="quickstart.html">Quickstart to Using Privoxy</a> + </dt> + <dd> + <dl> + <dt> + 4.1. <a href= + "quickstart.html#QUICKSTART-AD-BLOCKING">Quickstart to Ad + Blocking</a> + </dt> + </dl> + </dd> + <dt> + 5. <a href="startup.html">Starting Privoxy</a> + </dt> + <dd> + <dl> + <dt> + 5.1. <a href="startup.html#START-REDHAT">Red Hat and + Fedora</a> + </dt> + <dt> + 5.2. <a href="startup.html#START-DEBIAN">Debian</a> + </dt> + <dt> + 5.3. <a href="startup.html#START-WINDOWS">Windows</a> + </dt> + <dt> + 5.4. <a href="startup.html#START-UNICES">Solaris, NetBSD, + FreeBSD, HP-UX and others</a> + </dt> + <dt> + 5.5. <a href="startup.html#START-OS2">OS/2</a> + </dt> + <dt> + 5.6. <a href="startup.html#START-MACOSX">Mac OS X</a> + </dt> + <dt> + 5.7. <a href="startup.html#START-AMIGAOS">AmigaOS</a> + </dt> + <dt> + 5.8. <a href="startup.html#START-GENTOO">Gentoo</a> + </dt> + <dt> + 5.9. <a href="startup.html#CMDOPTIONS">Command Line + Options</a> + </dt> + </dl> + </dd> + <dt> + 6. <a href="configuration.html">Privoxy Configuration</a> + </dt> + <dd> + <dl> + <dt> + 6.1. <a href="configuration.html#AEN933">Controlling Privoxy + with Your Web Browser</a> + </dt> + <dt> + 6.2. <a href="configuration.html#CONFOVERVIEW">Configuration + Files Overview</a> + </dt> + </dl> + </dd> + <dt> + 7. <a href="config.html">The Main Configuration File</a> + </dt> + <dd> + <dl> + <dt> + 7.1. <a href="config.html#LOCAL-SET-UP">Local Set-up + Documentation</a> + </dt> + <dd> + <dl> + <dt> + 7.1.1. <a href="config.html#USER-MANUAL">user-manual</a> + </dt> + <dt> + 7.1.2. <a href= + "config.html#TRUST-INFO-URL">trust-info-url</a> + </dt> + <dt> + 7.1.3. <a href= + "config.html#ADMIN-ADDRESS">admin-address</a> + </dt> + <dt> + 7.1.4. <a href= + "config.html#PROXY-INFO-URL">proxy-info-url</a> + </dt> + </dl> + </dd> + <dt> + 7.2. <a href="config.html#CONF-LOG-LOC">Configuration and Log + File Locations</a> + </dt> + <dd> + <dl> + <dt> + 7.2.1. <a href="config.html#CONFDIR">confdir</a> + </dt> + <dt> + 7.2.2. <a href="config.html#TEMPLDIR">templdir</a> + </dt> + <dt> + 7.2.3. <a href="config.html#LOGDIR">logdir</a> + </dt> + <dt> + 7.2.4. <a href="config.html#ACTIONSFILE">actionsfile</a> + </dt> + <dt> + 7.2.5. <a href="config.html#FILTERFILE">filterfile</a> + </dt> + <dt> + 7.2.6. <a href="config.html#LOGFILE">logfile</a> + </dt> + <dt> + 7.2.7. <a href="config.html#TRUSTFILE">trustfile</a> + </dt> + </dl> + </dd> + <dt> + 7.3. <a href="config.html#DEBUGGING">Debugging</a> + </dt> + <dd> + <dl> + <dt> + 7.3.1. <a href="config.html#DEBUG">debug</a> + </dt> + <dt> + 7.3.2. <a href= + "config.html#SINGLE-THREADED">single-threaded</a> + </dt> + <dt> + 7.3.3. <a href="config.html#HOSTNAME">hostname</a> + </dt> + </dl> + </dd> + <dt> + 7.4. <a href="config.html#ACCESS-CONTROL">Access Control and + Security</a> + </dt> + <dd> + <dl> + <dt> + 7.4.1. <a href= + "config.html#LISTEN-ADDRESS">listen-address</a> + </dt> + <dt> + 7.4.2. <a href="config.html#TOGGLE">toggle</a> + </dt> + <dt> + 7.4.3. <a href= + "config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a> + </dt> + <dt> + 7.4.4. <a href= + "config.html#ENABLE-REMOTE-HTTP-TOGGLE">enable-remote-http-toggle</a> + </dt> + <dt> + 7.4.5. <a href= + "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a> + </dt> + <dt> + 7.4.6. <a href= + "config.html#ENFORCE-BLOCKS">enforce-blocks</a> + </dt> + <dt> + 7.4.7. <a href="config.html#ACLS">ACLs: permit-access and + deny-access</a> + </dt> + <dt> + 7.4.8. <a href= + "config.html#BUFFER-LIMIT">buffer-limit</a> + </dt> + </dl> + </dd> + <dt> + 7.5. <a href="config.html#FORWARDING">Forwarding</a> + </dt> + <dd> + <dl> + <dt> + 7.5.1. <a href="config.html#FORWARD">forward</a> + </dt> + <dt> + 7.5.2. <a href="config.html#SOCKS">forward-socks4, + forward-socks4a and forward-socks5</a> + </dt> + <dt> + 7.5.3. <a href= + "config.html#ADVANCED-FORWARDING-EXAMPLES">Advanced + Forwarding Examples</a> + </dt> + <dt> + 7.5.4. <a href= + "config.html#FORWARDED-CONNECT-RETRIES">forwarded-connect-retries</a> + </dt> + </dl> + </dd> + <dt> + 7.6. <a href="config.html#MISC">Miscellaneous</a> + </dt> + <dd> + <dl> + <dt> + 7.6.1. <a href= + "config.html#ACCEPT-INTERCEPTED-REQUESTS">accept-intercepted-requests</a> + </dt> + <dt> + 7.6.2. <a href= + "config.html#ALLOW-CGI-REQUEST-CRUNCHING">allow-cgi-request-crunching</a> + </dt> + <dt> + 7.6.3. <a href= + "config.html#SPLIT-LARGE-FORMS">split-large-forms</a> + </dt> + <dt> + 7.6.4. <a href= + "config.html#KEEP-ALIVE-TIMEOUT">keep-alive-timeout</a> + </dt> + <dt> + 7.6.5. <a href= + "config.html#DEFAULT-SERVER-TIMEOUT">default-server-timeout</a> + </dt> + <dt> + 7.6.6. <a href= + "config.html#CONNECTION-SHARING">connection-sharing</a> + </dt> + <dt> + 7.6.7. <a href= + "config.html#SOCKET-TIMEOUT">socket-timeout</a> + </dt> + <dt> + 7.6.8. <a href= + "config.html#MAX-CLIENT-CONNECTIONS">max-client-connections</a> + </dt> + <dt> + 7.6.9. <a href= + "config.html#HANDLE-AS-EMPTY-DOC-RETURNS-OK">handle-as-empty-doc-returns-ok</a> + </dt> + <dt> + 7.6.10. <a href= + "config.html#ENABLE-COMPRESSION">enable-compression</a> + </dt> + <dt> + 7.6.11. <a href= + "config.html#COMPRESSION-LEVEL">compression-level</a> + </dt> + </dl> + </dd> + <dt> + 7.7. <a href="config.html#WINDOWS-GUI">Windows GUI + Options</a> + </dt> + </dl> + </dd> + <dt> + 8. <a href="actions-file.html">Actions Files</a> + </dt> + <dd> + <dl> + <dt> + 8.1. <a href="actions-file.html#AEN2724">Finding the Right + Mix</a> + </dt> + <dt> + 8.2. <a href="actions-file.html#AEN2731">How to Edit</a> + </dt> + <dt> + 8.3. <a href="actions-file.html#ACTIONS-APPLY">How Actions + are Applied to Requests</a> + </dt> + <dt> + 8.4. <a href="actions-file.html#AF-PATTERNS">Patterns</a> + </dt> + <dd> + <dl> + <dt> + 8.4.1. <a href="actions-file.html#AEN2843">The Domain + Pattern</a> + </dt> + <dt> + 8.4.2. <a href="actions-file.html#AEN2919">The Path + Pattern</a> + </dt> + <dt> + 8.4.3. <a href="actions-file.html#TAG-PATTERN">The Tag + Pattern</a> + </dt> + </dl> + </dd> + <dt> + 8.5. <a href="actions-file.html#ACTIONS">Actions</a> + </dt> + <dd> + <dl> + <dt> + 8.5.1. <a href= + "actions-file.html#ADD-HEADER">add-header</a> + </dt> + <dt> + 8.5.2. <a href="actions-file.html#BLOCK">block</a> + </dt> + <dt> + 8.5.3. <a href= + "actions-file.html#CHANGE-X-FORWARDED-FOR">change-x-forwarded-for</a> + </dt> + <dt> + 8.5.4. <a href= + "actions-file.html#CLIENT-HEADER-FILTER">client-header-filter</a> + </dt> + <dt> + 8.5.5. <a href= + "actions-file.html#CLIENT-HEADER-TAGGER">client-header-tagger</a> + </dt> + <dt> + 8.5.6. <a href= + "actions-file.html#CONTENT-TYPE-OVERWRITE">content-type-overwrite</a> + </dt> + <dt> + 8.5.7. <a href= + "actions-file.html#CRUNCH-CLIENT-HEADER">crunch-client-header</a> + </dt> + <dt> + 8.5.8. <a href= + "actions-file.html#CRUNCH-IF-NONE-MATCH">crunch-if-none-match</a> + </dt> + <dt> + 8.5.9. <a href= + "actions-file.html#CRUNCH-INCOMING-COOKIES">crunch-incoming-cookies</a> + </dt> + <dt> + 8.5.10. <a href= + "actions-file.html#CRUNCH-SERVER-HEADER">crunch-server-header</a> + </dt> + <dt> + 8.5.11. <a href= + "actions-file.html#CRUNCH-OUTGOING-COOKIES">crunch-outgoing-cookies</a> + </dt> + <dt> + 8.5.12. <a href= + "actions-file.html#DEANIMATE-GIFS">deanimate-gifs</a> + </dt> + <dt> + 8.5.13. <a href= + "actions-file.html#DOWNGRADE-HTTP-VERSION">downgrade-http-version</a> + </dt> + <dt> + 8.5.14. <a href= + "actions-file.html#FAST-REDIRECTS">fast-redirects</a> + </dt> + <dt> + 8.5.15. <a href="actions-file.html#FILTER">filter</a> + </dt> + <dt> + 8.5.16. <a href= + "actions-file.html#FORCE-TEXT-MODE">force-text-mode</a> + </dt> + <dt> + 8.5.17. <a href= + "actions-file.html#FORWARD-OVERRIDE">forward-override</a> + </dt> + <dt> + 8.5.18. <a href= + "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a> + </dt> + <dt> + 8.5.19. <a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a> + </dt> + <dt> + 8.5.20. <a href= + "actions-file.html#HIDE-ACCEPT-LANGUAGE">hide-accept-language</a> + </dt> + <dt> + 8.5.21. <a href= + "actions-file.html#HIDE-CONTENT-DISPOSITION">hide-content-disposition</a> + </dt> + <dt> + 8.5.22. <a href= + "actions-file.html#HIDE-IF-MODIFIED-SINCE">hide-if-modified-since</a> + </dt> + <dt> + 8.5.23. <a href= + "actions-file.html#HIDE-FROM-HEADER">hide-from-header</a> + </dt> + <dt> + 8.5.24. <a href= + "actions-file.html#HIDE-REFERRER">hide-referrer</a> + </dt> + <dt> + 8.5.25. <a href= + "actions-file.html#HIDE-USER-AGENT">hide-user-agent</a> + </dt> + <dt> + 8.5.26. <a href= + "actions-file.html#LIMIT-CONNECT">limit-connect</a> + </dt> + <dt> + 8.5.27. <a href= + "actions-file.html#PREVENT-COMPRESSION">prevent-compression</a> + </dt> + <dt> + 8.5.28. <a href= + "actions-file.html#OVERWRITE-LAST-MODIFIED">overwrite-last-modified</a> + </dt> + <dt> + 8.5.29. <a href="actions-file.html#REDIRECT">redirect</a> + </dt> + <dt> + 8.5.30. <a href= + "actions-file.html#SERVER-HEADER-FILTER">server-header-filter</a> + </dt> + <dt> + 8.5.31. <a href= + "actions-file.html#SERVER-HEADER-TAGGER">server-header-tagger</a> + </dt> + <dt> + 8.5.32. <a href= + "actions-file.html#SESSION-COOKIES-ONLY">session-cookies-only</a> + </dt> + <dt> + 8.5.33. <a href= + "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a> + </dt> + <dt> + 8.5.34. <a href="actions-file.html#AEN4549">Summary</a> + </dt> + </dl> + </dd> + <dt> + 8.6. <a href="actions-file.html#ALIASES">Aliases</a> + </dt> + <dt> + 8.7. <a href="actions-file.html#ACT-EXAMPLES">Actions Files + Tutorial</a> + </dt> + <dd> + <dl> + <dt> + 8.7.1. <a href= + "actions-file.html#AEN4613">match-all.action</a> + </dt> + <dt> + 8.7.2. <a href= + "actions-file.html#AEN4635">default.action</a> + </dt> + <dt> + 8.7.3. <a href= + "actions-file.html#AEN4748">user.action</a> + </dt> + </dl> + </dd> + </dl> + </dd> + <dt> + 9. <a href="filter-file.html">Filter Files</a> + </dt> + <dd> + <dl> + <dt> + 9.1. <a href="filter-file.html#AEN4903">Filter File + Tutorial</a> + </dt> + <dt> + 9.2. <a href="filter-file.html#PREDEFINED-FILTERS">The + Pre-defined Filters</a> + </dt> + </dl> + </dd> + <dt> + 10. <a href="templates.html">Privoxy's Template Files</a> + </dt> + <dt> + 11. <a href="contact.html">Contacting the Developers, Bug + Reporting and Feature Requests</a> + </dt> + <dd> + <dl> + <dt> + 11.1. <a href="contact.html#CONTACT-SUPPORT">Get Support</a> + </dt> + <dt> + 11.2. <a href="contact.html#REPORTING">Reporting Problems</a> + </dt> + <dd> + <dl> + <dt> + 11.2.1. <a href="contact.html#CONTACT-ADS">Reporting Ads + or Other Configuration Problems</a> + </dt> + <dt> + 11.2.2. <a href="contact.html#CONTACT-BUGS">Reporting + Bugs</a> + </dt> + </dl> + </dd> + <dt> + 11.3. <a href="contact.html#CONTACT-FEATURE">Request New + Features</a> + </dt> + <dt> + 11.4. <a href="contact.html#MAILING-LISTS">Mailing Lists</a> + </dt> + </dl> + </dd> + <dt> + 12. <a href="copyright.html">Privoxy Copyright, License and + History</a> + </dt> + <dd> + <dl> + <dt> + 12.1. <a href="copyright.html#AEN5383">License</a> + </dt> + <dt> + 12.2. <a href="copyright.html#HISTORY">History</a> + </dt> + <dt> + 12.3. <a href="copyright.html#AUTHORS">Authors</a> + </dt> + </dl> + </dd> + <dt> + 13. <a href="seealso.html">See Also</a> + </dt> + <dt> + 14. <a href="appendix.html">Appendix</a> + </dt> + <dd> + <dl> + <dt> + 14.1. <a href="appendix.html#REGEX">Regular Expressions</a> + </dt> + <dt> + 14.2. <a href="appendix.html#AEN5636">Privoxy's Internal + Pages</a> + </dt> + <dd> + <dl> + <dt> + 14.2.1. <a href= + "appendix.html#BOOKMARKLETS">Bookmarklets</a> + </dt> + </dl> + </dd> + <dt> + 14.3. <a href="appendix.html#CHAIN">Chain of Events</a> + </dt> + <dt> + 14.4. <a href="appendix.html#ACTIONSANAT">Troubleshooting: + Anatomy of an Action</a> + </dt> + </dl> + </dd> + </dl> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c2"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + <a href="introduction.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Introduction + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/installation.html b/doc/webserver/user-manual/installation.html index 8d897064..b57ae844 100644 --- a/doc/webserver/user-manual/installation.html +++ b/doc/webserver/user-manual/installation.html @@ -1,1082 +1,646 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Installation</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Introduction" -HREF="introduction.html"><LINK -REL="NEXT" -TITLE="What's New in this Release" -HREF="whatsnew.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="introduction.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="whatsnew.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="INSTALLATION" ->2. Installation</A -></H1 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 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 - <A -HREF="http://sourceforge.net/projects/ijbswa/" -TARGET="_top" ->Privoxy Project - Page</A ->.</P -><P -> Note: - On some platforms, the installer may remove previously installed versions, if - found. (See below for your platform). In any case <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->be sure to backup - your old configuration if it is valuable to you.</I -></SPAN -> See the <A -HREF="whatsnew.html#UPGRADERSNOTE" ->note to upgraders</A -> section below.</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="INSTALLATION-PACKAGES" ->2.1. Binary Packages</A -></H2 -><P ->How to install the binary packages depends on your operating system:</P -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATION-PACK-RPM" ->2.1.1. Red Hat and Fedora RPMs</A -></H3 -><P -> RPMs can be installed with <TT -CLASS="LITERAL" ->rpm -Uvh privoxy-3.0.18-1.rpm</TT ->, - and will use <TT -CLASS="FILENAME" ->/etc/privoxy</TT -> for the location - of configuration files.</P -><P -> Note that on Red Hat, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->not</I -></SPAN -> be automatically started on system boot. You will - need to enable that using <B -CLASS="COMMAND" ->chkconfig</B ->, - <B -CLASS="COMMAND" ->ntsysv</B ->, or similar methods. </P -><P -> If you have problems with failed dependencies, try rebuilding the SRC RPM: - <TT -CLASS="LITERAL" ->rpm --rebuild privoxy-3.0.18-1.src.rpm</TT ->. This - will use your locally installed libraries and RPM version. </P -><P -> Also note that if you have a <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN -> RPM installed - on your system, you need to remove it first, because the packages conflict. - Otherwise, RPM will try to remove <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN -> - automatically if found, before installing <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATION-DEB" ->2.1.2. Debian and Ubuntu</A -></H3 -><P -> DEBs can be installed with <TT -CLASS="LITERAL" ->apt-get install privoxy</TT ->, - and will use <TT -CLASS="FILENAME" ->/etc/privoxy</TT -> for the location of - configuration files.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATION-PACK-WIN" ->2.1.3. Windows</A -></H3 -><P -> 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 <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> in. </P -><P -> Version 3.0.5 beta introduced full <SPAN -CLASS="APPLICATION" ->Windows</SPAN -> service - functionality. On Windows only, the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - program has two new command line arguments to install and uninstall - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> as a <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->service</I -></SPAN ->.</P -><P -></P -><DIV -CLASS="VARIABLELIST" -><DL -><DT ->Arguments:</DT -><DD -><P -> <TT -CLASS="REPLACEABLE" -><I ->--install</I -></TT ->[:<TT -CLASS="REPLACEABLE" -><I ->service_name</I -></TT ->] - </P -><P -> <TT -CLASS="REPLACEABLE" -><I ->--uninstall</I -></TT ->[:<TT -CLASS="REPLACEABLE" -><I ->service_name</I -></TT ->] - </P -></DD -></DL -></DIV -><P -> After invoking <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> with - <B -CLASS="COMMAND" ->--install</B ->, you will need to bring up the - <SPAN -CLASS="APPLICATION" ->Windows</SPAN -> service console to assign the user you - want <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to run under, and whether or not you - want it to run whenever the system starts. You can start the - <SPAN -CLASS="APPLICATION" ->Windows</SPAN -> services console with the following - command: <B -CLASS="COMMAND" ->services.msc</B ->. If you do not take the manual step - of modifying <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> service settings, it will - not start. Note too that you will need to give Privoxy a user account that - actually exists, or it will not be permitted to - write to its log and configuration files.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATION-PACK-BINTGZ" ->2.1.4. Solaris</A -></H3 -><P -> Create a new directory, <TT -CLASS="LITERAL" ->cd</TT -> to it, then unzip and - untar the archive. For the most part, you'll have to figure out where - things go. </P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATION-OS2" ->2.1.5. OS/2</A -></H3 -><P -> First, make sure that no previous installations of - <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN -> and / or - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> are left on your - system. Check that no <SPAN -CLASS="APPLICATION" ->Junkbuster</SPAN -> - or <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> objects are in - your startup folder. </P -><P -> Then, just double-click the WarpIN self-installing archive, which will - guide you through the installation process. A shadow of the - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> executable will be placed in your - startup folder so it will start automatically whenever OS/2 starts.</P -><P -> The directory you choose to install <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - into will contain all of the configuration files.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATION-MAC" ->2.1.6. Mac OS X</A -></H3 -><P -> Unzip the downloaded file (you can either double-click on the zip file - icon from the Finder, or from the desktop if you downloaded it there). - Then, double-click on the package installer icon and follow the - installation process.</P -><P -> The privoxy service will automatically start after a successful - installation (in addition to every time your computer starts up). To - prevent the privoxy service from automatically starting when your - computer starts up, remove or rename the folder named - <TT -CLASS="LITERAL" ->/Library/StartupItems/Privoxy</TT ->. </P -><P -> To manually start or stop the privoxy service, use the Privoxy Utility - for Mac OS X. This application controls the privoxy service (e.g. - starting and stopping the service as well as uninstalling the software).</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATION-AMIGA" ->2.1.7. AmigaOS</A -></H3 -><P -> Copy and then unpack the <TT -CLASS="FILENAME" ->lha</TT -> archive to a suitable location. - All necessary files will be installed into <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - directory, including all configuration and log files. To uninstall, just - remove this directory.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATION-TBZ" ->2.1.8. FreeBSD</A -></H3 -><P -> Privoxy is part of FreeBSD's Ports Collection, you can build and install - it with <TT -CLASS="LITERAL" ->cd /usr/ports/www/privoxy; make install clean</TT ->.</P -><P -> If you don't use the ports, you can fetch and install - the package with <TT -CLASS="LITERAL" ->pkg_add -r privoxy</TT ->.</P -><P -> The port skeleton and the package can also be downloaded from the - <A -HREF="https://sourceforge.net/project/showfiles.php?group_id=11118" -TARGET="_top" ->File Release - Page</A ->, but there's no reason to use them unless you're interested in the - beta releases which are only available there.</P -></DIV -><DIV -CLASS="SECT3" -><H3 -CLASS="SECT3" -><A -NAME="INSTALLATTION-GENTOO" ->2.1.9. Gentoo</A -></H3 -><P -> Gentoo source packages (Ebuilds) for <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> are - contained in the Gentoo Portage Tree (they are not on the download page, - but there is a Gentoo section, where you can see when a new - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> Version is added to the Portage Tree).</P -><P -> Before installing <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> under Gentoo just do - first <TT -CLASS="LITERAL" ->emerge --sync</TT -> to get the latest changes from the - Portage tree. With <TT -CLASS="LITERAL" ->emerge privoxy</TT -> you install the latest - version.</P -><P -> Configuration files are in <TT -CLASS="FILENAME" ->/etc/privoxy</TT ->, the - documentation is in <TT -CLASS="FILENAME" ->/usr/share/doc/privoxy-3.0.18</TT -> - and the Log directory is in <TT -CLASS="FILENAME" ->/var/log/privoxy</TT ->.</P -></DIV -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="INSTALLATION-SOURCE" ->2.2. Building from Source</A -></H2 -><P -> The most convenient way to obtain the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> sources - is to download the source tarball from our - <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118&package_id=10571" -TARGET="_top" ->project download - page</A ->.</P -><P -> 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 <A -HREF="http://sourceforge.net/cvs/?group_id=11118" -TARGET="_top" ->the - CVS repository</A ->. </P -><P -> To build <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> from source, - <A -HREF="http://www.gnu.org/software/autoconf/autoconf.html" -TARGET="_top" ->autoconf</A ->, - <A -HREF="http://www.gnu.org/software/make/make.html" -TARGET="_top" ->GNU make - (gmake)</A ->, and, of course, a C compiler like <A -HREF="http://www.gnu.org/software/gcc/gcc.html" -TARGET="_top" ->gcc</A -> are required.</P -><P -> When building from a source tarball, - first unpack the source: </P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> tar xzvf privoxy-3.0.18-beta-src.tar.gz - cd privoxy-3.0.18-beta</PRE -></TD -></TR -></TABLE -></P -><P -> For retrieving the current CVS sources, you'll need a CVS client installed. - Note that sources from CVS are typically development quality, and may not be - stable, or well tested. To download CVS source, check the Sourceforge - documentation, which might give commands like:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Installation + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Introduction" href="introduction.html"> + <link rel="NEXT" title="What's New in this Release" href="whatsnew.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="introduction.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="whatsnew.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="INSTALLATION">2. Installation</a> + </h1> + <p> + <span class="APPLICATION">Privoxy</span> 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 <a href= + "http://sourceforge.net/projects/ijbswa/" target="_top">Privoxy + Project Page</a>. + </p> + <p> + Note: On some platforms, the installer may remove previously + installed versions, if found. (See below for your platform). In any + case <span class="emphasis"><i class="EMPHASIS">be sure to backup + your old configuration if it is valuable to you.</i></span> See the + <a href="whatsnew.html#UPGRADERSNOTE">note to upgraders</a> section + below. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="INSTALLATION-PACKAGES">2.1. Binary Packages</a> + </h2> + <p> + How to install the binary packages depends on your operating + system: + </p> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATION-PACK-RPM">2.1.1. Red Hat and Fedora + RPMs</a> + </h3> + <p> + RPMs can be installed with <tt class="LITERAL">rpm -Uvh + privoxy-3.0.18-1.rpm</tt>, and will use <tt class= + "FILENAME">/etc/privoxy</tt> for the location of configuration + files. + </p> + <p> + Note that on Red Hat, <span class="APPLICATION">Privoxy</span> + will <span class="emphasis"><i class="EMPHASIS">not</i></span> be + automatically started on system boot. You will need to enable + that using <b class="COMMAND">chkconfig</b>, <b class= + "COMMAND">ntsysv</b>, or similar methods. + </p> + <p> + If you have problems with failed dependencies, try rebuilding the + SRC RPM: <tt class="LITERAL">rpm --rebuild + privoxy-3.0.18-1.src.rpm</tt>. This will use your locally + installed libraries and RPM version. + </p> + <p> + Also note that if you have a <span class= + "APPLICATION">Junkbuster</span> RPM installed on your system, you + need to remove it first, because the packages conflict. + Otherwise, RPM will try to remove <span class= + "APPLICATION">Junkbuster</span> automatically if found, before + installing <span class="APPLICATION">Privoxy</span>. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATION-DEB">2.1.2. Debian and Ubuntu</a> + </h3> + <p> + DEBs can be installed with <tt class="LITERAL">apt-get install + privoxy</tt>, and will use <tt class="FILENAME">/etc/privoxy</tt> + for the location of configuration files. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATION-PACK-WIN">2.1.3. Windows</a> + </h3> + <p> + 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 <span class= + "APPLICATION">Privoxy</span> in. + </p> + <p> + Version 3.0.5 beta introduced full <span class= + "APPLICATION">Windows</span> service functionality. On Windows + only, the <span class="APPLICATION">Privoxy</span> program has + two new command line arguments to install and uninstall <span + class="APPLICATION">Privoxy</span> as a <span class="emphasis"><i + class="EMPHASIS">service</i></span>. + </p> + <div class="VARIABLELIST"> + <dl> + <dt> + Arguments: + </dt> + <dd> + <p> + <tt class="REPLACEABLE"><i>--install</i></tt>[:<tt class= + "REPLACEABLE"><i>service_name</i></tt>] + </p> + <p> + <tt class="REPLACEABLE"><i>--uninstall</i></tt>[:<tt class= + "REPLACEABLE"><i>service_name</i></tt>] + </p> + </dd> + </dl> + </div> + <p> + After invoking <span class="APPLICATION">Privoxy</span> with <b + class="COMMAND">--install</b>, you will need to bring up the + <span class="APPLICATION">Windows</span> service console to + assign the user you want <span class="APPLICATION">Privoxy</span> + to run under, and whether or not you want it to run whenever the + system starts. You can start the <span class= + "APPLICATION">Windows</span> services console with the following + command: <b class="COMMAND">services.msc</b>. If you do not take + the manual step of modifying <span class= + "APPLICATION">Privoxy's</span> service settings, it will not + start. Note too that you will need to give Privoxy a user account + that actually exists, or it will not be permitted to write to its + log and configuration files. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATION-PACK-BINTGZ">2.1.4. Solaris</a> + </h3> + <p> + Create a new directory, <tt class="LITERAL">cd</tt> to it, then + unzip and untar the archive. For the most part, you'll have to + figure out where things go. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATION-OS2">2.1.5. OS/2</a> + </h3> + <p> + First, make sure that no previous installations of <span class= + "APPLICATION">Junkbuster</span> and / or <span class= + "APPLICATION">Privoxy</span> are left on your system. Check that + no <span class="APPLICATION">Junkbuster</span> or <span class= + "APPLICATION">Privoxy</span> objects are in your startup + folder. + </p> + <p> + Then, just double-click the WarpIN self-installing archive, which + will guide you through the installation process. A shadow of the + <span class="APPLICATION">Privoxy</span> executable will be + placed in your startup folder so it will start automatically + whenever OS/2 starts. + </p> + <p> + The directory you choose to install <span class= + "APPLICATION">Privoxy</span> into will contain all of the + configuration files. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATION-MAC">2.1.6. Mac OS X</a> + </h3> + <p> + Unzip the downloaded file (you can either double-click on the zip + file icon from the Finder, or from the desktop if you downloaded + it there). Then, double-click on the package installer icon and + follow the installation process. + </p> + <p> + The privoxy service will automatically start after a successful + installation (in addition to every time your computer starts up). + To prevent the privoxy service from automatically starting when + your computer starts up, remove or rename the folder named <tt + class="LITERAL">/Library/StartupItems/Privoxy</tt>. + </p> + <p> + To manually start or stop the privoxy service, use the Privoxy + Utility for Mac OS X. This application controls the privoxy + service (e.g. starting and stopping the service as well as + uninstalling the software). + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATION-AMIGA">2.1.7. AmigaOS</a> + </h3> + <p> + Copy and then unpack the <tt class="FILENAME">lha</tt> archive to + a suitable location. All necessary files will be installed into + <span class="APPLICATION">Privoxy</span> directory, including all + configuration and log files. To uninstall, just remove this + directory. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATION-TBZ">2.1.8. FreeBSD</a> + </h3> + <p> + Privoxy is part of FreeBSD's Ports Collection, you can build and + install it with <tt class="LITERAL">cd /usr/ports/www/privoxy; + make install clean</tt>. + </p> + <p> + If you don't use the ports, you can fetch and install the package + with <tt class="LITERAL">pkg_add -r privoxy</tt>. + </p> + <p> + The port skeleton and the package can also be downloaded from the + <a href= + "https://sourceforge.net/project/showfiles.php?group_id=11118" + target="_top">File Release Page</a>, but there's no reason to use + them unless you're interested in the beta releases which are only + available there. + </p> + </div> + <div class="SECT3"> + <h3 class="SECT3"> + <a name="INSTALLATTION-GENTOO">2.1.9. Gentoo</a> + </h3> + <p> + Gentoo source packages (Ebuilds) for <span class= + "APPLICATION">Privoxy</span> are contained in the Gentoo Portage + Tree (they are not on the download page, but there is a Gentoo + section, where you can see when a new <span class= + "APPLICATION">Privoxy</span> Version is added to the Portage + Tree). + </p> + <p> + Before installing <span class="APPLICATION">Privoxy</span> under + Gentoo just do first <tt class="LITERAL">emerge --sync</tt> to + get the latest changes from the Portage tree. With <tt class= + "LITERAL">emerge privoxy</tt> you install the latest version. + </p> + <p> + Configuration files are in <tt class= + "FILENAME">/etc/privoxy</tt>, the documentation is in <tt class= + "FILENAME">/usr/share/doc/privoxy-3.0.18</tt> and the Log + directory is in <tt class="FILENAME">/var/log/privoxy</tt>. + </p> + </div> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="INSTALLATION-SOURCE">2.2. Building from Source</a> + </h2> + <p> + The most convenient way to obtain the <span class= + "APPLICATION">Privoxy</span> sources is to download the source + tarball from our <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118&package_id=10571" + target="_top">project download page</a>. + </p> + <p> + 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 <a href= + "http://sourceforge.net/cvs/?group_id=11118" target="_top">the CVS + repository</a>. + </p> + <p> + To build <span class="APPLICATION">Privoxy</span> from source, <a + href="http://www.gnu.org/software/autoconf/autoconf.html" target= + "_top">autoconf</a>, <a href= + "http://www.gnu.org/software/make/make.html" target="_top">GNU make + (gmake)</a>, and, of course, a C compiler like <a href= + "http://www.gnu.org/software/gcc/gcc.html" target="_top">gcc</a> + are required. + </p> + <p> + When building from a source tarball, first unpack the source: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + tar xzvf privoxy-3.0.18-beta-src.tar.gz + cd privoxy-3.0.18-beta +</pre> + </td> + </tr> + </table> + + <p> + For retrieving the current CVS sources, you'll need a CVS client + installed. Note that sources from CVS are typically development + quality, and may not be stable, or well tested. To download CVS + source, check the Sourceforge documentation, which might give + commands like: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co current - cd current</PRE -></TD -></TR -></TABLE -></P -><P -> This will create a directory named <TT -CLASS="FILENAME" ->current/</TT ->, which will - contain the source tree.</P -><P -> You can also check out any <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - <SPAN -CLASS="QUOTE" ->"branch"</SPAN ->, just exchange the <SPAN -CLASS="APPLICATION" ->current</SPAN -> - name with the wanted branch name (Example: v_3_0_branch for the 3.0 cvs - tree).</P -><P -> It is also strongly recommended to not run <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - as root. You should configure/install/run <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> as - an unprivileged user, preferably by creating a <SPAN -CLASS="QUOTE" ->"privoxy"</SPAN -> user - and group just for this purpose. See your local documentation for the correct - command line to do add new users and groups (something like - <B -CLASS="COMMAND" ->adduser</B ->, but the command syntax may vary from platform - to platform). </P -><P -> <TT -CLASS="FILENAME" ->/etc/passwd</TT -> might then look like:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell</PRE -></TD -></TR -></TABLE -></P -><P -> And then <TT -CLASS="FILENAME" ->/etc/group</TT ->, like:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> privoxy:*:7777:</PRE -></TD -></TR -></TABLE -></P -><P -> Some binary packages may do this for you.</P -><P -> Then, to build from either unpacked tarball or CVS source:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> autoheader + cd current +</pre> + </td> + </tr> + </table> + + <p> + This will create a directory named <tt class= + "FILENAME">current/</tt>, which will contain the source tree. + </p> + <p> + You can also check out any <span class="APPLICATION">Privoxy</span> + <span class="QUOTE">"branch"</span>, just exchange the <span class= + "APPLICATION">current</span> name with the wanted branch name + (Example: v_3_0_branch for the 3.0 cvs tree). + </p> + <p> + It is also strongly recommended to not run <span class= + "APPLICATION">Privoxy</span> as root. You should + configure/install/run <span class="APPLICATION">Privoxy</span> as + an unprivileged user, preferably by creating a <span class= + "QUOTE">"privoxy"</span> user and group just for this purpose. See + your local documentation for the correct command line to do add new + users and groups (something like <b class="COMMAND">adduser</b>, + but the command syntax may vary from platform to platform). + </p> + <p> + <tt class="FILENAME">/etc/passwd</tt> might then look like: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell +</pre> + </td> + </tr> + </table> + + <p> + And then <tt class="FILENAME">/etc/group</tt>, like: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + privoxy:*:7777: +</pre> + </td> + </tr> + </table> + + <p> + Some binary packages may do this for you. + </p> + <p> + Then, to build from either unpacked tarball or CVS source: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + autoheader autoconf ./configure # (--help to see options) - make # (the make from GNU, sometimes called gmake) + make # (the make from GNU, sometimes called gmake) su # Possibly required make -n install # (to see where all the files will go) - make -s install # (to really install, -s to silence output)</PRE -></TD -></TR -></TABLE -></P -><P -> Using GNU <B -CLASS="COMMAND" ->make</B ->, you can have the first four steps - automatically done for you by just typing:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> make</PRE -></TD -></TR -></TABLE -></P -><P -> in the freshly downloaded or unpacked source directory.</P -><P -> To build an executable with security enhanced features so that - users cannot easily bypass the proxy (e.g. <SPAN -CLASS="QUOTE" ->"Go There Anyway"</SPAN ->), or - alter their own configurations, <B -CLASS="COMMAND" ->configure</B -> like this:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> ./configure --disable-toggle --disable-editor --disable-force</PRE -></TD -></TR -></TABLE -></P -><P ->Then build as above. In Privoxy 3.0.7 and later, all of these options -can also be disabled through the configuration file.</P -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->WARNING:</I -></SPAN -> If installing as root, the install will fail - unless a non-root user or group is specified, or a <TT -CLASS="LITERAL" ->privoxy</TT -> - user and group already exist on the system. If a non-root user is specified, - and no group, then the installation will try to also use a group of the same name - as <SPAN -CLASS="QUOTE" ->"user"</SPAN ->. If a group is specified (and no user), then the - support files will be installed as writable by that group, and owned by the - user running the installation.</P -><P -> <B -CLASS="COMMAND" ->configure</B -> accepts <TT -CLASS="LITERAL" ->--with-user</TT -> and - <TT -CLASS="LITERAL" ->--with-group</TT -> options for setting user and group ownership - of the configuration files (which need to be writable by the daemon). The - specified <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->user must already exist</I -></SPAN ->. When starting - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, it must be run as this same user to - insure write access to configuration and log files!</P -><P -> Alternately, you can specify <TT -CLASS="LITERAL" ->user</TT -> and <TT -CLASS="LITERAL" ->group</TT -> - on the <B -CLASS="COMMAND" ->make</B -> command line, but be sure both already exist:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> make -s install USER=privoxy GROUP=privoxy</PRE -></TD -></TR -></TABLE -></P -><P -> The default installation path for <B -CLASS="COMMAND" ->make install</B -> is - <TT -CLASS="FILENAME" ->/usr/local</TT ->. This may of course be customized with - the various <B -CLASS="COMMAND" ->./configure</B -> path options. If you are doing - an install to anywhere besides <TT -CLASS="FILENAME" ->/usr/local</TT ->, be - sure to set the appropriate paths with the correct configure options - (<B -CLASS="COMMAND" ->./configure --help</B ->). Non-privileged users must of course - have write access permissions to wherever the target installation is going.</P -><P -> If you do install to <TT -CLASS="FILENAME" ->/usr/local</TT ->, the install will use - <TT -CLASS="LITERAL" ->sysconfdir=$prefix/etc/privoxy</TT -> by default. All other - destinations, and the direct usage of <TT -CLASS="LITERAL" ->--sysconfdir</TT -> flag - behave like normal, i.e. will not add the extra <TT -CLASS="FILENAME" ->privoxy</TT -> - directory. This is for a safer install, as there may already exist another - program that uses a file with the <SPAN -CLASS="QUOTE" ->"config"</SPAN -> name, and thus makes - <TT -CLASS="FILENAME" ->/usr/local/etc</TT -> cleaner.</P -><P -> If installing to <TT -CLASS="FILENAME" ->/usr/local</TT ->, the documentation will go - by default to <TT -CLASS="FILENAME" ->$prefix/share/doc</TT ->. But if this directory - doesn't exist, it will then try <TT -CLASS="FILENAME" ->$prefix/doc</TT -> and install - there before creating a new <TT -CLASS="FILENAME" ->$prefix/share/doc</TT -> just for - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->.</P -><P -> Again, if the installs goes to <TT -CLASS="FILENAME" ->/usr/local</TT ->, the - <TT -CLASS="LITERAL" ->localstatedir</TT -> (ie: <TT -CLASS="FILENAME" ->var/</TT ->) will default - to <TT -CLASS="FILENAME" ->/var</TT -> instead of <TT -CLASS="LITERAL" ->$prefix/var</TT -> so - the logs will go to <TT -CLASS="FILENAME" ->/var/log/privoxy/</TT ->, and the pid file - will be created in <TT -CLASS="FILENAME" ->/var/run/privoxy.pid</TT ->. </P -><P -> <B -CLASS="COMMAND" ->make install</B -> will attempt to set the correct values - in <TT -CLASS="FILENAME" ->config</TT -> (main configuration file). You should - check this to make sure all values are correct. If appropriate, - an init script will be installed, but it is up to the user to determine - how and where to start <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. The init - script should be checked for correct paths and values, if anything other than - a default install is done.</P -><P -> If install finds previous versions of local configuration files, most of - these will not be overwritten, and the new ones will be installed with a - <SPAN -CLASS="QUOTE" ->"new"</SPAN -> extension. default.action and default.filter - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->will be overwritten</I -></SPAN ->. You will then need - to manually update the other installed configuration files as needed. The - default template files <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->will</I -></SPAN -> be overwritten. If you have - customized, local templates, these should be stored safely in a separate - directory and defined in <TT -CLASS="FILENAME" ->config</TT -> by the - <SPAN -CLASS="QUOTE" ->"templdir"</SPAN -> directive. It is of course wise to always back-up any - important configuration files <SPAN -CLASS="QUOTE" ->"just in case"</SPAN ->. If a previous - version of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is already running, you will - have to restart it manually.</P -><P -> For more detailed instructions on how to build Redhat RPMs, - Windows self-extracting installers, building on platforms with - special requirements etc, please consult the <A -HREF="http://www.privoxy.org/developer-manual/newrelease.html" -TARGET="_top" ->developer manual</A ->.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="INSTALLATION-KEEPUPDATED" ->2.3. Keeping your Installation Up-to-Date</A -></H2 -><P -> As user feedback comes in and development continues, we will make updated versions - of both the main <A -HREF="actions-file.html" ->actions file</A -> (as a <A -HREF="http://sourceforge.net/project/showfiles.php?group_id=11118&release_id=103670" -TARGET="_top" ->separate - package</A ->) and the software itself (including the actions file) available for - download.</P -><P -> If you wish to receive an email notification whenever we release updates of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> or the actions file, <A -HREF="http://lists.sourceforge.net/lists/listinfo/ijbswa-announce/" -TARGET="_top" ->subscribe - to our announce mailing list</A ->, ijbswa-announce@lists.sourceforge.net.</P -><P -> In order not to lose your personal changes and adjustments when updating - to the latest <TT -CLASS="LITERAL" ->default.action</TT -> file we <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->strongly - recommend</I -></SPAN -> that you use <TT -CLASS="LITERAL" ->user.action</TT -> and - <TT -CLASS="LITERAL" ->user.filter</TT -> for your local - customizations of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. See the <A -HREF="actions-file.html" ->Chapter on actions files</A -> for details.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="introduction.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="whatsnew.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Introduction</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->What's New in this Release</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file + make -s install # (to really install, -s to silence output) +</pre> + </td> + </tr> + </table> + + <p> + Using GNU <b class="COMMAND">make</b>, you can have the first four + steps automatically done for you by just typing: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + make +</pre> + </td> + </tr> + </table> + + <p> + in the freshly downloaded or unpacked source directory. + </p> + <p> + To build an executable with security enhanced features so that + users cannot easily bypass the proxy (e.g. <span class="QUOTE">"Go + There Anyway"</span>), or alter their own configurations, <b class= + "COMMAND">configure</b> like this: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + ./configure --disable-toggle --disable-editor --disable-force +</pre> + </td> + </tr> + </table> + + <p> + Then build as above. In Privoxy 3.0.7 and later, all of these + options can also be disabled through the configuration file. + </p> + <p> + <span class="emphasis"><i class="EMPHASIS">WARNING:</i></span> If + installing as root, the install will fail unless a non-root user or + group is specified, or a <tt class="LITERAL">privoxy</tt> user and + group already exist on the system. If a non-root user is specified, + and no group, then the installation will try to also use a group of + the same name as <span class="QUOTE">"user"</span>. If a group is + specified (and no user), then the support files will be installed + as writable by that group, and owned by the user running the + installation. + </p> + <p> + <b class="COMMAND">configure</b> accepts <tt class= + "LITERAL">--with-user</tt> and <tt class= + "LITERAL">--with-group</tt> options for setting user and group + ownership of the configuration files (which need to be writable by + the daemon). The specified <span class="emphasis"><i class= + "EMPHASIS">user must already exist</i></span>. When starting <span + class="APPLICATION">Privoxy</span>, it must be run as this same + user to insure write access to configuration and log files! + </p> + <p> + Alternately, you can specify <tt class="LITERAL">user</tt> and <tt + class="LITERAL">group</tt> on the <b class="COMMAND">make</b> + command line, but be sure both already exist: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + make -s install USER=privoxy GROUP=privoxy +</pre> + </td> + </tr> + </table> + + <p> + The default installation path for <b class="COMMAND">make + install</b> is <tt class="FILENAME">/usr/local</tt>. This may of + course be customized with the various <b class= + "COMMAND">./configure</b> path options. If you are doing an install + to anywhere besides <tt class="FILENAME">/usr/local</tt>, be sure + to set the appropriate paths with the correct configure options (<b + class="COMMAND">./configure --help</b>). Non-privileged users must + of course have write access permissions to wherever the target + installation is going. + </p> + <p> + If you do install to <tt class="FILENAME">/usr/local</tt>, the + install will use <tt class= + "LITERAL">sysconfdir=$prefix/etc/privoxy</tt> by default. All other + destinations, and the direct usage of <tt class= + "LITERAL">--sysconfdir</tt> flag behave like normal, i.e. will not + add the extra <tt class="FILENAME">privoxy</tt> directory. This is + for a safer install, as there may already exist another program + that uses a file with the <span class="QUOTE">"config"</span> name, + and thus makes <tt class="FILENAME">/usr/local/etc</tt> cleaner. + </p> + <p> + If installing to <tt class="FILENAME">/usr/local</tt>, the + documentation will go by default to <tt class= + "FILENAME">$prefix/share/doc</tt>. But if this directory doesn't + exist, it will then try <tt class="FILENAME">$prefix/doc</tt> and + install there before creating a new <tt class= + "FILENAME">$prefix/share/doc</tt> just for <span class= + "APPLICATION">Privoxy</span>. + </p> + <p> + Again, if the installs goes to <tt class= + "FILENAME">/usr/local</tt>, the <tt class= + "LITERAL">localstatedir</tt> (ie: <tt class="FILENAME">var/</tt>) + will default to <tt class="FILENAME">/var</tt> instead of <tt + class="LITERAL">$prefix/var</tt> so the logs will go to <tt class= + "FILENAME">/var/log/privoxy/</tt>, and the pid file will be created + in <tt class="FILENAME">/var/run/privoxy.pid</tt>. + </p> + <p> + <b class="COMMAND">make install</b> will attempt to set the correct + values in <tt class="FILENAME">config</tt> (main configuration + file). You should check this to make sure all values are correct. + If appropriate, an init script will be installed, but it is up to + the user to determine how and where to start <span class= + "APPLICATION">Privoxy</span>. The init script should be checked for + correct paths and values, if anything other than a default install + is done. + </p> + <p> + If install finds previous versions of local configuration files, + most of these will not be overwritten, and the new ones will be + installed with a <span class="QUOTE">"new"</span> extension. + default.action and default.filter <span class="emphasis"><i class= + "EMPHASIS">will be overwritten</i></span>. You will then need to + manually update the other installed configuration files as needed. + The default template files <span class="emphasis"><i class= + "EMPHASIS">will</i></span> be overwritten. If you have customized, + local templates, these should be stored safely in a separate + directory and defined in <tt class="FILENAME">config</tt> by the + <span class="QUOTE">"templdir"</span> directive. It is of course + wise to always back-up any important configuration files <span + class="QUOTE">"just in case"</span>. If a previous version of <span + class="APPLICATION">Privoxy</span> is already running, you will + have to restart it manually. + </p> + <p> + For more detailed instructions on how to build Redhat RPMs, Windows + self-extracting installers, building on platforms with special + requirements etc, please consult the <a href= + "http://www.privoxy.org/developer-manual/newrelease.html" target= + "_top">developer manual</a>. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="INSTALLATION-KEEPUPDATED">2.3. Keeping your Installation + Up-to-Date</a> + </h2> + <p> + As user feedback comes in and development continues, we will make + updated versions of both the main <a href= + "actions-file.html">actions file</a> (as a <a href= + "http://sourceforge.net/project/showfiles.php?group_id=11118&release_id=103670" + target="_top">separate package</a>) and the software itself + (including the actions file) available for download. + </p> + <p> + If you wish to receive an email notification whenever we release + updates of <span class="APPLICATION">Privoxy</span> or the actions + file, <a href= + "http://lists.sourceforge.net/lists/listinfo/ijbswa-announce/" + target="_top">subscribe to our announce mailing list</a>, + ijbswa-announce@lists.sourceforge.net. + </p> + <p> + In order not to lose your personal changes and adjustments when + updating to the latest <tt class="LITERAL">default.action</tt> file + we <span class="emphasis"><i class="EMPHASIS">strongly + recommend</i></span> that you use <tt class= + "LITERAL">user.action</tt> and <tt class="LITERAL">user.filter</tt> + for your local customizations of <span class= + "APPLICATION">Privoxy</span>. See the <a href= + "actions-file.html">Chapter on actions files</a> for details. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="introduction.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="whatsnew.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Introduction + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + What's New in this Release + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/introduction.html b/doc/webserver/user-manual/introduction.html index 4d6da24b..eb4d9587 100644 --- a/doc/webserver/user-manual/introduction.html +++ b/doc/webserver/user-manual/introduction.html @@ -1,298 +1,215 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Introduction</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="NEXT" -TITLE="Installation" -HREF="installation.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="index.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="installation.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="INTRODUCTION" ->1. Introduction</A -></H1 -><P -> This documentation is included with the current UNRELEASED version of - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, v.3.0.18, - 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 a new version is currently nearing - completion, and includes significant changes and enhancements over - earlier versions.</P -><P -> Since this is a UNRELEASED 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 <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->may be</I -></SPAN -> bugs, though hopefully - not many! </P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="FEATURES" ->1.1. Features</A -></H2 -><P -> In addition to the core - features of ad blocking and - <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->cookie</A -> management, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> provides many supplemental - features, some of them currently under development, - that give the end-user more control, more privacy and more freedom:</P -><P -> <P -></P -><UL -><LI -><P -> Supports "Connection: keep-alive". Outgoing connections can - be kept alive independently from the client. - </P -></LI -><LI -><P -> Supports IPv6, provided the operating system does so too, - and the configure script detects it. - </P -></LI -><LI -><P -> Supports tagging which allows to change the behaviour - based on client and server headers. - </P -></LI -><LI -><P -> Can be run as an "intercepting" proxy, which obviates the need to - configure browsers individually. - </P -></LI -><LI -><P -> Sophisticated actions and filters for manipulating both server and client - headers. - </P -></LI -><LI -><P -> Can be chained with other proxies. - </P -></LI -><LI -><P -> Integrated browser-based configuration and control utility at <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A -> - (shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A ->). Browser-based - tracing of rule and filter effects. Remote toggling. - </P -></LI -><LI -><P -> Web page filtering (text replacements, removes banners based on size, - invisible <SPAN -CLASS="QUOTE" ->"web-bugs"</SPAN -> and HTML annoyances, etc.) - </P -></LI -><LI -><P -> Modularized configuration that allows for standard settings and - user settings to reside in separate files, so that installing updated - actions files won't overwrite individual user settings. - </P -></LI -><LI -><P -> Support for Perl Compatible Regular Expressions in the configuration files, and - a more sophisticated and flexible configuration syntax. - </P -></LI -><LI -><P -> GIF de-animation. - </P -></LI -><LI -><P -> Bypass many click-tracking scripts (avoids script redirection). - </P -></LI -><LI -><P -> User-customizable HTML templates for most proxy-generated pages (e.g. "blocked" page). - </P -></LI -><LI -><P -> Auto-detection and re-reading of config file changes. - </P -></LI -><LI -><P -> Most features are controllable on a per-site or per-location basis. - </P -></LI -><LI -><P -> Many smaller new features added, limitations and bugs removed. - </P -></LI -></UL -></P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="installation.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Privoxy 3.0.18 User Manual</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Installation</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Introduction + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Privoxy 3.0.18 User Manual" href= + "index.html"> + <link rel="NEXT" title="Installation" href="installation.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="index.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="installation.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="INTRODUCTION">1. Introduction</a> + </h1> + <p> + This documentation is included with the current UNRELEASED version of + <span class="APPLICATION">Privoxy</span>, v.3.0.18, 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 a new version is currently + nearing completion, and includes significant changes and enhancements + over earlier versions. + </p> + <p> + Since this is a UNRELEASED 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 <span class="emphasis"><i + class="EMPHASIS">may be</i></span> bugs, though hopefully not many! + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="FEATURES">1.1. Features</a> + </h2> + <p> + In addition to the core features of ad blocking and <a href= + "http://en.wikipedia.org/wiki/Browser_cookie" target= + "_top">cookie</a> management, <span class= + "APPLICATION">Privoxy</span> provides many supplemental features, + some of them currently under development, that give the end-user + more control, more privacy and more freedom: + </p> + <p> + </p> + <ul> + <li> + <p> + Supports "Connection: keep-alive". Outgoing connections can be + kept alive independently from the client. + </p> + </li> + <li> + <p> + Supports IPv6, provided the operating system does so too, and + the configure script detects it. + </p> + </li> + <li> + <p> + Supports tagging which allows to change the behaviour based on + client and server headers. + </p> + </li> + <li> + <p> + Can be run as an "intercepting" proxy, which obviates the need + to configure browsers individually. + </p> + </li> + <li> + <p> + Sophisticated actions and filters for manipulating both server + and client headers. + </p> + </li> + <li> + <p> + Can be chained with other proxies. + </p> + </li> + <li> + <p> + Integrated browser-based configuration and control utility at + <a href="http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a> (shortcut: <a href= + "http://p.p/" target="_top">http://p.p/</a>). Browser-based + tracing of rule and filter effects. Remote toggling. + </p> + </li> + <li> + <p> + Web page filtering (text replacements, removes banners based on + size, invisible <span class="QUOTE">"web-bugs"</span> and HTML + annoyances, etc.) + </p> + </li> + <li> + <p> + Modularized configuration that allows for standard settings and + user settings to reside in separate files, so that installing + updated actions files won't overwrite individual user settings. + </p> + </li> + <li> + <p> + Support for Perl Compatible Regular Expressions in the + configuration files, and a more sophisticated and flexible + configuration syntax. + </p> + </li> + <li> + <p> + GIF de-animation. + </p> + </li> + <li> + <p> + Bypass many click-tracking scripts (avoids script redirection). + </p> + </li> + <li> + <p> + User-customizable HTML templates for most proxy-generated pages + (e.g. "blocked" page). + </p> + </li> + <li> + <p> + Auto-detection and re-reading of config file changes. + </p> + </li> + <li> + <p> + Most features are controllable on a per-site or per-location + basis. + </p> + </li> + <li> + <p> + Many smaller new features added, limitations and bugs removed. + </p> + </li> + </ul> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="index.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="installation.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Privoxy 3.0.18 User Manual + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Installation + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/quickstart.html b/doc/webserver/user-manual/quickstart.html index c04a0a24..c17cca06 100644 --- a/doc/webserver/user-manual/quickstart.html +++ b/doc/webserver/user-manual/quickstart.html @@ -1,943 +1,516 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Quickstart to Using Privoxy</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="What's New in this Release" -HREF="whatsnew.html"><LINK -REL="NEXT" -TITLE="Starting Privoxy" -HREF="startup.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="whatsnew.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="startup.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="QUICKSTART" ->4. Quickstart to Using Privoxy</A -></H1 -><P -> <P -></P -><UL -><LI -><P -> Install <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. See the <A -HREF="installation.html" ->Installation Section</A -> below for platform specific - information. - </P -></LI -><LI -><P -> Advanced users and those who want to offer <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - service to more than just their local machine should check the <A -HREF="config.html" ->main config file</A ->, especially the <A -HREF="config.html#ACCESS-CONTROL" ->security-relevant</A -> options. These are - off by default. - </P -></LI -><LI -><P -> Start <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->, if the installation program has - not done this already (may vary according to platform). See the section - <A -HREF="startup.html" ->Starting <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -></A ->. - </P -></LI -><LI -><P -> Set your browser to use <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> as HTTP and - HTTPS (SSL) <A -HREF="http://en.wikipedia.org/wiki/Proxy_server" -TARGET="_top" ->proxy</A -> - by setting the proxy configuration for address of - <TT -CLASS="LITERAL" ->127.0.0.1</TT -> and port <TT -CLASS="LITERAL" ->8118</TT ->. - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->DO NOT</I -></SPAN -> activate proxying for <TT -CLASS="LITERAL" ->FTP</TT -> or - any protocols besides HTTP and HTTPS (SSL) unless you intend to prevent your - browser from using these protocols. - </P -></LI -><LI -><P -> Flush your browser's disk and memory caches, to remove any cached ad images. - If using <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to manage - <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->cookies</A ->, - you should remove any currently stored cookies too. - </P -></LI -><LI -><P -> A default installation should provide a reasonable starting point for - most. There will undoubtedly be occasions where you will want to adjust the - configuration, but that can be dealt with as the need arises. Little - to no initial configuration is required in most cases, you may want - to enable the - <A -HREF="config.html#ENABLE-EDIT-ACTIONS" -TARGET="_top" ->web-based action editor</A -> though. - Be sure to read the warnings first. - </P -><P -> See the <A -HREF="configuration.html" ->Configuration section</A -> for more - configuration options, and how to customize your installation. - You might also want to look at the <A -HREF="quickstart.html#QUICKSTART-AD-BLOCKING" ->next section</A -> for a quick - introduction to how <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> blocks ads and - banners.</P -></LI -><LI -><P -> If you experience ads that slip through, innocent images that are - blocked, or otherwise feel the need to fine-tune - <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> behavior, take a look at the <A -HREF="actions-file.html" ->actions files</A ->. As a quick start, you might - find the <A -HREF="actions-file.html#ACT-EXAMPLES" ->richly commented examples</A -> - helpful. You can also view and edit the actions files through the <A -HREF="http://config.privoxy.org" -TARGET="_top" ->web-based user interface</A ->. The - Appendix <SPAN -CLASS="QUOTE" ->"<A -HREF="appendix.html#ACTIONSANAT" ->Troubleshooting: Anatomy of an - Action</A ->"</SPAN -> has hints on how to understand and debug actions that - <SPAN -CLASS="QUOTE" ->"misbehave"</SPAN ->. - </P -></LI -><LI -><P -> Please see the section <A -HREF="contact.html" ->Contacting the - Developers</A -> on how to report bugs, problems with websites or to get - help. - </P -></LI -><LI -><P -> Now enjoy surfing with enhanced control, comfort and privacy! - </P -></LI -></UL -></P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="QUICKSTART-AD-BLOCKING" ->4.1. Quickstart to Ad Blocking</A -></H2 -><P -> Ad blocking is but one of <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - array of features. Many of these features are for the technically minded advanced - user. But, ad and banner blocking is surely common ground for everybody.</P -><P -> - This section will provide a quick summary of ad blocking so - you can get up to speed quickly without having to read the more extensive - information provided below, though this is highly recommended.</P -><P -> First a bit of a warning ... blocking ads is much like blocking SPAM: the - more aggressive you are about it, the more likely you are to block - things that were not intended. And the more likely that some things - may not work as intended. So there is a trade off here. If you want - extreme ad free browsing, be prepared to deal with more - <SPAN -CLASS="QUOTE" ->"problem"</SPAN -> sites, and to spend more time adjusting the - configuration to solve these unintended consequences. In short, there is - not an easy way to eliminate <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->all</I -></SPAN -> ads. Either take - the easy way and settle for <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->most</I -></SPAN -> ads blocked with the - default configuration, or jump in and tweak it for your personal surfing - habits and preferences.</P -><P -> Secondly, a brief explanation of <SPAN -CLASS="APPLICATION" ->Privoxy's </SPAN -> - <SPAN -CLASS="QUOTE" ->"actions"</SPAN ->. <SPAN -CLASS="QUOTE" ->"Actions"</SPAN -> in this context, are - the directives we use to tell <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to perform - some task relating to HTTP transactions (i.e. web browsing). We tell - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to take some <SPAN -CLASS="QUOTE" ->"action"</SPAN ->. Each - action has a unique name and function. While there are many potential - <SPAN -CLASS="APPLICATION" ->actions</SPAN -> in <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - arsenal, only a few are used for ad blocking. <A -HREF="actions-file.html#ACTIONS" ->Actions</A ->, and <A -HREF="actions-file.html" ->action - configuration files</A ->, are explained in depth below.</P -><P -> Actions are specified in <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> configuration, - followed by one or more URLs to which the action should apply. URLs - can actually be URL type <A -HREF="actions-file.html#AF-PATTERNS" ->patterns</A -> that use - wildcards so they can apply potentially to a range of similar URLs. The - actions, together with the URL patterns are called a section.</P -><P -> When you connect to a website, the full URL will either match one or more - of the sections as defined in <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> configuration, - or not. If so, then <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will perform the - respective actions. If not, then nothing special happens. Furthermore, web - pages may contain embedded, secondary URLs that your web browser will - use to load additional components of the page, as it parses the - original page's HTML content. An ad image for instance, is just an URL - embedded in the page somewhere. The image itself may be on the same server, - or a server somewhere else on the Internet. Complex web pages will have many - such embedded URLs. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can deal with each URL individually, so, for - instance, the main page text is not touched, but images from such-and-such - server are blocked.</P -><P -> The most important actions for basic ad blocking are: <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT ->, <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></TT ->, - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" ->handle-as-empty-document</A -></TT ->,and - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker</A -></TT ->:</P -><P -> <P -></P -><UL -><LI -><P -> <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> - this is perhaps - the single most used action, and is particularly important for ad blocking. - This action stops any contact between your browser and any URL patterns - that match this action's configuration. It can be used for blocking ads, - but also anything that is determined to be unwanted. By itself, it simply - stops any communication with the remote server and sends - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s own built-in BLOCKED page instead to - let you now what has happened (with some exceptions, see below). - </P -></LI -><LI -><P -> <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></TT -> - - tells <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to treat this URL as an image. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->'s default configuration already does this - for all common image types (e.g. GIF), but there are many situations where this - is not so easy to determine. So we'll force it in these cases. This is particularly - important for ad blocking, since only if we know that it's an image of - some kind, can we replace it with an image of our choosing, instead of the - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> BLOCKED page (which would only result in - a <SPAN -CLASS="QUOTE" ->"broken image"</SPAN -> icon). There are some limitations to this - though. For instance, you can't just brute-force an image substitution for - an entire HTML page in most situations. - </P -></LI -><LI -><P -> <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT" ->handle-as-empty-document</A -></TT -> - - sends an empty document instead of <SPAN -CLASS="APPLICATION" ->Privoxy's</SPAN -> - normal BLOCKED HTML page. This is useful for file types that are neither - HTML nor images, such as blocking JavaScript files. - </P -></LI -><LI -><P -> <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#SET-IMAGE-BLOCKER" ->set-image-blocker</A -></TT -> - tells - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> what to display in place of an ad image that - has hit a block rule. For this to come into play, the URL must match a - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> action somewhere in the - configuration, <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->and</I -></SPAN ->, it must also match an - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#HANDLE-AS-IMAGE" ->handle-as-image</A -></TT -> action. - </P -><P -> The configuration options on what to display instead of the ad are: - </P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->pattern</I -></SPAN -> - a checkerboard pattern, so that an ad - replacement is obvious. This is the default. - </TD -></TR -></TBODY -></TABLE -><P -></P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->blank</I -></SPAN -> - A very small empty GIF image is displayed. - This is the so-called <SPAN -CLASS="QUOTE" ->"invisible"</SPAN -> configuration option. - </TD -></TR -></TBODY -></TABLE -><P -></P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->http://<URL></I -></SPAN -> - A redirect to any image anywhere - of the user's choosing (advanced usage). - </TD -></TR -></TBODY -></TABLE -><P -></P -></LI -></UL -></P -><P -> Advanced users will eventually want to explore <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#FILTER" ->filters</A -></TT -> as well. Filters - are very different from <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->blocks</A -></TT ->. - A <SPAN -CLASS="QUOTE" ->"block"</SPAN -> blocks a site, page, or unwanted contented. Filters - are a way of filtering or modifying what is actually on the page. An example - filter usage: a text replacement of <SPAN -CLASS="QUOTE" ->"no-no"</SPAN -> for - <SPAN -CLASS="QUOTE" ->"nasty-word"</SPAN ->. That is a very simple example. This process can be - used for ad blocking, but it is more in the realm of advanced usage and has - some pitfalls to be wary off.</P -><P -> The quickest way to adjust any of these settings is with your browser through - the special <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> editor at <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A -> - (shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/show-status</A ->). This - is an internal page, and does not require Internet access.</P -><P -> Note that as of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> 3.0.7 beta the - action editor is disabled by default. Check the - <A -HREF="config.html#ENABLE-EDIT-ACTIONS" -TARGET="_top" ->enable-edit-actions - section in the configuration file</A -> to learn why and in which - cases it's safe to enable again.</P -><P -> If you decided to enable the action editor, select the appropriate - <SPAN -CLASS="QUOTE" ->"actions"</SPAN -> file, and click - <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Edit</SPAN ->"</SPAN ->. It is best to put personal or - local preferences in <TT -CLASS="FILENAME" ->user.action</TT -> since this is not - meant to be overwritten during upgrades, and will over-ride the settings in - other files. Here you can insert new <SPAN -CLASS="QUOTE" ->"actions"</SPAN ->, and URLs for ad - blocking or other purposes, and make other adjustments to the configuration. - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will detect these changes automatically.</P -><P -> A quick and simple step by step example:</P -><P -> <P -></P -><UL -><LI -><P -> Right click on the ad image to be blocked, then select - <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIMENUITEM" ->Copy Link Location</SPAN ->"</SPAN -> from the - pop-up menu. - </P -></LI -><LI -><P -> Set your browser to - <A -HREF="http://config.privoxy.org/show-status" -TARGET="_top" ->http://config.privoxy.org/show-status</A -> - </P -></LI -><LI -><P -> Find <TT -CLASS="FILENAME" ->user.action</TT -> in the top section, and click - on <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Edit</SPAN ->"</SPAN ->: - </P -><P -> <DIV -CLASS="FIGURE" -><A -NAME="AEN687" -></A -><P -><B ->Figure 1. Actions Files in Use</B -></P -><DIV -CLASS="MEDIAOBJECT" -><P -><IMG -SRC="files-in-use.jpg"></P -></DIV -></DIV -> - </P -></LI -><LI -><P -> You should have a section with only - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> listed under - <SPAN -CLASS="QUOTE" ->"Actions:"</SPAN ->. - If not, click a <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Insert new section below</SPAN ->"</SPAN -> - button, and in the new section that just appeared, click the - <SPAN -CLASS="GUIBUTTON" ->Edit</SPAN -> button right under the word <SPAN -CLASS="QUOTE" ->"Actions:"</SPAN ->. - This will bring up a list of all actions. Find - <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> near the top, and click - in the <SPAN -CLASS="QUOTE" ->"Enabled"</SPAN -> column, then <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Submit</SPAN ->"</SPAN -> - just below the list. - </P -></LI -><LI -><P -> Now, in the <TT -CLASS="LITERAL" -><A -HREF="actions-file.html#BLOCK" ->block</A -></TT -> actions section, - click the <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Add</SPAN ->"</SPAN -> button, and paste the URL the - browser got from <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIMENUITEM" ->Copy Link Location</SPAN ->"</SPAN ->. - Remove the <TT -CLASS="LITERAL" ->http://</TT -> at the beginning of the URL. Then, click - <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->Submit</SPAN ->"</SPAN -> (or - <SPAN -CLASS="QUOTE" ->"<SPAN -CLASS="GUIBUTTON" ->OK</SPAN ->"</SPAN -> if in a pop-up window). - </P -></LI -><LI -><P -> Now go back to the original page, and press <B -CLASS="KEYCAP" ->SHIFT-Reload</B -> - (or flush all browser caches). The image should be gone now. - </P -></LI -></UL -></P -><P -> This is a very crude and simple example. There might be good reasons to use a - wildcard pattern match to include potentially similar images from the same - site. For a more extensive explanation of <SPAN -CLASS="QUOTE" ->"patterns"</SPAN ->, and - the entire actions concept, see <A -HREF="actions-file.html" ->the Actions - section</A ->.</P -><P -> For advanced users who want to hand edit their config files, you might want - to now go to the <A -HREF="actions-file.html#ACT-EXAMPLES" ->Actions Files Tutorial</A ->. - The ideas explained therein also apply to the web-based editor.</P -><P -> There are also various - <A -HREF="actions-file.html#FILTER" ->filters</A -> that can be used for ad blocking - (filters are a special subset of actions). These - fall into the <SPAN -CLASS="QUOTE" ->"advanced"</SPAN -> usage category, and are explained in - depth in later sections. </P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="whatsnew.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="startup.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->What's New in this Release</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Starting Privoxy</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Quickstart to Using Privoxy + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="What's New in this Release" href= + "whatsnew.html"> + <link rel="NEXT" title="Starting Privoxy" href="startup.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + p.c2 {font-weight: bold} + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="whatsnew.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="startup.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="QUICKSTART">4. Quickstart to Using Privoxy</a> + </h1> + <p> + </p> + <ul> + <li> + <p> + Install <span class="APPLICATION">Privoxy</span>. See the <a + href="installation.html">Installation Section</a> below for + platform specific information. + </p> + </li> + <li> + <p> + Advanced users and those who want to offer <span class= + "APPLICATION">Privoxy</span> service to more than just their + local machine should check the <a href="config.html">main config + file</a>, especially the <a href= + "config.html#ACCESS-CONTROL">security-relevant</a> options. These + are off by default. + </p> + </li> + <li> + <p> + Start <span class="APPLICATION">Privoxy</span>, if the + installation program has not done this already (may vary + according to platform). See the section <a href= + "startup.html">Starting <span class= + "APPLICATION">Privoxy</span></a>. + </p> + </li> + <li> + <p> + Set your browser to use <span class="APPLICATION">Privoxy</span> + as HTTP and HTTPS (SSL) <a href= + "http://en.wikipedia.org/wiki/Proxy_server" target= + "_top">proxy</a> by setting the proxy configuration for address + of <tt class="LITERAL">127.0.0.1</tt> and port <tt class= + "LITERAL">8118</tt>. <span class="emphasis"><i class= + "EMPHASIS">DO NOT</i></span> activate proxying for <tt class= + "LITERAL">FTP</tt> or any protocols besides HTTP and HTTPS (SSL) + unless you intend to prevent your browser from using these + protocols. + </p> + </li> + <li> + <p> + Flush your browser's disk and memory caches, to remove any cached + ad images. If using <span class="APPLICATION">Privoxy</span> to + manage <a href="http://en.wikipedia.org/wiki/Browser_cookie" + target="_top">cookies</a>, you should remove any currently stored + cookies too. + </p> + </li> + <li> + <p> + A default installation should provide a reasonable starting point + for most. There will undoubtedly be occasions where you will want + to adjust the configuration, but that can be dealt with as the + need arises. Little to no initial configuration is required in + most cases, you may want to enable the <a href= + "config.html#ENABLE-EDIT-ACTIONS" target="_top">web-based action + editor</a> though. Be sure to read the warnings first. + </p> + <p> + See the <a href="configuration.html">Configuration section</a> + for more configuration options, and how to customize your + installation. You might also want to look at the <a href= + "quickstart.html#QUICKSTART-AD-BLOCKING">next section</a> for a + quick introduction to how <span class= + "APPLICATION">Privoxy</span> blocks ads and banners. + </p> + </li> + <li> + <p> + If you experience ads that slip through, innocent images that are + blocked, or otherwise feel the need to fine-tune <span class= + "APPLICATION">Privoxy's</span> behavior, take a look at the <a + href="actions-file.html">actions files</a>. As a quick start, you + might find the <a href="actions-file.html#ACT-EXAMPLES">richly + commented examples</a> helpful. You can also view and edit the + actions files through the <a href="http://config.privoxy.org" + target="_top">web-based user interface</a>. The Appendix <span + class="QUOTE">"<a href= + "appendix.html#ACTIONSANAT">Troubleshooting: Anatomy of an + Action</a>"</span> has hints on how to understand and debug + actions that <span class="QUOTE">"misbehave"</span>. + </p> + </li> + <li> + <p> + Please see the section <a href="contact.html">Contacting the + Developers</a> on how to report bugs, problems with websites or + to get help. + </p> + </li> + <li> + <p> + Now enjoy surfing with enhanced control, comfort and privacy! + </p> + </li> + </ul> + + <div class="SECT2"> + <h2 class="SECT2"> + <a name="QUICKSTART-AD-BLOCKING">4.1. Quickstart to Ad Blocking</a> + </h2> + <p> + Ad blocking is but one of <span class= + "APPLICATION">Privoxy's</span> array of features. Many of these + features are for the technically minded advanced user. But, ad and + banner blocking is surely common ground for everybody. + </p> + <p> + This section will provide a quick summary of ad blocking so you can + get up to speed quickly without having to read the more extensive + information provided below, though this is highly recommended. + </p> + <p> + First a bit of a warning ... blocking ads is much like blocking + SPAM: the more aggressive you are about it, the more likely you are + to block things that were not intended. And the more likely that + some things may not work as intended. So there is a trade off here. + If you want extreme ad free browsing, be prepared to deal with more + <span class="QUOTE">"problem"</span> sites, and to spend more time + adjusting the configuration to solve these unintended consequences. + In short, there is not an easy way to eliminate <span class= + "emphasis"><i class="EMPHASIS">all</i></span> ads. Either take the + easy way and settle for <span class="emphasis"><i class= + "EMPHASIS">most</i></span> ads blocked with the default + configuration, or jump in and tweak it for your personal surfing + habits and preferences. + </p> + <p> + Secondly, a brief explanation of <span class= + "APPLICATION">Privoxy's</span> <span class= + "QUOTE">"actions"</span>. <span class="QUOTE">"Actions"</span> in + this context, are the directives we use to tell <span class= + "APPLICATION">Privoxy</span> to perform some task relating to HTTP + transactions (i.e. web browsing). We tell <span class= + "APPLICATION">Privoxy</span> to take some <span class= + "QUOTE">"action"</span>. Each action has a unique name and + function. While there are many potential <span class= + "APPLICATION">actions</span> in <span class= + "APPLICATION">Privoxy's</span> arsenal, only a few are used for ad + blocking. <a href="actions-file.html#ACTIONS">Actions</a>, and <a + href="actions-file.html">action configuration files</a>, are + explained in depth below. + </p> + <p> + Actions are specified in <span class="APPLICATION">Privoxy's</span> + configuration, followed by one or more URLs to which the action + should apply. URLs can actually be URL type <a href= + "actions-file.html#AF-PATTERNS">patterns</a> that use wildcards so + they can apply potentially to a range of similar URLs. The actions, + together with the URL patterns are called a section. + </p> + <p> + When you connect to a website, the full URL will either match one + or more of the sections as defined in <span class= + "APPLICATION">Privoxy's</span> configuration, or not. If so, then + <span class="APPLICATION">Privoxy</span> will perform the + respective actions. If not, then nothing special happens. + Furthermore, web pages may contain embedded, secondary URLs that + your web browser will use to load additional components of the + page, as it parses the original page's HTML content. An ad image + for instance, is just an URL embedded in the page somewhere. The + image itself may be on the same server, or a server somewhere else + on the Internet. Complex web pages will have many such embedded + URLs. <span class="APPLICATION">Privoxy</span> can deal with each + URL individually, so, for instance, the main page text is not + touched, but images from such-and-such server are blocked. + </p> + <p> + The most important actions for basic ad blocking are: <tt class= + "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt>, <tt + class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt>, <tt + class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt>,and + <tt class="LITERAL"><a href= + "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt>: + </p> + <p> + </p> + <ul> + <li> + <p> + <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> - this is perhaps the + single most used action, and is particularly important for ad + blocking. This action stops any contact between your browser + and any URL patterns that match this action's configuration. It + can be used for blocking ads, but also anything that is + determined to be unwanted. By itself, it simply stops any + communication with the remote server and sends <span class= + "APPLICATION">Privoxy</span>'s own built-in BLOCKED page + instead to let you now what has happened (with some exceptions, + see below). + </p> + </li> + <li> + <p> + <tt class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> - + tells <span class="APPLICATION">Privoxy</span> to treat this + URL as an image. <span class="APPLICATION">Privoxy</span>'s + default configuration already does this for all common image + types (e.g. GIF), but there are many situations where this is + not so easy to determine. So we'll force it in these cases. + This is particularly important for ad blocking, since only if + we know that it's an image of some kind, can we replace it with + an image of our choosing, instead of the <span class= + "APPLICATION">Privoxy</span> BLOCKED page (which would only + result in a <span class="QUOTE">"broken image"</span> icon). + There are some limitations to this though. For instance, you + can't just brute-force an image substitution for an entire HTML + page in most situations. + </p> + </li> + <li> + <p> + <tt class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-EMPTY-DOCUMENT">handle-as-empty-document</a></tt> + - sends an empty document instead of <span class= + "APPLICATION">Privoxy's</span> normal BLOCKED HTML page. This + is useful for file types that are neither HTML nor images, such + as blocking JavaScript files. + </p> + </li> + <li> + <p> + <tt class="LITERAL"><a href= + "actions-file.html#SET-IMAGE-BLOCKER">set-image-blocker</a></tt> + - tells <span class="APPLICATION">Privoxy</span> what to + display in place of an ad image that has hit a block rule. For + this to come into play, the URL must match a <tt class= + "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> + action somewhere in the configuration, <span class= + "emphasis"><i class="EMPHASIS">and</i></span>, it must also + match an <tt class="LITERAL"><a href= + "actions-file.html#HANDLE-AS-IMAGE">handle-as-image</a></tt> + action. + </p> + <p> + The configuration options on what to display instead of the ad + are: + </p> + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS">pattern</i></span> - a checkerboard pattern, + so that an ad replacement is obvious. This is the + default. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS">blank</i></span> - A very small empty GIF + image is displayed. This is the so-called <span class= + "QUOTE">"invisible"</span> configuration option. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <span class="emphasis"><i class= + "EMPHASIS">http://<URL></i></span> - A redirect to + any image anywhere of the user's choosing (advanced + usage). + </td> + </tr> + </tbody> + </table> + </li> + </ul> + + <p> + Advanced users will eventually want to explore <span class= + "APPLICATION">Privoxy</span> <tt class="LITERAL"><a href= + "actions-file.html#FILTER">filters</a></tt> as well. Filters are + very different from <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">blocks</a></tt>. A <span class= + "QUOTE">"block"</span> blocks a site, page, or unwanted contented. + Filters are a way of filtering or modifying what is actually on the + page. An example filter usage: a text replacement of <span class= + "QUOTE">"no-no"</span> for <span class="QUOTE">"nasty-word"</span>. + That is a very simple example. This process can be used for ad + blocking, but it is more in the realm of advanced usage and has + some pitfalls to be wary off. + </p> + <p> + The quickest way to adjust any of these settings is with your + browser through the special <span class= + "APPLICATION">Privoxy</span> editor at <a href= + "http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a> (shortcut: <a + href="http://p.p/" target="_top">http://p.p/show-status</a>). This + is an internal page, and does not require Internet access. + </p> + <p> + Note that as of <span class="APPLICATION">Privoxy</span> 3.0.7 beta + the action editor is disabled by default. Check the <a href= + "config.html#ENABLE-EDIT-ACTIONS" target="_top">enable-edit-actions + section in the configuration file</a> to learn why and in which + cases it's safe to enable again. + </p> + <p> + If you decided to enable the action editor, select the appropriate + <span class="QUOTE">"actions"</span> file, and click <span class= + "QUOTE">"<span class="GUIBUTTON">Edit</span>"</span>. It is best to + put personal or local preferences in <tt class= + "FILENAME">user.action</tt> since this is not meant to be + overwritten during upgrades, and will over-ride the settings in + other files. Here you can insert new <span class= + "QUOTE">"actions"</span>, and URLs for ad blocking or other + purposes, and make other adjustments to the configuration. <span + class="APPLICATION">Privoxy</span> will detect these changes + automatically. + </p> + <p> + A quick and simple step by step example: + </p> + <p> + </p> + <ul> + <li> + <p> + Right click on the ad image to be blocked, then select <span + class="QUOTE">"<span class="GUIMENUITEM">Copy Link + Location</span>"</span> from the pop-up menu. + </p> + </li> + <li> + <p> + Set your browser to <a href= + "http://config.privoxy.org/show-status" target= + "_top">http://config.privoxy.org/show-status</a> + </p> + </li> + <li> + <p> + Find <tt class="FILENAME">user.action</tt> in the top section, + and click on <span class="QUOTE">"<span class= + "GUIBUTTON">Edit</span>"</span>: + </p> + <p> + </p> + <div class="FIGURE"> + <a name="AEN687"></a> + <p class="c2"> + Figure 1. Actions Files in Use + </p> + <div class="MEDIAOBJECT"> + <p> + <img src="files-in-use.jpg"> + </p> + </div> + </div> + </li> + <li> + <p> + You should have a section with only <tt class="LITERAL"><a + href="actions-file.html#BLOCK">block</a></tt> listed under + <span class="QUOTE">"Actions:"</span>. If not, click a <span + class="QUOTE">"<span class="GUIBUTTON">Insert new section + below</span>"</span> button, and in the new section that just + appeared, click the <span class="GUIBUTTON">Edit</span> button + right under the word <span class="QUOTE">"Actions:"</span>. + This will bring up a list of all actions. Find <tt class= + "LITERAL"><a href="actions-file.html#BLOCK">block</a></tt> near + the top, and click in the <span class="QUOTE">"Enabled"</span> + column, then <span class="QUOTE">"<span class= + "GUIBUTTON">Submit</span>"</span> just below the list. + </p> + </li> + <li> + <p> + Now, in the <tt class="LITERAL"><a href= + "actions-file.html#BLOCK">block</a></tt> actions section, click + the <span class="QUOTE">"<span class= + "GUIBUTTON">Add</span>"</span> button, and paste the URL the + browser got from <span class="QUOTE">"<span class= + "GUIMENUITEM">Copy Link Location</span>"</span>. Remove the <tt + class="LITERAL">http://</tt> at the beginning of the URL. Then, + click <span class="QUOTE">"<span class= + "GUIBUTTON">Submit</span>"</span> (or <span class= + "QUOTE">"<span class="GUIBUTTON">OK</span>"</span> if in a + pop-up window). + </p> + </li> + <li> + <p> + Now go back to the original page, and press <b class= + "KEYCAP">SHIFT-Reload</b> (or flush all browser caches). The + image should be gone now. + </p> + </li> + </ul> + + <p> + This is a very crude and simple example. There might be good + reasons to use a wildcard pattern match to include potentially + similar images from the same site. For a more extensive explanation + of <span class="QUOTE">"patterns"</span>, and the entire actions + concept, see <a href="actions-file.html">the Actions section</a>. + </p> + <p> + For advanced users who want to hand edit their config files, you + might want to now go to the <a href= + "actions-file.html#ACT-EXAMPLES">Actions Files Tutorial</a>. The + ideas explained therein also apply to the web-based editor. + </p> + <p> + There are also various <a href= + "actions-file.html#FILTER">filters</a> that can be used for ad + blocking (filters are a special subset of actions). These fall into + the <span class="QUOTE">"advanced"</span> usage category, and are + explained in depth in later sections. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="whatsnew.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="startup.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + What's New in this Release + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Starting Privoxy + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/seealso.html b/doc/webserver/user-manual/seealso.html index 272ce35e..a3ae8571 100644 --- a/doc/webserver/user-manual/seealso.html +++ b/doc/webserver/user-manual/seealso.html @@ -1,418 +1,226 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->See Also</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Privoxy Copyright, License and History" -HREF="copyright.html"><LINK -REL="NEXT" -TITLE="Appendix" -HREF="appendix.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="copyright.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="appendix.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="SEEALSO" ->13. See Also</A -></H1 -><P -> Other references and sites of interest to <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - users:</P -><P -> <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/" -TARGET="_top" ->http://www.privoxy.org/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> Home page. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/faq/" -TARGET="_top" ->http://www.privoxy.org/faq/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> FAQ. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.privoxy.org/developer-manual/" -TARGET="_top" ->http://www.privoxy.org/developer-manual/</A ->, - the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> developer manual. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://sourceforge.net/projects/ijbswa/" -TARGET="_top" ->https://sourceforge.net/projects/ijbswa/</A ->, - the Project Page for <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> on - <A -HREF="http://sourceforge.net" -TARGET="_top" ->SourceForge</A ->. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->http://config.privoxy.org/</A ->, - the web-based user interface. <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> must be - running for this to work. Shortcut: <A -HREF="http://p.p/" -TARGET="_top" ->http://p.p/</A -> - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://sourceforge.net/tracker/?group_id=11118&atid=460288" -TARGET="_top" ->https://sourceforge.net/tracker/?group_id=11118&atid=460288</A ->, to submit <SPAN -CLASS="QUOTE" ->"misses"</SPAN -> and other - configuration related suggestions to the developers. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - - - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.junkbusters.com/ht/en/cookies.html" -TARGET="_top" ->http://www.junkbusters.com/ht/en/cookies.html</A ->, - an explanation how cookies are used to track web users. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.junkbusters.com/ijb.html" -TARGET="_top" ->http://www.junkbusters.com/ijb.html</A ->, - the original Internet Junkbuster. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.squid-cache.org/" -TARGET="_top" ->http://www.squid-cache.org/</A ->, a popular - caching proxy, which is often used together with <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="http://www.pps.jussieu.fr/~jch/software/polipo/" -TARGET="_top" ->http://www.pps.jussieu.fr/~jch/software/polipo/</A ->, - <SPAN -CLASS="APPLICATION" ->Polipo</SPAN -> is a caching proxy with advanced features - like pipelining, multiplexing and caching of partial instances. In many setups - it can be used as <SPAN -CLASS="APPLICATION" ->Squid</SPAN -> replacement. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - <P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD -> <A -HREF="https://www.torproject.org/" -TARGET="_top" ->https://www.torproject.org/</A ->, - <SPAN -CLASS="APPLICATION" ->Tor</SPAN -> can help anonymize web browsing, - web publishing, instant messaging, IRC, SSH, and other applications. - </TD -></TR -></TBODY -></TABLE -><P -></P -> - </P -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="copyright.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="appendix.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Privoxy Copyright, License and History</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Appendix</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + See Also + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Privoxy Copyright, License and History" href= + "copyright.html"> + <link rel="NEXT" title="Appendix" href="appendix.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="copyright.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="appendix.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="SEEALSO">13. See Also</a> + </h1> + <p> + Other references and sites of interest to <span class= + "APPLICATION">Privoxy</span> users: + </p> + <p> + </p> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/" target= + "_top">http://www.privoxy.org/</a>, the <span class= + "APPLICATION">Privoxy</span> Home page. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/faq/" target= + "_top">http://www.privoxy.org/faq/</a>, the <span class= + "APPLICATION">Privoxy</span> FAQ. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.privoxy.org/developer-manual/" target= + "_top">http://www.privoxy.org/developer-manual/</a>, the <span + class="APPLICATION">Privoxy</span> developer manual. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="https://sourceforge.net/projects/ijbswa/" target= + "_top">https://sourceforge.net/projects/ijbswa/</a>, the + Project Page for <span class="APPLICATION">Privoxy</span> on <a + href="http://sourceforge.net" target="_top">SourceForge</a>. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://config.privoxy.org/" target= + "_top">http://config.privoxy.org/</a>, the web-based user + interface. <span class="APPLICATION">Privoxy</span> must be + running for this to work. Shortcut: <a href="http://p.p/" + target="_top">http://p.p/</a> + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href= + "https://sourceforge.net/tracker/?group_id=11118&atid=460288" + target= + "_top">https://sourceforge.net/tracker/?group_id=11118&atid=460288</a>, + to submit <span class="QUOTE">"misses"</span> and other + configuration related suggestions to the developers. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.junkbusters.com/ht/en/cookies.html" target= + "_top">http://www.junkbusters.com/ht/en/cookies.html</a>, an + explanation how cookies are used to track web users. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.junkbusters.com/ijb.html" target= + "_top">http://www.junkbusters.com/ijb.html</a>, the original + Internet Junkbuster. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.squid-cache.org/" target= + "_top">http://www.squid-cache.org/</a>, a popular caching + proxy, which is often used together with <span class= + "APPLICATION">Privoxy</span>. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="http://www.pps.jussieu.fr/~jch/software/polipo/" + target= + "_top">http://www.pps.jussieu.fr/~jch/software/polipo/</a>, + <span class="APPLICATION">Polipo</span> is a caching proxy with + advanced features like pipelining, multiplexing and caching of + partial instances. In many setups it can be used as <span + class="APPLICATION">Squid</span> replacement. + </td> + </tr> + </tbody> + </table> + <table border="0"> + <tbody> + <tr> + <td> + <a href="https://www.torproject.org/" target= + "_top">https://www.torproject.org/</a>, <span class= + "APPLICATION">Tor</span> can help anonymize web browsing, web + publishing, instant messaging, IRC, SSH, and other + applications. + </td> + </tr> + </tbody> + </table> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="copyright.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="appendix.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Privoxy Copyright, License and History + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Appendix + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/startup.html b/doc/webserver/user-manual/startup.html index 275e6896..df6da50a 100644 --- a/doc/webserver/user-manual/startup.html +++ b/doc/webserver/user-manual/startup.html @@ -1,902 +1,533 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Starting Privoxy</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Quickstart to Using Privoxy" -HREF="quickstart.html"><LINK -REL="NEXT" -TITLE="Privoxy Configuration" -HREF="configuration.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="quickstart.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="configuration.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="STARTUP" ->5. Starting Privoxy</A -></H1 -><P -> Before launching <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> for the first time, you - will want to configure your browser(s) to use - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> as a HTTP and HTTPS (SSL) - <A -HREF="http://en.wikipedia.org/wiki/Proxy_server" -TARGET="_top" ->proxy</A ->. The default is - 127.0.0.1 (or localhost) for the proxy address, and port 8118 (earlier versions - used port 8000). This is the one configuration step <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->that must be done</I -></SPAN ->!</P -><P -> Please note that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can only proxy HTTP and - HTTPS traffic. It will not work with FTP or other protocols.</P -><P -> <DIV -CLASS="FIGURE" -><A -NAME="AEN742" -></A -><P -><B ->Figure 2. Proxy Configuration Showing - Mozilla/Netscape HTTP and HTTPS (SSL) Settings</B -></P -><DIV -CLASS="MEDIAOBJECT" -><P -><IMG -SRC="proxy_setup.jpg"></P -></DIV -></DIV -> - </P -><P -> - With <SPAN -CLASS="APPLICATION" ->Firefox</SPAN ->, this is typically set under:</P -><P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="GUIBUTTON" ->Tools</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Options</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Advanced</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Network</SPAN -> -><SPAN -CLASS="GUIBUTTON" ->Connection</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Settings</SPAN -><br> </P -><P -> - Or optionally on some platforms:</P -><P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="GUIBUTTON" ->Edit</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Preferences</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->General</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Connection Settings</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Manual Proxy Configuration</SPAN -><br> </P -><P -> - With <SPAN -CLASS="APPLICATION" ->Netscape</SPAN -> (and - <SPAN -CLASS="APPLICATION" ->Mozilla</SPAN ->), this can be set under:</P -><P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="GUIBUTTON" ->Edit</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Preferences</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Advanced</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Proxies</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->HTTP Proxy</SPAN -><br> </P -><P -> For <SPAN -CLASS="APPLICATION" ->Internet Explorer v.5-7</SPAN ->: </P -><P -CLASS="LITERALLAYOUT" -> <SPAN -CLASS="GUIBUTTON" ->Tools</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Internet Options</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->Connections</SPAN -> -> <SPAN -CLASS="GUIBUTTON" ->LAN Settings</SPAN -></P -><P -> Then, check <SPAN -CLASS="QUOTE" ->"Use Proxy"</SPAN -> and fill in the appropriate info - (Address: 127.0.0.1, Port: 8118). Include HTTPS (SSL), if you want HTTPS - proxy support too (sometimes labeled <SPAN -CLASS="QUOTE" ->"Secure"</SPAN ->). Make sure any - checkboxes like <SPAN -CLASS="QUOTE" ->"Use the same proxy server for all protocols"</SPAN -> is - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->UNCHECKED</I -></SPAN ->. You want only HTTP and HTTPS (SSL)!</P -><P -> <DIV -CLASS="FIGURE" -><A -NAME="AEN787" -></A -><P -><B ->Figure 3. Proxy Configuration Showing - Internet Explorer HTTP and HTTPS (Secure) Settings</B -></P -><DIV -CLASS="MEDIAOBJECT" -><P -><IMG -SRC="proxy2.jpg"></P -></DIV -></DIV -> - </P -><P -> 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. Remove - any <A -HREF="http://en.wikipedia.org/wiki/Browser_cookie" -TARGET="_top" ->cookies</A ->, - if you want <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to manage that. You are now - ready to start enjoying the benefits of using - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->!</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> itself is typically started by specifying the - main configuration file to be used on the command line. If no configuration - file is specified on the command line, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - will look for a file named <TT -CLASS="FILENAME" ->config</TT -> in the current - directory. Except on Win32 where it will try <TT -CLASS="FILENAME" ->config.txt</TT ->.</P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="START-REDHAT" ->5.1. Red Hat and Fedora</A -></H2 -><P -> A default Red Hat installation may not start <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> upon boot. It will use - the file <TT -CLASS="FILENAME" ->/etc/privoxy/config</TT -> as its main configuration - file.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # /etc/rc.d/init.d/privoxy start</PRE -></TD -></TR -></TABLE -></P -><P -> Or ...</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # service privoxy start</PRE -></TD -></TR -></TABLE -></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="START-DEBIAN" ->5.2. Debian</A -></H2 -><P -> We use a script. Note that Debian typically starts <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> upon booting per - default. It will use the file - <TT -CLASS="FILENAME" ->/etc/privoxy/config</TT -> as its main configuration - file.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # /etc/init.d/privoxy start</PRE -></TD -></TR -></TABLE -></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="START-WINDOWS" ->5.3. Windows</A -></H2 -><P ->Click on the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> Icon to start <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->. If no configuration file is - specified on the command line, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will look - for a file named <TT -CLASS="FILENAME" ->config.txt</TT ->. Note that Windows will - automatically start <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> when the system starts if you chose that option - when installing.</P -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> can run with full Windows service functionality. - On Windows only, the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> program has two new command line arguments - to install and uninstall <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> as a service. See the - <A -HREF="installation.html#INSTALLATION-PACK-WIN" ->Windows Installation - instructions</A -> for details.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="START-UNICES" ->5.4. Solaris, NetBSD, FreeBSD, HP-UX and others</A -></H2 -><P ->Example Unix startup command:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> # /usr/sbin/privoxy /etc/privoxy/config</PRE -></TD -></TR -></TABLE -></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="START-OS2" ->5.5. OS/2</A -></H2 -><P -> During installation, <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is configured to - start automatically when the system restarts. You can start it manually by - double-clicking on the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> icon in the - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> folder.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="START-MACOSX" ->5.6. Mac OS X</A -></H2 -><P -> After downloading the privoxy software, unzip the downloaded file by - double-clicking on the zip file icon. Then, double-click on the - installer package icon and follow the installation process.</P -><P -> The privoxy service will automatically start after a successful - installation. In addition, the privoxy service will automatically - start every time your computer starts up.</P -><P -> To prevent the privoxy service from automatically starting when your - computer starts up, remove or rename the folder named - /Library/StartupItems/Privoxy.</P -><P -> A simple application named Privoxy Utility has been created which - enables administrators to easily start and stop the privoxy service.</P -><P -> In addition, the Privoxy Utility presents a simple way for - administrators to edit the various privoxy config files. A method - to uninstall the software is also available.</P -><P -> An administrator username and password must be supplied in order for - the Privoxy Utility to perform any of the tasks.</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="START-AMIGAOS" ->5.7. AmigaOS</A -></H2 -><P -> Start <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> (with RUN <>NIL:) in your - <TT -CLASS="FILENAME" ->startnet</TT -> script (AmiTCP), in - <TT -CLASS="FILENAME" ->s:user-startup</TT -> (RoadShow), as startup program in your - startup script (Genesis), or as startup action (Miami and MiamiDx). - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will automatically quit when you quit your - TCP/IP stack (just ignore the harmless warning your TCP/IP stack may display that - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is still running).</P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="START-GENTOO" ->5.8. Gentoo</A -></H2 -><P -> A script is again used. It will use the file <TT -CLASS="FILENAME" ->/etc/privoxy/config - </TT -> as its main configuration file.</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> /etc/init.d/privoxy start - </PRE -></TD -></TR -></TABLE -></P -><P -> Note that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is not automatically started at - boot time by default. You can change this with the <TT -CLASS="LITERAL" ->rc-update</TT -> - command.</P -><P -> - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -> rc-update add privoxy default - </PRE -></TD -></TR -></TABLE -></P -></DIV -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="CMDOPTIONS" ->5.9. Command Line Options</A -></H2 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> may be invoked with the following - command-line options:</P -><P -> <P -></P -><UL -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->--version</I -></SPAN -> - </P -><P -> Print version info and exit. Unix only. - </P -></LI -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->--help</I -></SPAN -> - </P -><P -> Print short usage info and exit. Unix only. - </P -></LI -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->--no-daemon</I -></SPAN -> - </P -><P -> Don't become a daemon, i.e. don't fork and become process group - leader, and don't detach from controlling tty. Unix only. - </P -></LI -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->--pidfile FILE</I -></SPAN -> - </P -><P -> On startup, write the process ID to <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->FILE</I -></SPAN ->. Delete the - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->FILE</I -></SPAN -> on exit. Failure to create or delete the - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->FILE</I -></SPAN -> is non-fatal. If no <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->FILE</I -></SPAN -> - option is given, no PID file will be used. Unix only. - </P -></LI -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->--user USER[.GROUP]</I -></SPAN -> - </P -><P -> After (optionally) writing the PID file, assume the user ID of - <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->USER</I -></SPAN ->, and if included the GID of GROUP. Exit if the - privileges are not sufficient to do so. Unix only. - </P -></LI -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->--chroot</I -></SPAN -> - </P -><P -> Before changing to the user ID given in the <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->--user</I -></SPAN -> option, - chroot to that user's home directory, i.e. make the kernel pretend to the <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - process that the directory tree starts there. If set up carefully, this can limit - the impact of possible vulnerabilities in <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to the files contained in that hierarchy. - Unix only. - </P -></LI -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->--pre-chroot-nslookup hostname</I -></SPAN -> - </P -><P -> Specifies a hostname to look up before doing a chroot. On some systems, initializing the - resolver library involves reading config files from /etc and/or loading additional shared - libraries from /lib. On these systems, doing a hostname lookup before the chroot reduces - the number of files that must be copied into the chroot tree. - </P -><P -> For fastest startup speed, a good value is a hostname that is not in /etc/hosts but that - your local name server (listed in /etc/resolv.conf) can resolve without recursion - (that is, without having to ask any other name servers). The hostname need not exist, - but if it doesn't, an error message (which can be ignored) will be output. - </P -></LI -><LI -><P -> <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->configfile</I -></SPAN -> - </P -><P -> If no <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->configfile</I -></SPAN -> is included on the command line, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will look for a file named - <SPAN -CLASS="QUOTE" ->"config"</SPAN -> in the current directory (except on Win32 - where it will look for <SPAN -CLASS="QUOTE" ->"config.txt"</SPAN -> instead). Specify - full path to avoid confusion. If no config file is found, - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> will fail to start. - </P -></LI -></UL -></P -><P -> On <SPAN -CLASS="APPLICATION" ->MS Windows</SPAN -> only there are two additional - command-line options to allow <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> to install and - run as a <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->service</I -></SPAN ->. See the -<A -HREF="installation.html#INSTALLATION-PACK-WIN" ->Window Installation section</A -> -for details.</P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="quickstart.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="configuration.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Quickstart to Using Privoxy</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Privoxy Configuration</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Starting Privoxy + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Quickstart to Using Privoxy" href= + "quickstart.html"> + <link rel="NEXT" title="Privoxy Configuration" href="configuration.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + p.c2 {font-weight: bold} + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="quickstart.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="configuration.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="STARTUP">5. Starting Privoxy</a> + </h1> + <p> + Before launching <span class="APPLICATION">Privoxy</span> for the + first time, you will want to configure your browser(s) to use <span + class="APPLICATION">Privoxy</span> as a HTTP and HTTPS (SSL) <a href= + "http://en.wikipedia.org/wiki/Proxy_server" target="_top">proxy</a>. + The default is 127.0.0.1 (or localhost) for the proxy address, and + port 8118 (earlier versions used port 8000). This is the one + configuration step <span class="emphasis"><i class="EMPHASIS">that + must be done</i></span>! + </p> + <p> + Please note that <span class="APPLICATION">Privoxy</span> can only + proxy HTTP and HTTPS traffic. It will not work with FTP or other + protocols. + </p> + <p> + </p> + <div class="FIGURE"> + <a name="AEN742"></a> + <p class="c2"> + Figure 2. Proxy Configuration Showing Mozilla/Netscape HTTP and + HTTPS (SSL) Settings + </p> + <div class="MEDIAOBJECT"> + <p> + <img src="proxy_setup.jpg"> + </p> + </div> + </div> + + <p> + With <span class="APPLICATION">Firefox</span>, this is typically set + under: + </p> + <p class="LITERALLAYOUT"> + <span class="GUIBUTTON">Tools</span> -> <span + class="GUIBUTTON">Options</span> -> <span class= + "GUIBUTTON">Advanced</span> -> <span class= + "GUIBUTTON">Network</span> -><span class= + "GUIBUTTON">Connection</span> -> <span class= + "GUIBUTTON">Settings</span><br> + + </p> + <p> + Or optionally on some platforms: + </p> + <p class="LITERALLAYOUT"> + <span class="GUIBUTTON">Edit</span> -> <span + class="GUIBUTTON">Preferences</span> -> <span class= + "GUIBUTTON">General</span> -> <span class= + "GUIBUTTON">Connection Settings</span> -> <span class= + "GUIBUTTON">Manual Proxy Configuration</span><br> + + </p> + <p> + With <span class="APPLICATION">Netscape</span> (and <span class= + "APPLICATION">Mozilla</span>), this can be set under: + </p> + <p class="LITERALLAYOUT"> + <span class="GUIBUTTON">Edit</span> -> <span + class="GUIBUTTON">Preferences</span> -> <span class= + "GUIBUTTON">Advanced</span> -> <span class= + "GUIBUTTON">Proxies</span> -> <span class= + "GUIBUTTON">HTTP Proxy</span><br> + + </p> + <p> + For <span class="APPLICATION">Internet Explorer v.5-7</span>: + </p> + <p class="LITERALLAYOUT"> + <span class="GUIBUTTON">Tools</span> -> <span + class="GUIBUTTON">Internet Options</span> -> <span + class="GUIBUTTON">Connections</span> -> <span class= + "GUIBUTTON">LAN Settings</span> + </p> + <p> + Then, check <span class="QUOTE">"Use Proxy"</span> and fill in the + appropriate info (Address: 127.0.0.1, Port: 8118). Include HTTPS + (SSL), if you want HTTPS proxy support too (sometimes labeled <span + class="QUOTE">"Secure"</span>). Make sure any checkboxes like <span + class="QUOTE">"Use the same proxy server for all protocols"</span> is + <span class="emphasis"><i class="EMPHASIS">UNCHECKED</i></span>. You + want only HTTP and HTTPS (SSL)! + </p> + <p> + </p> + <div class="FIGURE"> + <a name="AEN787"></a> + <p class="c2"> + Figure 3. Proxy Configuration Showing Internet Explorer HTTP and + HTTPS (Secure) Settings + </p> + <div class="MEDIAOBJECT"> + <p> + <img src="proxy2.jpg"> + </p> + </div> + </div> + + <p> + 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. Remove any <a href= + "http://en.wikipedia.org/wiki/Browser_cookie" target= + "_top">cookies</a>, if you want <span class= + "APPLICATION">Privoxy</span> to manage that. You are now ready to + start enjoying the benefits of using <span class= + "APPLICATION">Privoxy</span>! + </p> + <p> + <span class="APPLICATION">Privoxy</span> itself is typically started + by specifying the main configuration file to be used on the command + line. If no configuration file is specified on the command line, + <span class="APPLICATION">Privoxy</span> will look for a file named + <tt class="FILENAME">config</tt> in the current directory. Except on + Win32 where it will try <tt class="FILENAME">config.txt</tt>. + </p> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="START-REDHAT">5.1. Red Hat and Fedora</a> + </h2> + <p> + A default Red Hat installation may not start <span class= + "APPLICATION">Privoxy</span> upon boot. It will use the file <tt + class="FILENAME">/etc/privoxy/config</tt> as its main configuration + file. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # /etc/rc.d/init.d/privoxy start +</pre> + </td> + </tr> + </table> + + <p> + Or ... + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # service privoxy start +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="START-DEBIAN">5.2. Debian</a> + </h2> + <p> + We use a script. Note that Debian typically starts <span class= + "APPLICATION">Privoxy</span> upon booting per default. It will use + the file <tt class="FILENAME">/etc/privoxy/config</tt> as its main + configuration file. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # /etc/init.d/privoxy start +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="START-WINDOWS">5.3. Windows</a> + </h2> + <p> + Click on the <span class="APPLICATION">Privoxy</span> Icon to start + <span class="APPLICATION">Privoxy</span>. If no configuration file + is specified on the command line, <span class= + "APPLICATION">Privoxy</span> will look for a file named <tt class= + "FILENAME">config.txt</tt>. Note that Windows will automatically + start <span class="APPLICATION">Privoxy</span> when the system + starts if you chose that option when installing. + </p> + <p> + <span class="APPLICATION">Privoxy</span> can run with full Windows + service functionality. On Windows only, the <span class= + "APPLICATION">Privoxy</span> program has two new command line + arguments to install and uninstall <span class= + "APPLICATION">Privoxy</span> as a service. See the <a href= + "installation.html#INSTALLATION-PACK-WIN">Windows Installation + instructions</a> for details. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="START-UNICES">5.4. Solaris, NetBSD, FreeBSD, HP-UX and + others</a> + </h2> + <p> + Example Unix startup command: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + # /usr/sbin/privoxy /etc/privoxy/config +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="START-OS2">5.5. OS/2</a> + </h2> + <p> + During installation, <span class="APPLICATION">Privoxy</span> is + configured to start automatically when the system restarts. You can + start it manually by double-clicking on the <span class= + "APPLICATION">Privoxy</span> icon in the <span class= + "APPLICATION">Privoxy</span> folder. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="START-MACOSX">5.6. Mac OS X</a> + </h2> + <p> + After downloading the privoxy software, unzip the downloaded file + by double-clicking on the zip file icon. Then, double-click on the + installer package icon and follow the installation process. + </p> + <p> + The privoxy service will automatically start after a successful + installation. In addition, the privoxy service will automatically + start every time your computer starts up. + </p> + <p> + To prevent the privoxy service from automatically starting when + your computer starts up, remove or rename the folder named + /Library/StartupItems/Privoxy. + </p> + <p> + A simple application named Privoxy Utility has been created which + enables administrators to easily start and stop the privoxy + service. + </p> + <p> + In addition, the Privoxy Utility presents a simple way for + administrators to edit the various privoxy config files. A method + to uninstall the software is also available. + </p> + <p> + An administrator username and password must be supplied in order + for the Privoxy Utility to perform any of the tasks. + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="START-AMIGAOS">5.7. AmigaOS</a> + </h2> + <p> + Start <span class="APPLICATION">Privoxy</span> (with RUN + <>NIL:) in your <tt class="FILENAME">startnet</tt> script + (AmiTCP), in <tt class="FILENAME">s:user-startup</tt> (RoadShow), + as startup program in your startup script (Genesis), or as startup + action (Miami and MiamiDx). <span class= + "APPLICATION">Privoxy</span> will automatically quit when you quit + your TCP/IP stack (just ignore the harmless warning your TCP/IP + stack may display that <span class="APPLICATION">Privoxy</span> is + still running). + </p> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="START-GENTOO">5.8. Gentoo</a> + </h2> + <p> + A script is again used. It will use the file <tt class= + "FILENAME">/etc/privoxy/config</tt> as its main configuration file. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + /etc/init.d/privoxy start +</pre> + </td> + </tr> + </table> + + <p> + Note that <span class="APPLICATION">Privoxy</span> is not + automatically started at boot time by default. You can change this + with the <tt class="LITERAL">rc-update</tt> command. + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> + rc-update add privoxy default +</pre> + </td> + </tr> + </table> + </div> + <div class="SECT2"> + <h2 class="SECT2"> + <a name="CMDOPTIONS">5.9. Command Line Options</a> + </h2> + <p> + <span class="APPLICATION">Privoxy</span> may be invoked with the + following command-line options: + </p> + <p> + </p> + <ul> + <li> + <p> + <span class="emphasis"><i class="EMPHASIS">--version</i></span> + </p> + <p> + Print version info and exit. Unix only. + </p> + </li> + <li> + <p> + <span class="emphasis"><i class="EMPHASIS">--help</i></span> + </p> + <p> + Print short usage info and exit. Unix only. + </p> + </li> + <li> + <p> + <span class="emphasis"><i class= + "EMPHASIS">--no-daemon</i></span> + </p> + <p> + Don't become a daemon, i.e. don't fork and become process group + leader, and don't detach from controlling tty. Unix only. + </p> + </li> + <li> + <p> + <span class="emphasis"><i class="EMPHASIS">--pidfile + FILE</i></span> + </p> + <p> + On startup, write the process ID to <span class="emphasis"><i + class="EMPHASIS">FILE</i></span>. Delete the <span class= + "emphasis"><i class="EMPHASIS">FILE</i></span> on exit. Failure + to create or delete the <span class="emphasis"><i class= + "EMPHASIS">FILE</i></span> is non-fatal. If no <span class= + "emphasis"><i class="EMPHASIS">FILE</i></span> option is given, + no PID file will be used. Unix only. + </p> + </li> + <li> + <p> + <span class="emphasis"><i class="EMPHASIS">--user + USER[.GROUP]</i></span> + </p> + <p> + After (optionally) writing the PID file, assume the user ID of + <span class="emphasis"><i class="EMPHASIS">USER</i></span>, and + if included the GID of GROUP. Exit if the privileges are not + sufficient to do so. Unix only. + </p> + </li> + <li> + <p> + <span class="emphasis"><i class="EMPHASIS">--chroot</i></span> + </p> + <p> + Before changing to the user ID given in the <span class= + "emphasis"><i class="EMPHASIS">--user</i></span> option, chroot + to that user's home directory, i.e. make the kernel pretend to + the <span class="APPLICATION">Privoxy</span> process that the + directory tree starts there. If set up carefully, this can + limit the impact of possible vulnerabilities in <span class= + "APPLICATION">Privoxy</span> to the files contained in that + hierarchy. Unix only. + </p> + </li> + <li> + <p> + <span class="emphasis"><i class= + "EMPHASIS">--pre-chroot-nslookup hostname</i></span> + </p> + <p> + Specifies a hostname to look up before doing a chroot. On some + systems, initializing the resolver library involves reading + config files from /etc and/or loading additional shared + libraries from /lib. On these systems, doing a hostname lookup + before the chroot reduces the number of files that must be + copied into the chroot tree. + </p> + <p> + For fastest startup speed, a good value is a hostname that is + not in /etc/hosts but that your local name server (listed in + /etc/resolv.conf) can resolve without recursion (that is, + without having to ask any other name servers). The hostname + need not exist, but if it doesn't, an error message (which can + be ignored) will be output. + </p> + </li> + <li> + <p> + <span class="emphasis"><i class= + "EMPHASIS">configfile</i></span> + </p> + <p> + If no <span class="emphasis"><i class= + "EMPHASIS">configfile</i></span> is included on the command + line, <span class="APPLICATION">Privoxy</span> will look for a + file named <span class="QUOTE">"config"</span> in the current + directory (except on Win32 where it will look for <span class= + "QUOTE">"config.txt"</span> instead). Specify full path to + avoid confusion. If no config file is found, <span class= + "APPLICATION">Privoxy</span> will fail to start. + </p> + </li> + </ul> + + <p> + On <span class="APPLICATION">MS Windows</span> only there are two + additional command-line options to allow <span class= + "APPLICATION">Privoxy</span> to install and run as a <span class= + "emphasis"><i class="EMPHASIS">service</i></span>. See the <a href= + "installation.html#INSTALLATION-PACK-WIN">Window Installation + section</a> for details. + </p> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="quickstart.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="configuration.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Quickstart to Using Privoxy + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Privoxy Configuration + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/templates.html b/doc/webserver/user-manual/templates.html index 5cc57088..11784d98 100644 --- a/doc/webserver/user-manual/templates.html +++ b/doc/webserver/user-manual/templates.html @@ -1,321 +1,186 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->Privoxy's Template Files</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Filter Files" -HREF="filter-file.html"><LINK -REL="NEXT" -TITLE="Contacting the Developers, Bug Reporting and Feature -Requests" -HREF="contact.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="filter-file.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="contact.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="TEMPLATES" ->10. Privoxy's Template Files</A -></H1 -><P -> All <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> built-in pages, i.e. error pages such as the - <A -HREF="http://show-the-404-error.page" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"404 - No Such Domain"</SPAN -> - error page</A ->, the <A -HREF="http://ads.bannerserver.example.com/nasty-ads/sponsor.html" -TARGET="_top" -><SPAN -CLASS="QUOTE" ->"BLOCKED"</SPAN -> - page</A -> - and all pages of its <A -HREF="http://config.privoxy.org/" -TARGET="_top" ->web-based - user interface</A ->, are generated from <SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->templates</I -></SPAN ->. - (<SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> must be running for the above links to work as - intended.)</P -><P -> These templates are stored in a subdirectory of the <A -HREF="config.html#CONFDIR" ->configuration - directory</A -> called <TT -CLASS="FILENAME" ->templates</TT ->. On Unixish platforms, - this is typically - <A -HREF="file:///etc/privoxy/templates/" -TARGET="_top" -><TT -CLASS="FILENAME" ->/etc/privoxy/templates/</TT -></A ->.</P -><P -> The templates are basically normal HTML files, but with place-holders (called symbols - or exports), which <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> fills at run time. It - is possible to edit the templates with a normal text editor, should you want - to customize them. (<SPAN -CLASS="emphasis" -><I -CLASS="EMPHASIS" ->Not recommended for the casual - user</I -></SPAN ->). Should you create your own custom templates, you should use - the <TT -CLASS="FILENAME" ->config</TT -> setting <A -HREF="config.html#TEMPLDIR" ->templdir</A -> - to specify an alternate location, so your templates do not get overwritten - during upgrades. - </P -><P -> Note that just like in configuration files, lines starting - with <TT -CLASS="LITERAL" ->#</TT -> are ignored when the templates are filled in.</P -><P -> The place-holders are of the form <TT -CLASS="LITERAL" ->@name@</TT ->, and you will - find a list of available symbols, which vary from template to template, - in the comments at the start of each file. Note that these comments are not - always accurate, and that it's probably best to look at the existing HTML - code to find out which symbols are supported and what they are filled in with.</P -><P -> A special application of this substitution mechanism is to make whole - blocks of HTML code disappear when a specific symbol is set. We use this - for many purposes, one of them being to include the beta warning in all - our user interface (CGI) pages when <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is in an alpha or beta development stage:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -><!-- @if-unstable-start --> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + Privoxy's Template Files + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Filter Files" href="filter-file.html"> + <link rel="NEXT" title= + "Contacting the Developers, Bug Reporting and Feature Requests" href= + "contact.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="filter-file.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="contact.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="TEMPLATES">10. Privoxy's Template Files</a> + </h1> + <p> + All <span class="APPLICATION">Privoxy</span> built-in pages, i.e. + error pages such as the <a href="http://show-the-404-error.page" + target="_top"><span class="QUOTE">"404 - No Such Domain"</span> error + page</a>, the <a href= + "http://ads.bannerserver.example.com/nasty-ads/sponsor.html" target= + "_top"><span class="QUOTE">"BLOCKED"</span> page</a> and all pages of + its <a href="http://config.privoxy.org/" target="_top">web-based user + interface</a>, are generated from <span class="emphasis"><i class= + "EMPHASIS">templates</i></span>. (<span class= + "APPLICATION">Privoxy</span> must be running for the above links to + work as intended.) + </p> + <p> + These templates are stored in a subdirectory of the <a href= + "config.html#CONFDIR">configuration directory</a> called <tt class= + "FILENAME">templates</tt>. On Unixish platforms, this is typically <a + href="file:///etc/privoxy/templates/" target="_top"><tt class= + "FILENAME">/etc/privoxy/templates/</tt></a>. + </p> + <p> + The templates are basically normal HTML files, but with place-holders + (called symbols or exports), which <span class= + "APPLICATION">Privoxy</span> fills at run time. It is possible to + edit the templates with a normal text editor, should you want to + customize them. (<span class="emphasis"><i class="EMPHASIS">Not + recommended for the casual user</i></span>). Should you create your + own custom templates, you should use the <tt class= + "FILENAME">config</tt> setting <a href= + "config.html#TEMPLDIR">templdir</a> to specify an alternate location, + so your templates do not get overwritten during upgrades. + </p> + <p> + Note that just like in configuration files, lines starting with <tt + class="LITERAL">#</tt> are ignored when the templates are filled in. + </p> + <p> + The place-holders are of the form <tt class="LITERAL">@name@</tt>, + and you will find a list of available symbols, which vary from + template to template, in the comments at the start of each file. Note + that these comments are not always accurate, and that it's probably + best to look at the existing HTML code to find out which symbols are + supported and what they are filled in with. + </p> + <p> + A special application of this substitution mechanism is to make whole + blocks of HTML code disappear when a specific symbol is set. We use + this for many purposes, one of them being to include the beta warning + in all our user interface (CGI) pages when <span class= + "APPLICATION">Privoxy</span> is in an alpha or beta development + stage: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +<!-- @if-unstable-start --> ... beta warning HTML code goes here ... -<!-- if-unstable-end@ --></PRE -></TD -></TR -></TABLE -></P -><P -> If the "unstable" symbol is set, everything in between and including - <TT -CLASS="LITERAL" ->@if-unstable-start</TT -> and <TT -CLASS="LITERAL" ->if-unstable-end@</TT -> - will disappear, leaving nothing but an empty comment:</P -><P -> <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><PRE -CLASS="SCREEN" -><!-- --></PRE -></TD -></TR -></TABLE -></P -><P -> There's also an if-then-else construct and an <TT -CLASS="LITERAL" ->#include</TT -> - mechanism, but you'll sure find out if you are inclined to edit the - templates ;-)</P -><P -> All templates refer to a style located at - <A -HREF="http://config.privoxy.org/send-stylesheet" -TARGET="_top" -><TT -CLASS="LITERAL" ->http://config.privoxy.org/send-stylesheet</TT -></A ->. - This is, of course, locally served by <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - and the source for it can be found and edited in the - <TT -CLASS="FILENAME" ->cgi-style.css</TT -> template.</P -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="filter-file.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="contact.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Filter Files</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Contacting the Developers, Bug Reporting and Feature -Requests</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!-- if-unstable-end@ --> +</pre> + </td> + </tr> + </table> + + <p> + If the "unstable" symbol is set, everything in between and including + <tt class="LITERAL">@if-unstable-start</tt> and <tt class= + "LITERAL">if-unstable-end@</tt> will disappear, leaving nothing but + an empty comment: + </p> + <p> + </p> + <table border="0" bgcolor="#E0E0E0" width="100%"> + <tr> + <td> +<pre class="SCREEN"> +<!-- --> +</pre> + </td> + </tr> + </table> + + <p> + There's also an if-then-else construct and an <tt class= + "LITERAL">#include</tt> mechanism, but you'll sure find out if you + are inclined to edit the templates ;-) + </p> + <p> + All templates refer to a style located at <a href= + "http://config.privoxy.org/send-stylesheet" target="_top"><tt class= + "LITERAL">http://config.privoxy.org/send-stylesheet</tt></a>. This + is, of course, locally served by <span class= + "APPLICATION">Privoxy</span> and the source for it can be found and + edited in the <tt class="FILENAME">cgi-style.css</tt> template. + </p> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="filter-file.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="contact.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Filter Files + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Contacting the Developers, Bug Reporting and Feature Requests + </td> + </tr> + </table> + </div> + </body> +</html> + diff --git a/doc/webserver/user-manual/whatsnew.html b/doc/webserver/user-manual/whatsnew.html index ac293a02..5a8cfa65 100644 --- a/doc/webserver/user-manual/whatsnew.html +++ b/doc/webserver/user-manual/whatsnew.html @@ -1,797 +1,700 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->What's New in this Release</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="Privoxy 3.0.18 User Manual" -HREF="index.html"><LINK -REL="PREVIOUS" -TITLE="Installation" -HREF="installation.html"><LINK -REL="NEXT" -TITLE="Quickstart to Using Privoxy" -HREF="quickstart.html"><LINK -REL="STYLESHEET" -TYPE="text/css" -HREF="../p_doc.css"><META -HTTP-EQUIV="Content-Type" -CONTENT="text/html; -charset=ISO-8859-1"> -<LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css"> -</head -><BODY -CLASS="SECT1" -BGCOLOR="#EEEEEE" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->Privoxy 3.0.18 User Manual</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="installation.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" -></TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="quickstart.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="SECT1" -><H1 -CLASS="SECT1" -><A -NAME="WHATSNEW" ->3. What's New in this Release</A -></H1 -><P -> <SPAN -CLASS="APPLICATION" ->Privoxy 3.0.17</SPAN -> is a stable release. - The changes since 3.0.16 stable are:</P -><P -> <P -></P -><UL -><LI -><P -> Fixed last-chunk-detection for responses where the content was small - enough to be read with the body, causing Privoxy to wait for the - end of the content until the server closed the connection or the - request timed out. Reported by "Karsten" in #3028326. - </P -></LI -><LI -><P -> Responses with status code 204 weren't properly detected as body-less - like RFC2616 mandates. Like the previous bug, this caused Privoxy to - wait for the end of the content until the server closed the connection - or the request timed out. Fixes #3022042 and #3025553, reported by a - user with no visible name. Most likely also fixes a bunch of other - AJAX-related problem reports that got closed in the past due to - insufficient information and lack of feedback. - </P -></LI -><LI -><P -> Fixed an ACL bug that made it impossible to build a blacklist. - Usually the ACL directives are used in a whitelist, which worked - as expected, but blacklisting is still useful for public proxies - where one only needs to deny known abusers access. - </P -></LI -><LI -><P -> Added LOG_LEVEL_RECEIVED to log the not-yet-parsed data read from the - network. This should make debugging various parsing issues a lot easier. - </P -></LI -><LI -><P -> The IPv6 code is enabled by default on Windows versions that support it. - Patch submitted by oCameLo in #2942729. - </P -></LI -><LI -><P -> In mingw32 versions, the user.filter file is reachable through the - GUI, just like default.filter is. Feature request 3040263. - </P -></LI -><LI -><P -> Added the configure option --enable-large-file-support to set a few - defines that are required by platforms like GNU/Linux to support files - larger then 2GB. Mainly interesting for users without proper logfile - management. - </P -></LI -><LI -><P -> Logging with "debug 16" no longer stops at the first nul byte which is - pretty useless. Non-printable characters are replaced with their hex value - so the result can't span multiple lines making parsing them harder then - necessary. - </P -></LI -><LI -><P -> Privoxy logs when reading an action, filter or trust file. - </P -></LI -><LI -><P -> Fixed incorrect regression test markup which caused a test in - 3.0.16 to fail while Privoxy itself was working correctly. - While Privoxy accepts hide-referer, too, the action name is actually - hide-referrer which is also the name used one the final results page, - where the test expected the alias. - </P -></LI -><LI -><P -> CGI interface improvements: - <P -></P -><UL -><LI -><P -> In finish_http_response(), continue to add the 'Connection: close' - header if the client connection will not be kept alive. - Anonymously pointed out in #2987454. - </P -></LI -><LI -><P -> Apostrophes in block messages no longer cause parse errors - when the blocked page is viewed with JavaScript enabled. - Reported by dg1727 in #3062296. - </P -></LI -><LI -><P -> Fix a bunch of anchors that used underscores instead of dashes. - </P -></LI -><LI -><P -> Allow to keep the client connection alive after crunching the previous request. - Already opened server connections can be kept alive, too. - </P -></LI -><LI -><P -> In cgi_show_url_info(), don't forget to prefix URLs that only contain - http:// or https:// in the path. Fixes #2975765 reported by Adam Piggott. - </P -></LI -><LI -><P -> Show the 404 CGI page if cgi_send_user_manual() is called while - local user manual delivery is disabled. - </P -></LI -></UL -> - </P -></LI -><LI -><P -> Action file improvements: - <P -></P -><UL -><LI -><P -> Enable user.filter by default. Suggested by David White in #3001830. - </P -></LI -><LI -><P -> Block .sitestat.com/. Reported by johnd16 in #3002725. - </P -></LI -><LI -><P -> Block .atemda.com/. Reported by johnd16 in #3002723. - </P -></LI -><LI -><P -> Block js.adlink.net/. Reported by johnd16 in #3002720. - </P -></LI -><LI -><P -> Block .analytics.yahoo.com/. Reported by johnd16 in #3002713. - </P -></LI -><LI -><P -> Block sb.scorecardresearch.com, too. Reported by dg1727 in #2992652. - </P -></LI -><LI -><P -> Fix problems noticed on Yahoo mail and news pages. - </P -></LI -><LI -><P -> Remove the too broad yahoo section, only keeping the - fast-redirects exception as discussed on ijbswa-devel@. - </P -></LI -><LI -><P -> Don't block adesklets.sourceforge.net. Reported in #2974204. - </P -></LI -><LI -><P -> Block chartbeat ping tracking. Reported in #2975895. - </P -></LI -><LI -><P -> Tag CSS and image requests with cautious and medium settings, too. - </P -></LI -><LI -><P -> Don't handle view.atdmt.com as image. It's used for click-throughs - so users should be able to "go there anyway". - Reported by Adam Piggott in #2975927. - </P -></LI -><LI -><P -> Also let the refresh-tags filter remove invalid refresh tags where - the 'url=' part is missing. Anonymously reported in #2986382. - While at it, update the description to mention the fact that only - refresh tags with refresh times above 9 seconds are covered. - </P -></LI -><LI -><P -> javascript needs to be blocked with +handle-as-empty-document to - work around Firefox bug 492459. So move .js blockers from - +block{Might be a web-bug.} -handle-as-empty-document to - +block{Might be a web-bug.} +handle-as-empty-document. - </P -></LI -><LI -><P -> ijbswa-Feature Requests-3006719 - Block 160x578 Banners. - </P -></LI -><LI -><P -> Block another omniture tracking domain. - </P -></LI -><LI -><P -> Added a range-requests tagger. - </P -></LI -><LI -><P -> Added two sections to get Flickr's Ajax interface working with - default pre-settings. If you change the configuration to block - cookies by default, you'll need additional exceptions. - Reported by Mathias Homann in #3101419 and by Patrick on ijbswa-users@. - </P -></LI -></UL -> - </P -></LI -><LI -><P -> Documentation improvements: - <P -></P -><UL -><LI -><P -> Explicitly mention how to match all URLs. - </P -></LI -><LI -><P -> Consistently recommend socks5 in the Tor FAQ entry and mention - its advantage compared to socks4a. Reported by David in #2960129. - </P -></LI -><LI -><P -> Slightly improve the explanation of why filtering may appear - slower than it is. - </P -></LI -><LI -><P -> Grammar fixes for the ACL section. - </P -></LI -><LI -><P -> Fixed a link to the 'intercepting' entry and add another one. - </P -></LI -><LI -><P -> Rename the 'Other' section to 'Mailing Lists' and reword it - to make it clear that nobody is forced to use the trackers - </P -></LI -><LI -><P -> Note that 'anonymously' posting on the trackers may not always - be possible. - </P -></LI -><LI -><P -> Suggest to enable debug 32768 when suspecting parsing problems. - </P -></LI -></UL -> - </P -></LI -><LI -><P -> Privoxy-Log-Parser improvements: - <P -></P -><UL -><LI -><P -> Gather statistics for ressources, methods, and HTTP versions - used by the client. - </P -></LI -><LI -><P -> Also gather statistics for blocked and redirected requests. - </P -></LI -><LI -><P -> Provide the percentage of keep-alive offers the client accepted. - </P -></LI -><LI -><P -> Add a --url-statistics-threshold option. - </P -></LI -><LI -><P -> Add a --host-statistics-threshold option to also gather - statistics about how many request where made per host. - </P -></LI -><LI -><P -> Fix a bug in handle_loglevel_header() where a 'scan: ' got lost. - </P -></LI -><LI -><P -> Add a --shorten-thread-ids option to replace the thread id with - a decimal number. - </P -></LI -><LI -><P -> Accept and ignore: Looks like we got the last chunk together - with the server headers. We better stop reading. - </P -></LI -><LI -><P -> Accept and ignore: Continue hack in da house. - </P -></LI -><LI -><P -> Accept and higlight: Rejecting connection from 10.0.0.2. - Maximum number of connections reached. - </P -></LI -><LI -><P -> Accept and highlight: Loading actions file: /usr/local/etc/privoxy/default.action - </P -></LI -><LI -><P -> Accept and highlight: Loading filter file: /usr/local/etc/privoxy/default.filter - </P -></LI -><LI -><P -> Accept and highlight: Killed all-caps Host header line: HOST: bestproxydb.com - </P -></LI -><LI -><P -> Accept and highlight: Reducing expected bytes to 0. Marking - the server socket tainted after throwing 4 bytes away. - </P -></LI -><LI -><P -> Accept: Merged multiple header lines to: 'X-FORWARDED-PROTO: http X-HOST: 127.0.0.1' - </P -></LI -></UL -> - </P -></LI -><LI -><P -> Code cleanups: - <P -></P -><UL -><LI -><P -> Remove the next member from the client_state struct. Only the main - thread needs access to all client states so give it its own struct. - </P -></LI -><LI -><P -> Garbage-collect request_contains_null_bytes(). - </P -></LI -><LI -><P -> Ditch redundant code in unload_configfile(). - </P -></LI -><LI -><P -> Ditch LogGetURLUnderCursor() which doesn't seem to be used anywhere. - </P -></LI -><LI -><P -> In write_socket(), remove the write-only variable write_len in - an ifdef __OS2__ block. Spotted by cppcheck. - </P -></LI -><LI -><P -> In connect_to(), don't declare the variable 'flags' on OS/2 where - it isn't used. Spotted by cppcheck. - </P -></LI -><LI -><P -> Limit the scope of various variables. Spotted by cppcheck. - </P -></LI -><LI -><P -> In add_to_iob(), turn an interestingly looking for loop into a - boring while loop. - </P -></LI -><LI -><P -> Code cleanup in preparation for external filters. - </P -></LI -><LI -><P -> In listen_loop(), mention the socket on which we accepted the - connection, not just the source IP address. - </P -></LI -><LI -><P -> In write_socket(), also log the socket we're writing to. - </P -></LI -><LI -><P -> In log_error(), assert that escaped characters get logged - completely or not at all. - </P -></LI -><LI -><P -> In log_error(), assert that ival and sval have reasonable values. - There's no reason not to abort() if they don't. - </P -></LI -><LI -><P -> Remove an incorrect cgi_error_unknown() call in a - cannot-happen-situation in send_crunch_response(). - </P -></LI -><LI -><P -> Clean up white-space in http_response definition and - move the crunch_reason to the beginning. - </P -></LI -><LI -><P -> Turn http_response.reason into an enum and rename it - to http_response.crunch_reason. - </P -></LI -><LI -><P -> Silence a 'gcc (Debian 4.3.2-1.1) 4.3.2' warning on i686 GNU/Linux. - </P -></LI -><LI -><P -> Fix white-space in a log message in remove_chunked_transfer_coding(). - While at it, add a note that the message doesn't seem to - be entirely correct and should be improved later on. - </P -></LI -></UL -> - </P -></LI -><LI -><P -> GNUmakefile improvements: - <P -></P -><UL -><LI -><P -> Use $(SSH) instead of ssh, so one only needs to specify a username once. - </P -></LI -><LI -><P -> Removed references to the action feedback thingy that hasn't been - working for years. - </P -></LI -><LI -><P -> Consistently use shell.sourceforge.net instead of shell.sf.net so - one doesn't need to check server fingerprints twice. - </P -></LI -><LI -><P -> Removed GNUisms in the webserver and webactions targets so they - work with standard tar. - </P -></LI -></UL -> - </P -></LI -></UL -></P -><DIV -CLASS="SECT2" -><H2 -CLASS="SECT2" -><A -NAME="UPGRADERSNOTE" ->3.1. Note to Upgraders</A -></H2 -><P -> A quick list of things to be aware of before upgrading from earlier - versions of <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN ->:</P -><P -> <P -></P -><UL -><LI -><P -> The recommended way to upgrade <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> is to backup your old - configuration files, install the new ones, verify that <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> - is working correctly and finally merge back your changes using - <SPAN -CLASS="APPLICATION" ->diff</SPAN -> and maybe <SPAN -CLASS="APPLICATION" ->patch</SPAN ->. - </P -><P -> There are a number of new features in each <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> release and - most of them have to be explicitly enabled in the configuration - files. Old configuration files obviously don't do that and due - to syntax changes using old configuration files with a new - <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> isn't always possible anyway. - </P -></LI -><LI -><P -> - Note that some installers remove earlier versions completely, - including configuration files, therefore you should really save - any important configuration files! - </P -></LI -><LI -><P -> - On the other hand, other installers don't overwrite existing configuration - files, thinking you will want to do that yourself. - </P -></LI -><LI -><P -> - <TT -CLASS="FILENAME" ->standard.action</TT -> has been merged into - the <TT -CLASS="FILENAME" ->default.action</TT -> file. - </P -></LI -><LI -><P -> In the default configuration only fatal errors are logged now. - You can change that in the <A -HREF="config.html#DEBUG" ->debug section</A -> - of the configuration file. You may also want to enable more verbose - logging until you verified that the new <SPAN -CLASS="APPLICATION" ->Privoxy</SPAN -> version is working - as expected. - </P -></LI -><LI -><P -> Three other config file settings are now off by default: - <A -HREF="config.html#ENABLE-REMOTE-TOGGLE" ->enable-remote-toggle</A ->, - <A -HREF="config.html#ENABLE-REMOTE-HTTP-TOGGLE" ->enable-remote-http-toggle</A ->, - and <A -HREF="config.html#ENABLE-EDIT-ACTIONS" ->enable-edit-actions</A ->. - If you use or want these, you will need to explicitly enable them, and - be aware of the security issues involved. - </P -></LI -></UL -></P -></DIV -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="installation.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="quickstart.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Installation</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -> </TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Quickstart to Using Privoxy</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org"> + <title> + What's New in this Release + </title> + <meta name="GENERATOR" content= + "Modular DocBook HTML Stylesheet Version 1.79"> + <link rel="HOME" title="Privoxy 3.0.18 User Manual" href="index.html"> + <link rel="PREVIOUS" title="Installation" href="installation.html"> + <link rel="NEXT" title="Quickstart to Using Privoxy" href= + "quickstart.html"> + <link rel="STYLESHEET" type="text/css" href="../p_doc.css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <link rel="STYLESHEET" type="text/css" href="p_doc.css"> +<style type="text/css"> + body { + background-color: #EEEEEE; + color: #000000; + } + :link { color: #0000FF } + :visited { color: #840084 } + :active { color: #0000FF } + hr.c1 {text-align: left} +</style> + </head> + <body class="SECT1"> + <div class="NAVHEADER"> + <table summary="Header navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <th colspan="3" align="center"> + Privoxy 3.0.18 User Manual + </th> + </tr> + <tr> + <td width="10%" align="left" valign="bottom"> + <a href="installation.html" accesskey="P">Prev</a> + </td> + <td width="80%" align="center" valign="bottom"> + </td> + <td width="10%" align="right" valign="bottom"> + <a href="quickstart.html" accesskey="N">Next</a> + </td> + </tr> + </table> + <hr width="100%" class="c1"> + </div> + <div class="SECT1"> + <h1 class="SECT1"> + <a name="WHATSNEW">3. What's New in this Release</a> + </h1> + <p> + <span class="APPLICATION">Privoxy 3.0.17</span> is a stable release. + The changes since 3.0.16 stable are: + </p> + <p> + </p> + <ul> + <li> + <p> + Fixed last-chunk-detection for responses where the content was + small enough to be read with the body, causing Privoxy to wait + for the end of the content until the server closed the connection + or the request timed out. Reported by "Karsten" in #3028326. + </p> + </li> + <li> + <p> + Responses with status code 204 weren't properly detected as + body-less like RFC2616 mandates. Like the previous bug, this + caused Privoxy to wait for the end of the content until the + server closed the connection or the request timed out. Fixes + #3022042 and #3025553, reported by a user with no visible name. + Most likely also fixes a bunch of other AJAX-related problem + reports that got closed in the past due to insufficient + information and lack of feedback. + </p> + </li> + <li> + <p> + Fixed an ACL bug that made it impossible to build a blacklist. + Usually the ACL directives are used in a whitelist, which worked + as expected, but blacklisting is still useful for public proxies + where one only needs to deny known abusers access. + </p> + </li> + <li> + <p> + Added LOG_LEVEL_RECEIVED to log the not-yet-parsed data read from + the network. This should make debugging various parsing issues a + lot easier. + </p> + </li> + <li> + <p> + The IPv6 code is enabled by default on Windows versions that + support it. Patch submitted by oCameLo in #2942729. + </p> + </li> + <li> + <p> + In mingw32 versions, the user.filter file is reachable through + the GUI, just like default.filter is. Feature request 3040263. + </p> + </li> + <li> + <p> + Added the configure option --enable-large-file-support to set a + few defines that are required by platforms like GNU/Linux to + support files larger then 2GB. Mainly interesting for users + without proper logfile management. + </p> + </li> + <li> + <p> + Logging with "debug 16" no longer stops at the first nul byte + which is pretty useless. Non-printable characters are replaced + with their hex value so the result can't span multiple lines + making parsing them harder then necessary. + </p> + </li> + <li> + <p> + Privoxy logs when reading an action, filter or trust file. + </p> + </li> + <li> + <p> + Fixed incorrect regression test markup which caused a test in + 3.0.16 to fail while Privoxy itself was working correctly. While + Privoxy accepts hide-referer, too, the action name is actually + hide-referrer which is also the name used one the final results + page, where the test expected the alias. + </p> + </li> + <li> + <p> + CGI interface improvements: + </p> + <ul> + <li> + <p> + In finish_http_response(), continue to add the 'Connection: + close' header if the client connection will not be kept + alive. Anonymously pointed out in #2987454. + </p> + </li> + <li> + <p> + Apostrophes in block messages no longer cause parse errors + when the blocked page is viewed with JavaScript enabled. + Reported by dg1727 in #3062296. + </p> + </li> + <li> + <p> + Fix a bunch of anchors that used underscores instead of + dashes. + </p> + </li> + <li> + <p> + Allow to keep the client connection alive after crunching the + previous request. Already opened server connections can be + kept alive, too. + </p> + </li> + <li> + <p> + In cgi_show_url_info(), don't forget to prefix URLs that only + contain http:// or https:// in the path. Fixes #2975765 + reported by Adam Piggott. + </p> + </li> + <li> + <p> + Show the 404 CGI page if cgi_send_user_manual() is called + while local user manual delivery is disabled. + </p> + </li> + </ul> + </li> + <li> + <p> + Action file improvements: + </p> + <ul> + <li> + <p> + Enable user.filter by default. Suggested by David White in + #3001830. + </p> + </li> + <li> + <p> + Block .sitestat.com/. Reported by johnd16 in #3002725. + </p> + </li> + <li> + <p> + Block .atemda.com/. Reported by johnd16 in #3002723. + </p> + </li> + <li> + <p> + Block js.adlink.net/. Reported by johnd16 in #3002720. + </p> + </li> + <li> + <p> + Block .analytics.yahoo.com/. Reported by johnd16 in #3002713. + </p> + </li> + <li> + <p> + Block sb.scorecardresearch.com, too. Reported by dg1727 in + #2992652. + </p> + </li> + <li> + <p> + Fix problems noticed on Yahoo mail and news pages. + </p> + </li> + <li> + <p> + Remove the too broad yahoo section, only keeping the + fast-redirects exception as discussed on ijbswa-devel@. + </p> + </li> + <li> + <p> + Don't block adesklets.sourceforge.net. Reported in #2974204. + </p> + </li> + <li> + <p> + Block chartbeat ping tracking. Reported in #2975895. + </p> + </li> + <li> + <p> + Tag CSS and image requests with cautious and medium settings, + too. + </p> + </li> + <li> + <p> + Don't handle view.atdmt.com as image. It's used for + click-throughs so users should be able to "go there anyway". + Reported by Adam Piggott in #2975927. + </p> + </li> + <li> + <p> + Also let the refresh-tags filter remove invalid refresh tags + where the 'url=' part is missing. Anonymously reported in + #2986382. While at it, update the description to mention the + fact that only refresh tags with refresh times above 9 + seconds are covered. + </p> + </li> + <li> + <p> + javascript needs to be blocked with +handle-as-empty-document + to work around Firefox bug 492459. So move .js blockers from + +block{Might be a web-bug.} -handle-as-empty-document to + +block{Might be a web-bug.} +handle-as-empty-document. + </p> + </li> + <li> + <p> + ijbswa-Feature Requests-3006719 - Block 160x578 Banners. + </p> + </li> + <li> + <p> + Block another omniture tracking domain. + </p> + </li> + <li> + <p> + Added a range-requests tagger. + </p> + </li> + <li> + <p> + Added two sections to get Flickr's Ajax interface working + with default pre-settings. If you change the configuration to + block cookies by default, you'll need additional exceptions. + Reported by Mathias Homann in #3101419 and by Patrick on + ijbswa-users@. + </p> + </li> + </ul> + </li> + <li> + <p> + Documentation improvements: + </p> + <ul> + <li> + <p> + Explicitly mention how to match all URLs. + </p> + </li> + <li> + <p> + Consistently recommend socks5 in the Tor FAQ entry and + mention its advantage compared to socks4a. Reported by David + in #2960129. + </p> + </li> + <li> + <p> + Slightly improve the explanation of why filtering may appear + slower than it is. + </p> + </li> + <li> + <p> + Grammar fixes for the ACL section. + </p> + </li> + <li> + <p> + Fixed a link to the 'intercepting' entry and add another one. + </p> + </li> + <li> + <p> + Rename the 'Other' section to 'Mailing Lists' and reword it + to make it clear that nobody is forced to use the trackers + </p> + </li> + <li> + <p> + Note that 'anonymously' posting on the trackers may not + always be possible. + </p> + </li> + <li> + <p> + Suggest to enable debug 32768 when suspecting parsing + problems. + </p> + </li> + </ul> + </li> + <li> + <p> + Privoxy-Log-Parser improvements: + </p> + <ul> + <li> + <p> + Gather statistics for ressources, methods, and HTTP versions + used by the client. + </p> + </li> + <li> + <p> + Also gather statistics for blocked and redirected requests. + </p> + </li> + <li> + <p> + Provide the percentage of keep-alive offers the client + accepted. + </p> + </li> + <li> + <p> + Add a --url-statistics-threshold option. + </p> + </li> + <li> + <p> + Add a --host-statistics-threshold option to also gather + statistics about how many request where made per host. + </p> + </li> + <li> + <p> + Fix a bug in handle_loglevel_header() where a 'scan: ' got + lost. + </p> + </li> + <li> + <p> + Add a --shorten-thread-ids option to replace the thread id + with a decimal number. + </p> + </li> + <li> + <p> + Accept and ignore: Looks like we got the last chunk together + with the server headers. We better stop reading. + </p> + </li> + <li> + <p> + Accept and ignore: Continue hack in da house. + </p> + </li> + <li> + <p> + Accept and higlight: Rejecting connection from 10.0.0.2. + Maximum number of connections reached. + </p> + </li> + <li> + <p> + Accept and highlight: Loading actions file: + /usr/local/etc/privoxy/default.action + </p> + </li> + <li> + <p> + Accept and highlight: Loading filter file: + /usr/local/etc/privoxy/default.filter + </p> + </li> + <li> + <p> + Accept and highlight: Killed all-caps Host header line: HOST: + bestproxydb.com + </p> + </li> + <li> + <p> + Accept and highlight: Reducing expected bytes to 0. Marking + the server socket tainted after throwing 4 bytes away. + </p> + </li> + <li> + <p> + Accept: Merged multiple header lines to: 'X-FORWARDED-PROTO: + http X-HOST: 127.0.0.1' + </p> + </li> + </ul> + </li> + <li> + <p> + Code cleanups: + </p> + <ul> + <li> + <p> + Remove the next member from the client_state struct. Only the + main thread needs access to all client states so give it its + own struct. + </p> + </li> + <li> + <p> + Garbage-collect request_contains_null_bytes(). + </p> + </li> + <li> + <p> + Ditch redundant code in unload_configfile(). + </p> + </li> + <li> + <p> + Ditch LogGetURLUnderCursor() which doesn't seem to be used + anywhere. + </p> + </li> + <li> + <p> + In write_socket(), remove the write-only variable write_len + in an ifdef __OS2__ block. Spotted by cppcheck. + </p> + </li> + <li> + <p> + In connect_to(), don't declare the variable 'flags' on OS/2 + where it isn't used. Spotted by cppcheck. + </p> + </li> + <li> + <p> + Limit the scope of various variables. Spotted by cppcheck. + </p> + </li> + <li> + <p> + In add_to_iob(), turn an interestingly looking for loop into + a boring while loop. + </p> + </li> + <li> + <p> + Code cleanup in preparation for external filters. + </p> + </li> + <li> + <p> + In listen_loop(), mention the socket on which we accepted the + connection, not just the source IP address. + </p> + </li> + <li> + <p> + In write_socket(), also log the socket we're writing to. + </p> + </li> + <li> + <p> + In log_error(), assert that escaped characters get logged + completely or not at all. + </p> + </li> + <li> + <p> + In log_error(), assert that ival and sval have reasonable + values. There's no reason not to abort() if they don't. + </p> + </li> + <li> + <p> + Remove an incorrect cgi_error_unknown() call in a + cannot-happen-situation in send_crunch_response(). + </p> + </li> + <li> + <p> + Clean up white-space in http_response definition and move the + crunch_reason to the beginning. + </p> + </li> + <li> + <p> + Turn http_response.reason into an enum and rename it to + http_response.crunch_reason. + </p> + </li> + <li> + <p> + Silence a 'gcc (Debian 4.3.2-1.1) 4.3.2' warning on i686 + GNU/Linux. + </p> + </li> + <li> + <p> + Fix white-space in a log message in + remove_chunked_transfer_coding(). While at it, add a note + that the message doesn't seem to be entirely correct and + should be improved later on. + </p> + </li> + </ul> + </li> + <li> + <p> + GNUmakefile improvements: + </p> + <ul> + <li> + <p> + Use $(SSH) instead of ssh, so one only needs to specify a + username once. + </p> + </li> + <li> + <p> + Removed references to the action feedback thingy that hasn't + been working for years. + </p> + </li> + <li> + <p> + Consistently use shell.sourceforge.net instead of + shell.sf.net so one doesn't need to check server fingerprints + twice. + </p> + </li> + <li> + <p> + Removed GNUisms in the webserver and webactions targets so + they work with standard tar. + </p> + </li> + </ul> + </li> + </ul> + + <div class="SECT2"> + <h2 class="SECT2"> + <a name="UPGRADERSNOTE">3.1. Note to Upgraders</a> + </h2> + <p> + A quick list of things to be aware of before upgrading from earlier + versions of <span class="APPLICATION">Privoxy</span>: + </p> + <p> + </p> + <ul> + <li> + <p> + The recommended way to upgrade <span class= + "APPLICATION">Privoxy</span> is to backup your old + configuration files, install the new ones, verify that <span + class="APPLICATION">Privoxy</span> is working correctly and + finally merge back your changes using <span class= + "APPLICATION">diff</span> and maybe <span class= + "APPLICATION">patch</span>. + </p> + <p> + There are a number of new features in each <span class= + "APPLICATION">Privoxy</span> release and most of them have to + be explicitly enabled in the configuration files. Old + configuration files obviously don't do that and due to syntax + changes using old configuration files with a new <span class= + "APPLICATION">Privoxy</span> isn't always possible anyway. + </p> + </li> + <li> + <p> + Note that some installers remove earlier versions completely, + including configuration files, therefore you should really save + any important configuration files! + </p> + </li> + <li> + <p> + On the other hand, other installers don't overwrite existing + configuration files, thinking you will want to do that + yourself. + </p> + </li> + <li> + <p> + <tt class="FILENAME">standard.action</tt> has been merged into + the <tt class="FILENAME">default.action</tt> file. + </p> + </li> + <li> + <p> + In the default configuration only fatal errors are logged now. + You can change that in the <a href="config.html#DEBUG">debug + section</a> of the configuration file. You may also want to + enable more verbose logging until you verified that the new + <span class="APPLICATION">Privoxy</span> version is working as + expected. + </p> + </li> + <li> + <p> + Three other config file settings are now off by default: <a + href= + "config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a>, <a + href= + "config.html#ENABLE-REMOTE-HTTP-TOGGLE">enable-remote-http-toggle</a>, + and <a href= + "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a>. If + you use or want these, you will need to explicitly enable them, + and be aware of the security issues involved. + </p> + </li> + </ul> + </div> + </div> + <div class="NAVFOOTER"> + <hr width="100%" class="c1"> + <table summary="Footer navigation table" width="100%" border="0" + cellpadding="0" cellspacing="0"> + <tr> + <td width="33%" align="left" valign="top"> + <a href="installation.html" accesskey="P">Prev</a> + </td> + <td width="34%" align="center" valign="top"> + <a href="index.html" accesskey="H">Home</a> + </td> + <td width="33%" align="right" valign="top"> + <a href="quickstart.html" accesskey="N">Next</a> + </td> + </tr> + <tr> + <td width="33%" align="left" valign="top"> + Installation + </td> + <td width="34%" align="center" valign="top"> + + </td> + <td width="33%" align="right" valign="top"> + Quickstart to Using Privoxy + </td> + </tr> + </table> + </div> + </body> +</html> +