-developer-manual
-faq
-user-manual
-man-page
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Coding Guidelines</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy Developer Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Documentation Guidelines"
+HREF="documentation.html"><LINK
+REL="NEXT"
+TITLE="Version Control Guidelines"
+HREF="cvs.html"><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
+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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="cvs.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="CODING"
+>5. Coding Guidelines</A
+></H1
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="S1"
+>5.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"
+>5.2. Using Comments</A
+></H2
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S3"
+>5.2.1. Comment, Comment, Comment</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>Comment as much as possible without commenting the obvious.
+ For example do not comment "aVariable is equal to bVariable".
+ Instead explain why aVariable should be equal to the bVariable.
+ 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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>/* if page size greater than 1k ... */
+if ( PageLength() > 1024 )
+{
+ ... "block" the page up ...
+}
+
+/* if page size is small, send it in blocks */
+if ( PageLength() > 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"
+>5.2.2. Use blocks for comments</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>/*********************************************************************
+ * This will stand out clearly in your code!
+ *********************************************************************/
+if ( thisVariable == thatVariable )
+{
+ DoSomethingVeryImportant();
+}
+
+
+/* unfortunately, this may not */
+if ( thisVariable == thatVariable )
+{
+ DoSomethingVeryImportant();
+}
+
+
+if ( thisVariable == thatVariable ) /* this may not either */
+{
+ DoSomethingVeryImportant();
+}</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Exception:</I
+></P
+><P
+>If you are trying to add a small logic comment and do not
+ wish to "disrubt" 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"
+>5.2.3. Keep Comments on their own line</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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.
+ *********************************************************************/
+if ( thisVariable == thatVariable )
+{
+ DoSomethingVeryImportant();
+}
+
+if ( thisVariable == thatVariable ) /*can you see me?*/
+{
+ DoSomethingVeryImportant(); /*not easily*/
+}
+
+
+/*********************************************************************
+ * But, the encouraged exceptions:
+ *********************************************************************/
+int urls_read = 0; /* # of urls read + rejected */
+int urls_rejected = 0; /* # of urls rejected */
+
+if ( 1 == X )
+{
+ DoSomethingVeryImportant();
+}
+
+
+short DoSomethingVeryImportant(
+ short firstparam, /* represents something */
+ short nextparam /* represents something else */ )
+{
+ ...code here...
+
+} /* -END- DoSomethingVeryImportant */</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S6"
+>5.2.4. Comment each logical step</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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"
+>5.2.5. Comment All Functions Thoroughly</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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"
+>5.2.6. Comment at the end of braces if the
+ content is more than one screen length</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>if ( 1 == X )
+{
+ DoSomethingVeryImportant();
+ ...some long list of commands...
+} /* -END- if x is 1 */
+
+or:
+
+if ( 1 == X )
+{
+ DoSomethingVeryImportant();
+ ...some long list of commands...
+} /* -END- if ( 1 == X ) */</PRE
+></TD
+></TR
+></TABLE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="S9"
+>5.3. Naming Conventions</A
+></H2
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S10"
+>5.3.1. Variable Names</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>Use all lowercase, and seperate 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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int ms_iis5_hack = 0;</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+></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"
+>5.3.2. Function Names</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>Use all lowercase, and seperate 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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+></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"
+>5.3.3. Header file prototypes</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+>
+<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"
+>5.3.4. Enumerations, and #defines</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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"
+>5.3.5. Constants</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>#define USE_IMAGE_LIST 1</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+></P
+><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 UseImageList 1</PRE
+></TD
+></TR
+></TABLE
+></P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="S15"
+>5.4. Using Space</A
+></H2
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S16"
+>5.4.1. Put braces on a line by themselves.</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>if ( this == that )
+{
+ ...
+}</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+></P
+><P
+>if ( this == that ) { ... }</P
+><P
+>or</P
+><P
+>if ( this == that ) { ... }</P
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> In the special case that the if-statement is
+ inside a loop, and it is trivial, i.e. it tests for a
+ condidtion 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
+><I
+CLASS="EMPHASIS"
+>Status:</I
+> developer-discrection.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Example exception:</I
+></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"
+>5.4.2. ALL control statements should have a
+ block</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>if ( this == that )
+{
+ DoSomething();
+ DoSomethingElse();
+}</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+></P
+><P
+>if ( this == that ) DoSomething(); DoSomethingElse();</P
+><P
+>or</P
+><P
+>if ( this == that ) DoSomething();</P
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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"
+>5.4.3. Do not belabor/blow-up boolean
+ expressions</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>structure->flag = ( condition );</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+></P
+><P
+>if ( condition ) { structure->flag = 1; } else {
+ structure->flag = 0; }</P
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> The former is readable and consice. 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"
+>5.4.4. Use white space freely because it is
+ free</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>Make it readable. The notable exception to using white space
+ freely is listed in the next guideline.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int firstValue = 0;
+int someValue = 0;
+int anotherValue = 0;
+int thisVariable = 0;
+
+if ( thisVariable == thatVariable )
+
+firstValue = oldValue + ( ( someValue - anotherValue ) - whatever )</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S20"
+>5.4.5. Don't use white space around structure
+ operators</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>aStruct->aMember;
+aStruct.aMember;
+FunctionName();</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+> aStruct -> aMember; aStruct . aMember;
+ FunctionName ();</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S21"
+>5.4.6. Make the last brace of a function stand
+ out</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int function1( ... )
+{
+ ...code...
+ return( retCode );
+
+} /* -END- function1 */
+
+
+int function2( ... )
+{
+} /* -END- function2 */</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+></P
+><P
+>int function1( ... ) { ...code... return( retCode ); } int
+ function2( ... ) { }</P
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> Use 1 blank line before the closing brace and 2
+ lines afterwards. This makes the end of function standout to
+ the most casual viewer. Although function comments help
+ seperate 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
+><I
+CLASS="EMPHASIS"
+>Status:</I
+> developer-discrection on the number of blank
+ lines. Enforced is the end of function comments.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S22"
+>5.4.7. Use 3 character indentions</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>static const char * const url_code_map[256] =
+{
+ NULL, ...
+};
+
+
+int function1( ... )
+{
+ if ( 1 )
+ {
+ return( ALWAYS_TRUE );
+ }
+ else
+ {
+ return( HOW_DID_YOU_GET_HERE );
+ }
+
+ return( NEVER_GETS_HERE );
+
+}</PRE
+></TD
+></TR
+></TABLE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="S23"
+>5.5. Initializing</A
+></H2
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S24"
+>5.5.1. Initialize all variables</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>short anShort = 0;
+float aFloat = 0;
+struct *ptr = NULL;</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> It is much easier to debug a SIGSEGV if the
+ message says you are trying to access memory address 00000000
+ and not 129FA012; or arrayPtr[20] causes a SIGSEV vs.
+ arrayPtr[0].</P
+><P
+><I
+CLASS="EMPHASIS"
+>Status:</I
+> developer-discrection 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"
+>5.6. Functions</A
+></H2
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S26"
+>5.6.1. Name functions that return a boolean as a
+ question.</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>Value should be phrased as a question that would logically
+ be answered as a true or false statement</P
+><P
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>ShouldWeBlockThis();
+ContainsAnImage();
+IsWebPageBlank();</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S27"
+>5.6.2. Always specify a return type for a
+ function.</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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"
+>5.6.3. Minimize function calls when iterating by
+ using variables</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>for ( size_t cnt = 0; cnt < blockListLength(); cnt ++ )
+{
+ ....
+}</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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 blockListLength() 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 blockListLength() 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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>size_t len = blockListLength();
+
+for ( size_t cnt = 0; cnt < len; cnt ++ )
+{
+ ....
+}</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Exceptions:</I
+> if the value of blockListLength() *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"
+>5.6.4. Pass and Return by Const Reference</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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"
+>5.6.5. Pass and Return by Value</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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"
+>5.6.6. Names of include files</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Exception:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> Please! do not add "-I." to the Makefile
+ without a _very_ good reason. This duplicates the #include
+ "file.h" behaviour.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S32"
+>5.6.7. Provide multiple inclusion
+ protection</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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"
+>5.6.8. Use `extern "C"` when appropriate</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>#ifdef __cplusplus
+extern "C"
+{
+#endif /* def __cplusplus */
+
+... function definitions here ...
+
+#ifdef __cplusplus
+}
+#endif /* def __cplusplus */</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S34"
+>5.6.9. Where Possible, Use Forward Struct
+ Declaration Instead of Includes</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>Useful in headers that include pointers to other struct's.
+ Modifications to excess header files may cause needless
+ compiles.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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 unneccessary.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Status:</I
+> Use with discrection.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="S35"
+>5.7. General Coding Practices</A
+></H2
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S36"
+>5.7.1. Turn on warnings</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation</I
+></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"
+>5.7.2. Provide a default case for all switch
+ statements</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>switch( hash_string( cmd ) )
+{
+ case hash_actions_file :
+ ... code ...
+ break;
+
+ case hash_confdir :
+ ... code ...
+ break;
+
+ default :
+ log_error( ... );
+ ... anomly code goes here ...
+ continue; / break; / exit( 1 ); / etc ...
+
+} /* end switch( hash_string( cmd ) ) */</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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
+><I
+CLASS="EMPHASIS"
+>Another Note:</I
+> This is not so much a readability issue
+ as a robust programming issue. The "anomly code goes here" may
+ be no more than a print to the STDERR stream (as in
+ load_config). Or it may really be an ABEND condition.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Status:</I
+> Programmer discretion is advised.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S38"
+>5.7.3. Try to avoid falling through cases in a
+ switch statement.</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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"
+>5.7.4. Use 'long' or 'short' Instead of
+ 'int'</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Status:</I
+> 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"
+>5.7.5. Don't mix size_t and other types</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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. Try to avoid using size_t if
+ you can.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S41"
+>5.7.6. Declare each variable and struct on its
+ own line.</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>It can be tempting to declare a series of variables all on
+ one line. Don't.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Instead of:</I
+></P
+><P
+>long a, b, c;</P
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+> - 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
+><I
+CLASS="EMPHASIS"
+>Exceptions:</I
+> when you want to declare a bunch of loop
+ variables or other trivial variables; feel free to declare them
+ on 1 line. You should, although, provide a good comment on
+ their functions.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Status:</I
+> developer-discrection.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S42"
+>5.7.7. Use malloc/zalloc sparingly</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>Create a local stuct (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
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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 definately be allocated via `malloc'.</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="S43"
+>5.7.8. The Programmer Who Uses 'malloc' is
+ Responsible for Ensuring 'free'</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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/destuctor type function to accomodate this.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Example:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Exceptions:</I
+></P
+><P
+>The developer cannot be expected to provide `free'ing
+ functions for C run-time library functions ... such as
+ `strdup'.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Status:</I
+> developer-discrection. 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"
+>5.7.9. Add loaders to the `file_list' structure
+ and in order</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></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
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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"
+>5.7.10. "Uncertain" new code and/or changes to
+ exitinst code, use FIXME</A
+></H3
+><P
+><I
+CLASS="EMPHASIS"
+>Explanation:</I
+></P
+><P
+>If you have enough confidence in new code or confidence in
+ your changes, but are not *quite* sure of the reprocussions,
+ add this:</P
+><P
+>/* FIXME: this code has a logic error on platform XYZ, *
+ attempthing 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
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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 conversly exclude from the
+ project).</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="S46"
+>5.8. Addendum: Template for files and function
+ comment blocks:</A
+></H2
+><P
+><I
+CLASS="EMPHASIS"
+>Example for file comments:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.25 2002/04/06 05:07:28 hal9 Exp $";
+/*********************************************************************
+ *
+ * File : $Source$
+ *
+ * Purpose : (Fill me in with a good description!)
+ *
+ * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * Privoxy team. http://www.privoxy.org/
+ *
+ * Based on the Internet Junkbuster originally written
+ * by and Copyright (C) 1997 Anonymous Coders and
+ * Junkbusters Corporation. http://www.junkbusters.com
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log$
+ *
+ *********************************************************************/
+
+
+#include "config.h"
+
+ ...necessary include files for us to do our work...
+
+const char FILENAME_h_rcs[] = FILENAME_H_VERSION;</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> The formfeed character that is present right
+ after the comment flower box is handy for (X|GNU)Emacs users to
+ skip the verbige and get to the heart of the code (via
+ `forward-page' and `backward-page'). Please include it if you
+ can.</P
+><P
+><I
+CLASS="EMPHASIS"
+>Example for file header comments:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>#ifndef _FILENAME_H
+#define _FILENAME_H
+#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.25 2002/04/06 05:07:28 hal9 Exp $"
+/*********************************************************************
+ *
+ * File : $Source$
+ *
+ * Purpose : (Fill me in with a good description!)
+ *
+ * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * Privoxy team. http://www.privoxy.org/
+ *
+ * Based on the Internet Junkbuster originally written
+ * by and Copyright (C) 1997 Anonymous Coders and
+ * Junkbusters Corporation. http://www.junkbusters.com
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log$
+ *
+ *********************************************************************/
+
+
+#include "project.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ ... function headers here ...
+
+
+/* Revision control strings from this header and associated .c file */
+extern const char FILENAME_rcs[];
+extern const char FILENAME_h_rcs[];
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* ndef _FILENAME_H */
+
+/*
+ Local Variables:
+ tab-width: 3
+ end:
+*/</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Example for function comments:</I
+></P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>/*********************************************************************
+ *
+ * Function : FUNCTION_NAME
+ *
+ * Description : (Fill me in with a good description!)
+ *
+ * parameters :
+ * 1 : param1 = pointer to an important thing
+ * 2 : x = pointer to something else
+ *
+ * Returns : 0 => Ok, everything else is an error.
+ *
+ *********************************************************************/
+int FUNCTION_NAME( void *param1, const char *x )
+{
+ ...
+ return( 0 );
+
+}</PRE
+></TD
+></TR
+></TABLE
+><P
+><I
+CLASS="EMPHASIS"
+>Note:</I
+> 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
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="documentation.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="cvs.html"
+>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"
+>Version Control Guidelines</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Contacting the developers, Bug Reporting and Feature Requests</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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="Copyright and History"
+HREF="copyright.html"><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
+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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="copyright.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="CONTACT"
+>9. Contacting the developers, Bug Reporting and Feature Requests</A
+></H1
+><P
+> We value your feedback. However, to provide you with the best support, please
+ note:
+
+ <P
+></P
+><UL
+><LI
+><P
+CLASS="LITERALLAYOUT"
+> Use the Sourceforge Support Forum to get help:<br>
+ <br>
+ <A
+HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118"
+TARGET="_top"
+>http://sourceforge.net/tracker/?group_id=11118&atid=211118</A
+><br>
+ </P
+></LI
+><LI
+><P
+CLASS="LITERALLAYOUT"
+> Submit bugs only through our Sourceforge Bug Forum:<br>
+ <br>
+ <A
+HREF="http://sourceforge.net/tracker/?group_id=11118&atid=111118"
+TARGET="_top"
+>http://sourceforge.net/tracker/?group_id=11118&atid=111118</A
+>. <br>
+ </P
+><P
+> Make sure that the bug has not already been submitted. Please try to
+ verify that it is a <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> bug, and not a
+ browser or site bug first. If you are using your own custom configuration,
+ please try the stock configs to see if the problem is a configuration
+ related bug. And if not using the latest development snapshot, please try
+ the latest one. Or even better, CVS sources. Please be sure to include the
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>/<SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>
+ version, platform, browser, any pertinent log data, any other relevant
+ details (please be specific) and, if possible, some way to reproduce the
+ bug.
+ </P
+></LI
+><LI
+><P
+CLASS="LITERALLAYOUT"
+> Submit feature requests only through our Sourceforge feature request <br>
+ forum:<br>
+ <br>
+ <A
+HREF="http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse"
+TARGET="_top"
+>http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse</A
+>.<br>
+ </P
+></LI
+><LI
+><P
+CLASS="LITERALLAYOUT"
+>We will soon have an automated way to submit advertisements, incorrectly<br>
+blocked images, popups and the like. Check back.<br>
+ </P
+></LI
+><LI
+><P
+CLASS="LITERALLAYOUT"
+> For any other issues, feel free to use the mailing lists:<br>
+ <br>
+ <A
+HREF="http://sourceforge.net/mail/?group_id=11118"
+TARGET="_top"
+>http://sourceforge.net/mail/?group_id=11118</A
+>.<br>
+ </P
+><P
+> Anyone interested in actively participating in development and related
+ discussions can also join the appropriate mailing list. Archives are
+ available too.
+ </P
+></LI
+></UL
+></P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="newrelease.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="copyright.html"
+>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"
+>Copyright and History</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Copyright and History</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="seealso.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="COPYRIGHT"
+>10. Copyright and History</A
+></H1
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN930"
+>10.1. Copyright</A
+></H2
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is free software; you can
+ redistribute it and/or modify it under the terms of the GNU General Public
+
+ License as published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.</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 GNU General Public License for
+ more details, which is available from the Free Software Foundation, Inc, 59
+ Temple Place - Suite 330, Boston, MA 02111-1307, USA.</P
+><P
+> You should have received a copy of the <A
+HREF="http://www.gnu.org/copyleft/gpl.html"
+TARGET="_top"
+>GNU General Public License</A
+>
+ along with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN937"
+>10.2. History</A
+></H2
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is evolved, and derived from,
+ <SPAN
+CLASS="APPLICATION"
+>the Internet Junkbuster</SPAN
+>, with many
+ improvments and enhancements over the original.</P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> was originally written by Anonymous
+ Coders and <A
+HREF="http://www.junkbusters.com"
+TARGET="_top"
+>Junkbuster's
+ Corporation</A
+>, and was released as free open-source software under the
+ GNU GPL. <A
+HREF="http://www.waldherr.org/junkbuster/"
+TARGET="_top"
+>Stefan
+ Waldherr</A
+> made many improvements, and started the <A
+HREF="http://sourceforge.net/projects/ijbswa/"
+TARGET="_top"
+>SourceForge project
+ Privoxy</A
+> to rekindle development. There are now several active
+ developers contributing. The last stable release of
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> was v2.0.2, which has now
+ grown whiskers ;-).</P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="contact.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="seealso.html"
+>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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Version Control Guidelines</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy Developer Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Coding Guidelines"
+HREF="coding.html"><LINK
+REL="NEXT"
+TITLE="Testing Guidelines"
+HREF="testing.html"><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
+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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="testing.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="CVS"
+>6. Version Control Guidelines</A
+></H1
+><P
+>To be filled. note on cvs comments. Don't only comment what you did,
+ but also why you did it!</P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="coding.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="testing.html"
+>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"
+>Testing Guidelines</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Documentation Guidelines</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy Developer Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Quickstart to Privoxy Development"
+HREF="quickstart.html"><LINK
+REL="NEXT"
+TITLE="Coding Guidelines"
+HREF="coding.html"><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
+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="quickstart.html"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="coding.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="DOCUMENTATION"
+>4. Documentation Guidelines</A
+></H1
+><P
+> All formal documents are maintained in docbook SGML and located in the
+ <TT
+CLASS="COMPUTEROUTPUT"
+>doc/source</TT
+> directory. You will need
+ <A
+HREF="http://www.docbook.org"
+TARGET="_top"
+>docbook</A
+> and the docbook
+ 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
+>, is also now maintained
+ as SGML. The <I
+CLASS="CITETITLE"
+>README</I
+> in the top-level source
+ directory is a generated file. <I
+CLASS="EMPHASIS"
+>DO NOT edit this
+ directly</I
+>. Edit the SGML source!
+ </P
+><P
+> Other, less formal documents (e.g. AUTHORS, LICENSE) are maintained as
+ plain text files in the toplevel source directory. At least for the
+ time being.
+ </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. Or HTML versions can be downloaded from the <A
+HREF="http://www.privoxy.org"
+TARGET="_top"
+>www.privoxy.org</A
+> website, which
+ should be fairly current. (This is only a temporary solution.)
+ </P
+><P
+> Formal documents are built with the Makefile targets of
+ <TT
+CLASS="COMPUTEROUTPUT"
+>make dok</TT
+>, or alternately
+ <TT
+CLASS="COMPUTEROUTPUT"
+>make redhat-dok</TT
+>. If you have problems,
+ try both. The build process uses the document SGML sources in
+ <TT
+CLASS="COMPUTEROUTPUT"
+>doc/source</TT
+> to update all text files in
+ <TT
+CLASS="COMPUTEROUTPUT"
+>doc/text</TT
+> and to update all HTML
+ documents in <TT
+CLASS="COMPUTEROUTPUT"
+>doc/webserver</TT
+>.
+ </P
+><P
+> Documentation writers should please make sure documents build
+ successfully before committing to CVS.
+ </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 <TT
+CLASS="COMPUTEROUTPUT"
+>make
+ dok</TT
+> (or alternately <TT
+CLASS="COMPUTEROUTPUT"
+>make
+ redhat-dok</TT
+>).
+ </P
+></LI
+><LI
+><P
+> Run <TT
+CLASS="COMPUTEROUTPUT"
+>make webserver</TT
+> which copies all
+ files from <TT
+CLASS="COMPUTEROUTPUT"
+>doc/webserver</TT
+> to the
+ sourceforge webserver via scp.
+ </P
+></LI
+></OL
+>
+ </P
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="SGML"
+>4.1. Quickstart to Docbook and SGML</A
+></H2
+><P
+> If you are not familiar with SGML, it is a markup language similar to HTML.
+ In fact, HTML is an SGML application. Both use <SPAN
+CLASS="QUOTE"
+>"tags"</SPAN
+>
+ to format text and other content. SGML tags are 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 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
+> <I
+CLASS="EMPHASIS"
+><para></para></I
+>, paragraph delimiter. Most
+ text needs to be within paragraph elements.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><emphasis></emphasis></I
+>, stylesheets make this
+ italics.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><filename></filename></I
+>, files and directories.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><command></command></I
+>, command examples.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><literallayout></literllayout></I
+>, like
+ <TT
+CLASS="LITERAL"
+><pre></TT
+>, more or less.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><itemizedlist></itemizdelist></I
+>, list with bullets.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><listitem></listitem></I
+>, member of the above.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><screen></screen></I
+>, screen output, implies
+ <TT
+CLASS="LITERAL"
+><literallayout></TT
+>.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><ulink url="example.com"></ulink></I
+>, like
+ HTML <TT
+CLASS="LITERAL"
+><a></TT
+> tag.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+><quote></quote></I
+>, for, doh, quoting text.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+> Look at any of the existing docs for examples of all these and more.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="DOCSTYLE"
+>4.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 block of text 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 like:
+ <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.
+ </P
+></LI
+><LI
+><P
+> We have an international audience. Refrain from slang, or English
+ idiosyncrasies (too many to list :).
+ </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 lenghty URLs for
+ instance.
+ </P
+></LI
+><LI
+><P
+> Our documents are available in differing formats. Right now, they
+ are just plain text, and HTML, but PDF, and others is 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="AEN173"
+>4.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
+ <I
+CLASS="EMPHASIS"
+>generic</I
+>. 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. A sampling of custom entities are
+ listed below. See any of the main docs for examples.
+ </P
+><P
+> <P
+></P
+><UL
+><LI
+><P
+> Re-cyclable <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
+> <I
+CLASS="EMPHASIS"
+>p-version</I
+>: the <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ version string, e.g. <SPAN
+CLASS="QUOTE"
+>"2.9.13"</SPAN
+>.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>p-status</I
+>: the project status, either
+ <SPAN
+CLASS="QUOTE"
+>"ALPHA"</SPAN
+>, <SPAN
+CLASS="QUOTE"
+>"BETA"</SPAN
+>, or <SPAN
+CLASS="QUOTE"
+>"STABLE"</SPAN
+>.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>p-not-stable</I
+>: use to conditionally include
+ text in <SPAN
+CLASS="QUOTE"
+>"not stable"</SPAN
+> releases (e.g. <SPAN
+CLASS="QUOTE"
+>"BETA"</SPAN
+>).
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>p-stable</I
+>: just the opposite.
+ </TD
+></TR
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>p-text</I
+>: 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
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="quickstart.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="coding.html"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Quickstart to Privoxy Development</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+> </TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Coding Guidelines</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Privoxy Developer Manual</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="NEXT"
+TITLE="Introduction"
+HREF="introduction.html"><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 Developer Manual</A
+></H1
+><DIV
+CLASS="AUTHORGROUP"
+><A
+NAME="AEN5"
+></A
+><H3
+CLASS="AUTHOR"
+><A
+NAME="AEN6"
+></A
+></H3
+><DIV
+CLASS="AFFILIATION"
+><SPAN
+CLASS="ORGNAME"
+>By: Privoxy Developers<BR></SPAN
+></DIV
+></DIV
+><P
+CLASS="PUBDATE"
+>$Id: developer-manual.sgml,v 1.25 2002/04/06 05:07:28 hal9 Exp $<BR></P
+><DIV
+><DIV
+CLASS="ABSTRACT"
+><A
+NAME="AEN9"
+></A
+><P
+></P
+><P
+>
+ </P
+><P
+> The developer manual gives the users information on how to help the developer
+ team. It provides guidance on coding, testing, documentation and other
+ issues.
+ </P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is a web proxy with advanced filtering
+ capabilities for protecting privacy, filtering web page content, managing
+ cookies, controlling access, and removing ads, banners, pop-ups and other
+ obnoxious Internet junk. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> has a very
+ flexible configuration and can be customized to suit individual needs and
+ tastes. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> has application for both
+ stand-alone systems and multi-user networks.</P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is based on the code of the
+ <SPAN
+CLASS="APPLICATION"
+>Internet Junkbuster</SPAN
+> (tm).
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> was originally written by JunkBusters
+ Corporation, and was released as free open-source software under the GNU GPL.
+ Stefan Waldherr made many improvements, and started the SourceForge project
+ to continue development.</P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> continues the
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> tradition, but adds many
+ refinements, enhancements and new features.</P
+><P
+> 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 the Contact section 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
+><A
+HREF="index.html#INTRO"
+></A
+></DT
+><DT
+>1. <A
+HREF="introduction.html"
+>Introduction</A
+></DT
+><DT
+>3. <A
+HREF="quickstart.html"
+>Quickstart to Privoxy Development</A
+></DT
+><DT
+>4. <A
+HREF="documentation.html"
+>Documentation Guidelines</A
+></DT
+><DD
+><DL
+><DT
+>4.1. <A
+HREF="documentation.html#SGML"
+>Quickstart to Docbook and SGML</A
+></DT
+><DD
+><DL
+><DT
+>1<A
+HREF="documentation.html#AEN113"
+></A
+></DT
+></DL
+></DD
+><DT
+>4.2. <A
+HREF="documentation.html#DOCSTYLE"
+><SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> Documentation Style</A
+></DT
+><DT
+>4.3. <A
+HREF="documentation.html#AEN173"
+>Privoxy Custom Entities</A
+></DT
+></DL
+></DD
+><DT
+>5. <A
+HREF="coding.html"
+>Coding Guidelines</A
+></DT
+><DD
+><DL
+><DT
+>5.1. <A
+HREF="coding.html#S1"
+>Introduction</A
+></DT
+><DT
+>5.2. <A
+HREF="coding.html#S2"
+>Using Comments</A
+></DT
+><DD
+><DL
+><DT
+>5.2.1. <A
+HREF="coding.html#S3"
+>Comment, Comment, Comment</A
+></DT
+><DT
+>5.2.2. <A
+HREF="coding.html#S4"
+>Use blocks for comments</A
+></DT
+><DT
+>5.2.3. <A
+HREF="coding.html#S5"
+>Keep Comments on their own line</A
+></DT
+><DT
+>5.2.4. <A
+HREF="coding.html#S6"
+>Comment each logical step</A
+></DT
+><DT
+>5.2.5. <A
+HREF="coding.html#S7"
+>Comment All Functions Thoroughly</A
+></DT
+><DT
+>5.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
+>5.3. <A
+HREF="coding.html#S9"
+>Naming Conventions</A
+></DT
+><DD
+><DL
+><DT
+>5.3.1. <A
+HREF="coding.html#S10"
+>Variable Names</A
+></DT
+><DT
+>5.3.2. <A
+HREF="coding.html#S11"
+>Function Names</A
+></DT
+><DT
+>5.3.3. <A
+HREF="coding.html#S12"
+>Header file prototypes</A
+></DT
+><DT
+>5.3.4. <A
+HREF="coding.html#S13"
+>Enumerations, and #defines</A
+></DT
+><DT
+>5.3.5. <A
+HREF="coding.html#S14"
+>Constants</A
+></DT
+></DL
+></DD
+><DT
+>5.4. <A
+HREF="coding.html#S15"
+>Using Space</A
+></DT
+><DD
+><DL
+><DT
+>5.4.1. <A
+HREF="coding.html#S16"
+>Put braces on a line by themselves.</A
+></DT
+><DT
+>5.4.2. <A
+HREF="coding.html#S17"
+>ALL control statements should have a
+ block</A
+></DT
+><DT
+>5.4.3. <A
+HREF="coding.html#S18"
+>Do not belabor/blow-up boolean
+ expressions</A
+></DT
+><DT
+>5.4.4. <A
+HREF="coding.html#S19"
+>Use white space freely because it is
+ free</A
+></DT
+><DT
+>5.4.5. <A
+HREF="coding.html#S20"
+>Don't use white space around structure
+ operators</A
+></DT
+><DT
+>5.4.6. <A
+HREF="coding.html#S21"
+>Make the last brace of a function stand
+ out</A
+></DT
+><DT
+>5.4.7. <A
+HREF="coding.html#S22"
+>Use 3 character indentions</A
+></DT
+></DL
+></DD
+><DT
+>5.5. <A
+HREF="coding.html#S23"
+>Initializing</A
+></DT
+><DD
+><DL
+><DT
+>5.5.1. <A
+HREF="coding.html#S24"
+>Initialize all variables</A
+></DT
+></DL
+></DD
+><DT
+>5.6. <A
+HREF="coding.html#S25"
+>Functions</A
+></DT
+><DD
+><DL
+><DT
+>5.6.1. <A
+HREF="coding.html#S26"
+>Name functions that return a boolean as a
+ question.</A
+></DT
+><DT
+>5.6.2. <A
+HREF="coding.html#S27"
+>Always specify a return type for a
+ function.</A
+></DT
+><DT
+>5.6.3. <A
+HREF="coding.html#S28"
+>Minimize function calls when iterating by
+ using variables</A
+></DT
+><DT
+>5.6.4. <A
+HREF="coding.html#S29"
+>Pass and Return by Const Reference</A
+></DT
+><DT
+>5.6.5. <A
+HREF="coding.html#S30"
+>Pass and Return by Value</A
+></DT
+><DT
+>5.6.6. <A
+HREF="coding.html#S31"
+>Names of include files</A
+></DT
+><DT
+>5.6.7. <A
+HREF="coding.html#S32"
+>Provide multiple inclusion
+ protection</A
+></DT
+><DT
+>5.6.8. <A
+HREF="coding.html#S33"
+>Use `extern "C"` when appropriate</A
+></DT
+><DT
+>5.6.9. <A
+HREF="coding.html#S34"
+>Where Possible, Use Forward Struct
+ Declaration Instead of Includes</A
+></DT
+></DL
+></DD
+><DT
+>5.7. <A
+HREF="coding.html#S35"
+>General Coding Practices</A
+></DT
+><DD
+><DL
+><DT
+>5.7.1. <A
+HREF="coding.html#S36"
+>Turn on warnings</A
+></DT
+><DT
+>5.7.2. <A
+HREF="coding.html#S37"
+>Provide a default case for all switch
+ statements</A
+></DT
+><DT
+>5.7.3. <A
+HREF="coding.html#S38"
+>Try to avoid falling through cases in a
+ switch statement.</A
+></DT
+><DT
+>5.7.4. <A
+HREF="coding.html#S39"
+>Use 'long' or 'short' Instead of
+ 'int'</A
+></DT
+><DT
+>5.7.5. <A
+HREF="coding.html#S40"
+>Don't mix size_t and other types</A
+></DT
+><DT
+>5.7.6. <A
+HREF="coding.html#S41"
+>Declare each variable and struct on its
+ own line.</A
+></DT
+><DT
+>5.7.7. <A
+HREF="coding.html#S42"
+>Use malloc/zalloc sparingly</A
+></DT
+><DT
+>5.7.8. <A
+HREF="coding.html#S43"
+>The Programmer Who Uses 'malloc' is
+ Responsible for Ensuring 'free'</A
+></DT
+><DT
+>5.7.9. <A
+HREF="coding.html#S44"
+>Add loaders to the `file_list' structure
+ and in order</A
+></DT
+><DT
+>5.7.10. <A
+HREF="coding.html#S45"
+>"Uncertain" new code and/or changes to
+ exitinst code, use FIXME</A
+></DT
+></DL
+></DD
+><DT
+>5.8. <A
+HREF="coding.html#S46"
+>Addendum: Template for files and function
+ comment blocks:</A
+></DT
+></DL
+></DD
+><DT
+>6. <A
+HREF="cvs.html"
+>Version Control Guidelines</A
+></DT
+><DT
+>7. <A
+HREF="testing.html"
+>Testing Guidelines</A
+></DT
+><DD
+><DL
+><DT
+>7.1. <A
+HREF="testing.html#TESTING-PLAN"
+>Testplan for releases</A
+></DT
+><DT
+>7.2. <A
+HREF="testing.html#TESTING-REPORT"
+>Test reports</A
+></DT
+></DL
+></DD
+><DT
+>8. <A
+HREF="newrelease.html"
+>Releasing a new version</A
+></DT
+><DD
+><DL
+><DT
+>8.1. <A
+HREF="newrelease.html#BEFORERELEASE"
+>Before the Release</A
+></DT
+><DT
+>8.2. <A
+HREF="newrelease.html#NEWRELEASE-WEB"
+>Update the webserver</A
+></DT
+><DT
+>8.3. <A
+HREF="newrelease.html#NEWRELEASE-RPM"
+>SuSE or Red Hat</A
+></DT
+><DT
+>8.4. <A
+HREF="newrelease.html#NEWRELEASE-OS2"
+>OS/2</A
+></DT
+><DT
+>8.5. <A
+HREF="newrelease.html#NEWRELEASE-SOLARIS"
+>Solaris</A
+></DT
+><DT
+>8.6. <A
+HREF="newrelease.html#NEWRELEASE-WINDOWS"
+>Windows</A
+></DT
+><DT
+>8.7. <A
+HREF="newrelease.html#NEWRELEASE-DEBIAN"
+>Debian</A
+></DT
+><DT
+>8.8. <A
+HREF="newrelease.html#NEWRELEASE-MACOSX"
+>Mac OSX</A
+></DT
+><DT
+>8.9. <A
+HREF="newrelease.html#NEWRELEASE-FREEBSD"
+>FreeBSD</A
+></DT
+><DT
+>8.10. <A
+HREF="newrelease.html#NEWRELEASE-TARBALL"
+>Tarball</A
+></DT
+><DT
+>8.11. <A
+HREF="newrelease.html#NEWRELEASE-HPUX"
+>HP-UX 11</A
+></DT
+><DT
+>8.12. <A
+HREF="newrelease.html#NEWRELEASE-AMIGA"
+>Amiga OS</A
+></DT
+><DT
+>8.13. <A
+HREF="newrelease.html#NEWRELEASE-AIX"
+>AIX</A
+></DT
+></DL
+></DD
+><DT
+>9. <A
+HREF="contact.html"
+>Contacting the developers, Bug Reporting and Feature Requests</A
+></DT
+><DT
+>10. <A
+HREF="copyright.html"
+>Copyright and History</A
+></DT
+><DD
+><DL
+><DT
+>10.1. <A
+HREF="copyright.html#AEN930"
+>Copyright</A
+></DT
+><DT
+>10.2. <A
+HREF="copyright.html#AEN937"
+>History</A
+></DT
+></DL
+></DD
+><DT
+>11. <A
+HREF="seealso.html"
+>See also</A
+></DT
+></DL
+></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="INTRO"
+></A
+></H1
+><P
+> </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><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"
+>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
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Introduction</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy Developer Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Privoxy Developer Manual"
+HREF="index.html"><LINK
+REL="NEXT"
+TITLE="Quickstart to Privoxy Development"
+HREF="quickstart.html"><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
+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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="quickstart.html"
+>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 an Open Source project
+ and licensed under the GPL. 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,
+ and porting, are all important jobs as well.
+ </P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="index.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="quickstart.html"
+>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"
+>Quickstart to Privoxy Development</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Releasing a new version</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy Developer Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Testing Guidelines"
+HREF="testing.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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="contact.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="NEWRELEASE"
+>8. Releasing a new version</A
+></H1
+><P
+> To minimize trouble with distribution contents, webpage
+ errors and the like, we strongly encourage you
+ to follow this section if you prepare a new release of
+ code or new pages on the webserver.
+ </P
+><P
+> The following programs are required to follow this process:
+ <TT
+CLASS="FILENAME"
+>ncftpput</TT
+> (ncftp), <TT
+CLASS="FILENAME"
+>scp</TT
+> (ssh),
+<TT
+CLASS="FILENAME"
+>gmake</TT
+> (GNU's version of make), autoconf, cvs, ???.
+ </P
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="BEFORERELEASE"
+>8.1. Before the Release</A
+></H2
+><P
+> The following <I
+CLASS="EMPHASIS"
+>must be done by one of the
+ developers</I
+> 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.
+ </P
+></LI
+><LI
+><P
+> Increment the version number in <TT
+CLASS="FILENAME"
+>configure.in</TT
+> in
+ CVS. Also, the RPM release number in
+ <TT
+CLASS="FILENAME"
+>configure.in</TT
+>. Do NOT touch version information
+ after export from CVS. <I
+CLASS="EMPHASIS"
+>All packages</I
+> will use the
+ version and release data from <TT
+CLASS="FILENAME"
+>configure.in</TT
+>.
+ Local files should not be changed, except prior to a CVS commit!!!
+ This way we are all on the same page!
+ </P
+></LI
+><LI
+><P
+> If the default actionsfile has changed since last release,
+ bump up its version info 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
+> Tag all files in CVS with the version number with
+ <SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>cvs tag v_X_Y_Z</B
+>"</SPAN
+> (where X = major, Y
+ = minor, Z = point). Don't use vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work)
+ etc.
+ </P
+></LI
+><LI
+><P
+> The first package uploaded should be the official
+ <SPAN
+CLASS="QUOTE"
+>"tarball"</SPAN
+> release. This is built with the
+ <SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>make tarball-dist</B
+>"</SPAN
+> Makefile
+ target, and then can be uploaded with
+ <SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>make tarball-upload</B
+>"</SPAN
+> (see below).
+ </P
+></LI
+></UL
+>
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-WEB"
+>8.2. Update the webserver</A
+></H2
+><P
+> All files must be group-readable and group-writable (or no one else
+ will be able to change them). To update the webserver, create any
+ pages locally in the <TT
+CLASS="FILENAME"
+>doc/webserver</TT
+> directory (or
+ create new directories under <TT
+CLASS="FILENAME"
+>doc/webserver</TT
+>), then do
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> make webserver
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> Note that <SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>make dok</B
+>"</SPAN
+>
+ (or <SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>make redhat-dok</B
+>"</SPAN
+>) creates
+ <TT
+CLASS="FILENAME"
+>doc/webserver/user-manual</TT
+>,
+ <TT
+CLASS="FILENAME"
+>doc/webserver/developer-manual</TT
+>,
+ <TT
+CLASS="FILENAME"
+>doc/webserver/faq</TT
+> and
+ <TT
+CLASS="FILENAME"
+>doc/webserver/man-page</TT
+> automatically.
+ </P
+><P
+> Please do NOT use any other means of transferring files to the
+ webserver. <SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>make webserver</B
+>"</SPAN
+> not only
+ uploads, but will make sure that the appropriate permissions are
+ preserved for shared group access.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-RPM"
+>8.3. SuSE or Red Hat</A
+></H2
+><P
+> Ensure that you have the latest code version. Hence run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> first.
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> 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 suse-dist or make redhat-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 suse-upload or make redhat-upload
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> Go to the displayed URL and release the file publicly on Sourceforge.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-OS2"
+>8.4. OS/2</A
+></H2
+><P
+> Ensure that you have the latest code version. Hence run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ cd ..
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.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,
+ <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> installExeName='privoxyos2_setup_X.Y.Z.exe'
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ Next, edit the <TT
+CLASS="FILENAME"
+>IJB.wis</TT
+> file so the release number matches
+ in the <TT
+CLASS="FILENAME"
+>PACKAGEID</TT
+> section:
+ <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
+>
+ You're now ready to build. Run:
+ <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> os2build
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ And in the <TT
+CLASS="FILENAME"
+>./files</TT
+> directory you will have the
+ WarpIN-installable executable.
+ Upload this anonymously to
+ <TT
+CLASS="FILENAME"
+>uploads.sourceforge.net/incoming</TT
+>, create a release
+ for it, and you're done.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-SOLARIS"
+>8.5. Solaris</A
+></H2
+><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). If you have
+ downloaded <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> before,
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> If not, please <A
+HREF="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE"
+TARGET="_top"
+>checkout
+ Privoxy via CVS first</A
+>. Run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> 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.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-WINDOWS"
+>8.6. Windows</A
+></H2
+><P
+> Ensure that you have the latest code version. Hence run
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> Run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> autoheader && autoconf && ./configure
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> Then do FIXME.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-DEBIAN"
+>8.7. Debian</A
+></H2
+><P
+> Ensure that you have the latest code version. Hence run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> first. Run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> autoheader && autoconf && ./configure
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> Then do FIXME.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-MACOSX"
+>8.8. Mac OSX</A
+></H2
+><P
+> Ensure that you have the latest code version. Hence run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ cd ..
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co osxsetup
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> From the osxsetup directory, run:
+ <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> 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:
+ <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
+>
+ 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.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-FREEBSD"
+>8.9. FreeBSD</A
+></H2
+><P
+> Change the version number of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> in the
+ configure.in file. Run:
+ <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> autoheader && autoconf && ./configure
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ Then ...
+ </P
+><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. If you have downloaded Privoxy
+ before,
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> If not, please <A
+HREF="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE"
+TARGET="_top"
+>checkout
+ Privoxy via CVS first</A
+>. Run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> 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.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-TARBALL"
+>8.10. Tarball</A
+></H2
+><P
+> Ensure that you have the latest code version. Hence run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> first. Run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> make clobber
+ 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
+> Goto the displayed URL and release the file publicly on Sourceforge.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-HPUX"
+>8.11. HP-UX 11</A
+></H2
+><P
+> Ensure that you have the latest code version. Hence run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> first. Run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> autoheader && autoconf && ./configure
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> Then do FIXME.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-AMIGA"
+>8.12. Amiga OS</A
+></H2
+><P
+> Ensure that you have the latest code version. Hence run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> first. Run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> autoheader && autoconf && ./configure
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> Then do FIXME.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="NEWRELEASE-AIX"
+>8.13. AIX</A
+></H2
+><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. If you have downloaded Privoxy
+ before:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd current
+ cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+ cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
+ </PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> If not, please <A
+HREF="http://www.privoxy.org/user-manual/user-manual/installation.html#INSTALLATION-SOURCE"
+TARGET="_top"
+>checkout
+ Privoxy via CVS first</A
+>. Run:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> 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.
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="testing.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="contact.html"
+>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"
+>Contacting the developers, Bug Reporting and Feature Requests</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Quickstart to Privoxy Development</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="documentation.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="QUICKSTART"
+>3. Quickstart to Privoxy Development</A
+></H1
+><P
+>You'll need an account on <A
+HREF="http://sourceforge.net"
+TARGET="_top"
+>Sourceforge</A
+> to support our development.
+Mail your ID to the list and wait until a project manager has added you.</P
+><P
+>For the time being (read, this section is under construction), please note the
+following guidelines for changing stuff in the code. If it is
+ <P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+> A bugfix / clean-up / cosmetic thing: shoot
+ </P
+></LI
+><LI
+><P
+> A new feature that can be turned off: shoot
+ </P
+></LI
+><LI
+><P
+> A clear improvement w/o side effects on other parts of the code: shoot
+ </P
+></LI
+><LI
+><P
+> A matter of taste: ask the list
+ </P
+></LI
+><LI
+><P
+> A major redesign of some part of the code: ask the list
+ </P
+></LI
+></OL
+>
+ </P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="introduction.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="documentation.html"
+>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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>See also</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy Developer Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Copyright and History"
+HREF="copyright.html"><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
+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"
+>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"
+>11. 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://sourceforge.net/projects/ijbswa"
+TARGET="_top"
+>http://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://p.p/"
+TARGET="_top"
+>http://p.p/</A
+>, access
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> from your browser. Alternately,
+ <A
+HREF="http://config.privoxy.org"
+TARGET="_top"
+>http://config.privoxy.org</A
+>
+ may work in some situations where the first does not.
+ </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
+>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+>
+ <P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <A
+HREF="http://www.waldherr.org/junkbuster/"
+TARGET="_top"
+>http://www.waldherr.org/junkbuster/</A
+>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+>
+ <P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <A
+HREF="http://privacy.net/analyze/"
+TARGET="_top"
+>http://privacy.net/analyze/</A
+>
+ </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
+>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+> </P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="copyright.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+> </TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Copyright 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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Testing Guidelines</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy Developer Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Version Control Guidelines"
+HREF="cvs.html"><LINK
+REL="NEXT"
+TITLE="Releasing a new version"
+HREF="newrelease.html"><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
+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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="newrelease.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="TESTING"
+>7. Testing Guidelines</A
+></H1
+><P
+>To be filled.</P
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="TESTING-PLAN"
+>7.1. Testplan for releases</A
+></H2
+><P
+> Explain release numbers. major, minor. developer releases. etc.
+
+<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"
+>7.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 mailinglist (we cannot keep track on issues there).
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="cvs.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="newrelease.html"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Version Control 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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Configuration</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="misc.html"
+>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="NEWCONFIG"
+>3.1. Can I use my old config files?</A
+></H3
+><P
+> There are major changes to <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>/
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> configuration from version 2.0.x to
+ 2.9.x and later. Most of the older files will not work at all. This is
+ especially true of <TT
+CLASS="FILENAME"
+>blocklist</TT
+>. If this is the case, you
+ will need to re-enter your old data into the new configuration structure.
+ This is probably also a good recommendation even if upgrading from 2.9.x to
+ 3.x since there were many minor changes along the way.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN239"
+>3.2. What is an <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> file?</A
+></H3
+><P
+> <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> files are where various actions that
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> might take, are configured.
+ Typically, you would define a set of default actions that apply
+ to all URLs, then add exceptions to these defaults.</P
+><P
+> Actions can be defined on a per site basis, or for groups of sites. Actions
+ can also be grouped together and then applied to one or more sites. There
+ are many possible actions that might apply to any given site. As an example,
+ if we are blocking cookies as one of our default
+ <SPAN
+CLASS="APPLICATION"
+>actions</SPAN
+>, but need to accept cookies from a given
+ site, we would define this in our <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> file. </P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> comes with several default
+ <SPAN
+CLASS="APPLICATION"
+>actions</SPAN
+> files, with varying degrees
+ of filtering and blocking, as starting points for your own
+ configuration (see below).</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="ACTIONSS"
+>3.3. The <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> concept confuses me. Please list
+some of these <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+>.</A
+></H3
+><P
+> These are all explained in the
+ <A
+HREF="../user-manual/configuration.html#ACTIONSFILE"
+TARGET="_top"
+>user-manual</A
+>.
+ Please refer to that.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN257"
+>3.4. How are actions files configured? What is the easiest
+way to do this?</A
+></H3
+><P
+> The easiest way to do this, is to access <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ with your web browser at <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+>,
+ and then select
+ "<A
+HREF="http://config.privoxy.org"
+TARGET="_top"
+>Edit the actions list</A
+>"
+ from the selection list. You can also do this by editing the appropriate
+ file with a text editor.</P
+><P
+> Please see the
+ <A
+HREF="../user-manual/configuration.html#ACTIONSFILE"
+TARGET="_top"
+>user-manual</A
+> for a
+ detailed explanation of these and other configuration files, and their
+ various options and syntax.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="CONFIGFILES"
+>3.5. What are the differences between
+intermediate.action, basic.action, etc.?</A
+></H3
+><P
+>Configuring <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is not easy. To help you get
+started, we provide you with three different default configurations. The
+following table shows you, which features are enabled in each configuration.
+ </P
+><P
+><DIV
+CLASS="TABLE"
+><A
+NAME="AEN270"
+></A
+><P
+><B
+>Table 1. Default Configurations</B
+></P
+><TABLE
+BORDER="1"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>Feature</TH
+><TH
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>default.action</TH
+><TH
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>basic.action</TH
+><TH
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>intermediate.action</TH
+><TH
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>advanced.action</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>ad-filtering</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>blank image</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>de-animate GIFs</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>referer forging</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>jon's +no-cookies-keep (i.e. session cookies only)</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>no-popup windows</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>fast redirects</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>hide-referrer</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>hide-useragent</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>content-modification</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>x</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>feature-x</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>feature-y</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>feature-z</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>?</TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+><TD
+WIDTH="20%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+></TR
+></TBODY
+></TABLE
+></DIV
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="BROWSECONFIG"
+>3.6. Why can I change the configuration with a
+browser? Does that not raise security issues?</A
+></H3
+><P
+>What I don't understand, is how I can browser edit the config file as a
+regular user, while 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 the config files.
+ </P
+><P
+>If you don't like this, setting <SPAN
+CLASS="QUOTE"
+>"enable-edit-actions 0"</SPAN
+> in the
+config file will disable the browser-based editor. If you're that paranoid,
+you should also consider setting <SPAN
+CLASS="QUOTE"
+>"enable-remote-toggle 0"</SPAN
+> to prevent
+browser-based enabling/disabling of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.
+ </P
+><P
+>Note that normally only local users can connect to
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>, so this is not (normally) a security
+problem.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN379"
+>3.7. What is <SPAN
+CLASS="QUOTE"
+>"default.filter"</SPAN
+>?</A
+></H3
+><P
+> The <SPAN
+CLASS="QUOTE"
+>"default.filter"</SPAN
+> file is used to <SPAN
+CLASS="QUOTE"
+>"filter"</SPAN
+> any
+ web page content. By <SPAN
+CLASS="QUOTE"
+>"filtering"</SPAN
+> we mean it can modify, remove,
+ or change <I
+CLASS="EMPHASIS"
+>anything</I
+> on the page, including HTML tags, and
+ JavaScript. Regular expressions are used to accomplish this, and operate
+ on a line by line basis. This is potentially a very powerful feature, but
+ requires some expertise. </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 see
+ some of things it can be used for.</P
+><P
+> Presently, there is no GUI editor option for this part of the configuration,
+ but you can disable/enable various sections of the included default
+ file with the <SPAN
+CLASS="QUOTE"
+>"Actions List Editor"</SPAN
+> from your browser.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN391"
+>3.8. How can I set up <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> to act as a proxy for my
+ LAN?</A
+></H3
+><P
+> By default, <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> only responds to requests
+ from localhost. To have it act as a server for a network, this needs to be
+ changed in the main config file where the <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ configuration is located. In that file is a <SPAN
+CLASS="QUOTE"
+>"listen-address"</SPAN
+>
+ option. It 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:</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
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN403"
+>3.9. Instead of ads, now I get a checkerboard pattern. I don't want to see anything.</A
+></H3
+><P
+> This is a configuration option for images that
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is stopping. You have the choice of a checkerboard
+ pattern, a transparent 1x1 GIF image (aka <SPAN
+CLASS="QUOTE"
+>"blank"</SPAN
+>), or a custom
+ URL of your choice. Note that to fit this category, the URL must match both
+ the <SPAN
+CLASS="QUOTE"
+>"+image"</SPAN
+> and <SPAN
+CLASS="QUOTE"
+>"+block"</SPAN
+> actions.</P
+><P
+> If you want to see nothing, then change the <SPAN
+CLASS="QUOTE"
+>"+image-blocker"</SPAN
+>
+ action to <SPAN
+CLASS="QUOTE"
+>"+image-blocker{blank}"</SPAN
+>. This can be done from the
+ <SPAN
+CLASS="QUOTE"
+>"Edit Actions List"</SPAN
+> selection at <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+>. Or by hand editing the appropriate
+ actions file. This will only effect what is defined as <SPAN
+CLASS="QUOTE"
+>"images"</SPAN
+>
+ though. Also, some URLs that generate the bright red <SPAN
+CLASS="QUOTE"
+>"Blocked"</SPAN
+>
+ banner, can be moved to the <SPAN
+CLASS="QUOTE"
+>"+image-blocker"</SPAN
+> section for the
+ same reason, but there are some limits and risks to this (see below).</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN418"
+>3.10. Why would anybody want to see a checkerboard pattern?</A
+></H3
+><P
+> This can be helpful for troubleshooting problems. It might also be good
+ for anyone new to <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> so that they can
+ see if their favorite pages are displaying correctly, and
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is not inadvertently removing something
+ important.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN423"
+>3.11. I see large red banners on some pages that say
+<SPAN
+CLASS="QUOTE"
+>"Blocked"</SPAN
+>. Why and how do I get rid of this?</A
+></H3
+><P
+> These are URLs that match something in one of
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+> block actions (+block). It is meant
+ to be a warning so that you know something has been blocked and an easy way
+ for you to see why. These are handled differently than what has been defined
+ explicitly as <SPAN
+CLASS="QUOTE"
+>"images"</SPAN
+> (e.g. ad banners). Depending on the
+ URL itself, it is sometimes hard for <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> to
+ really know whether there is indeed an ad image there or not. And there are
+ limitations as to what <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can do to
+ <SPAN
+CLASS="QUOTE"
+>"fool"</SPAN
+> the browser.</P
+><P
+> For instance, if the ad is in a frame, then it is embedded in the separate
+ HTML page used for the frame. In this case, you cannot just substitute an
+ aribitray image (like we would for a <SPAN
+CLASS="QUOTE"
+>"blank"</SPAN
+> image), for an HTML
+ page. The browser is expecting an HTML page, and that is what it must have
+ for frames. So this situation can be a little trickier to deal with, and
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> will use the <SPAN
+CLASS="QUOTE"
+>"Blocked"</SPAN
+> page.</P
+><P
+> If you want these to be treated as if they were images, so that they can be
+ made invisible, you can try moving the offending URL from the
+ <SPAN
+CLASS="QUOTE"
+>"+block"</SPAN
+> section to the <SPAN
+CLASS="QUOTE"
+>"+imageblock"</SPAN
+> section of
+ your actions file. Just be forewarned, if any URL is made
+ <SPAN
+CLASS="QUOTE"
+>"invisible"</SPAN
+>, you may not have any inkling that something has
+ been removed from that page, or why. If this approach does not work, then you are
+ probably dealing with a frame (or <SPAN
+CLASS="QUOTE"
+>"ilayer"</SPAN
+>), and the only thing
+ that can go there is an HTML page of some sort.</P
+><P
+> To deal with this situation, you could modify the
+ <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="FILENAME"
+>block</TT
+>"</SPAN
+> HTML template that is used by
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> to display this, and make it something
+ more to your liking. Currently, there is no configuration option for this.
+ You will have to modify, or create your own page, and use this to replace
+ <TT
+CLASS="FILENAME"
+>templates/blocked</TT
+>, which is what
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> uses to display the <SPAN
+CLASS="QUOTE"
+>"Blocked"</SPAN
+>
+ page.</P
+><P
+> Another way to deal with this is find why and where
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is blocking the frame, and
+ diable this. Then let the <SPAN
+CLASS="QUOTE"
+>"+image-blocker"</SPAN
+> action
+ handle the ad that is embedded in the frame's HTML page. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="ALLISEEISRED"
+>3.12. I cannot see all of the <SPAN
+CLASS="QUOTE"
+>"Blocked"</SPAN
+> page banner. All I
+see is a bright red square.</A
+></H3
+><P
+> There is not enough space to fit the entire page. Try right clicking on the
+ visible, red portion, and select <SPAN
+CLASS="QUOTE"
+>"Show Frame"</SPAN
+>, or equivalent.
+ This will usually allow you to see the entire Privoxy <SPAN
+CLASS="QUOTE"
+>"Blocked"</SPAN
+>
+ page, and from there you can see just what is being blocked, and why.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="SRVANY"
+>3.13. Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> run as a service
+on Win2K/NT?</A
+></H2
+><P
+> Yes, it can run as a system service using <B
+CLASS="COMMAND"
+>srvany.exe</B
+>.
+ The only catch is that this will effectively disable the
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> icon in the taskbar. You can have
+ one or the other, but not both at this time :( </P
+><P
+> There is a pending feature request for this functionality. See
+ thread: <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.14. How can I make <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> work with other
+proxies like <SPAN
+CLASS="APPLICATION"
+>Squid</SPAN
+>?</A
+></H3
+><P
+> This can be done. See the <A
+HREF="../user-manual/configuration.html#FORWARDING"
+TARGET="_top"
+>user manual</A
+>,
+ which describes how to do this. </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="installation.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="misc.html"
+>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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Contacting the developers, Bug Reporting and Feature Requests</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy Frequently Asked Questions"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Troubleshooting"
+HREF="trouble.html"><LINK
+REL="NEXT"
+TITLE="Copyright and History"
+HREF="copyright.html"><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
+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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="copyright.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="CONTACT"
+>7. Contacting the developers, Bug Reporting and Feature Requests</A
+></H1
+><P
+> We value your feedback. However, to provide you with the best support, please
+ note:
+
+ <P
+></P
+><UL
+><LI
+><P
+CLASS="LITERALLAYOUT"
+> Use the Sourceforge Support Forum to get help:<br>
+ <br>
+ <A
+HREF="http://sourceforge.net/tracker/?group_id=11118&atid=211118"
+TARGET="_top"
+>http://sourceforge.net/tracker/?group_id=11118&atid=211118</A
+><br>
+ </P
+></LI
+><LI
+><P
+CLASS="LITERALLAYOUT"
+> Submit bugs only through our Sourceforge Bug Forum:<br>
+ <br>
+ <A
+HREF="http://sourceforge.net/tracker/?group_id=11118&atid=111118"
+TARGET="_top"
+>http://sourceforge.net/tracker/?group_id=11118&atid=111118</A
+>. <br>
+ </P
+><P
+> Make sure that the bug has not already been submitted. Please try to
+ verify that it is a <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> bug, and not a
+ browser or site bug first. If you are using your own custom configuration,
+ please try the stock configs to see if the problem is a configuration
+ related bug. And if not using the latest development snapshot, please try
+ the latest one. Or even better, CVS sources. Please be sure to include the
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>/<SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>
+ version, platform, browser, any pertinent log data, any other relevant
+ details (please be specific) and, if possible, some way to reproduce the
+ bug.
+ </P
+></LI
+><LI
+><P
+CLASS="LITERALLAYOUT"
+> Submit feature requests only through our Sourceforge feature request <br>
+ forum:<br>
+ <br>
+ <A
+HREF="http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse"
+TARGET="_top"
+>http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse</A
+>.<br>
+ </P
+></LI
+><LI
+><P
+CLASS="LITERALLAYOUT"
+>We will soon have an automated way to submit advertisements, incorrectly<br>
+blocked images, popups and the like. Check back.<br>
+ </P
+></LI
+><LI
+><P
+CLASS="LITERALLAYOUT"
+> For any other issues, feel free to use the mailing lists:<br>
+ <br>
+ <A
+HREF="http://sourceforge.net/mail/?group_id=11118"
+TARGET="_top"
+>http://sourceforge.net/mail/?group_id=11118</A
+>.<br>
+ </P
+><P
+> Anyone interested in actively participating in development and related
+ discussions can also join the appropriate mailing list. Archives are
+ available too.
+ </P
+></LI
+></UL
+></P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="trouble.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="copyright.html"
+>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"
+>Copyright and History</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Copyright and History</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>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"
+>8. Copyright and History</A
+></H1
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN700"
+>8.1. Copyright</A
+></H2
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is free software; you can
+ redistribute it and/or modify it under the terms of the GNU General Public
+
+ License as published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.</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 GNU General Public License for
+ more details, which is available from the Free Software Foundation, Inc, 59
+ Temple Place - Suite 330, Boston, MA 02111-1307, USA.</P
+><P
+> You should have received a copy of the <A
+HREF="http://www.gnu.org/copyleft/gpl.html"
+TARGET="_top"
+>GNU General Public License</A
+>
+ along with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN707"
+>8.2. History</A
+></H2
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is evolved, and derived from,
+ <SPAN
+CLASS="APPLICATION"
+>the Internet Junkbuster</SPAN
+>, with many
+ improvments and enhancements over the original.</P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> was originally written by Anonymous
+ Coders and <A
+HREF="http://www.junkbusters.com"
+TARGET="_top"
+>Junkbuster's
+ Corporation</A
+>, and was released as free open-source software under the
+ GNU GPL. <A
+HREF="http://www.waldherr.org/junkbuster/"
+TARGET="_top"
+>Stefan
+ Waldherr</A
+> made many improvements, and started the <A
+HREF="http://sourceforge.net/projects/ijbswa/"
+TARGET="_top"
+>SourceForge project
+ Privoxy</A
+> to rekindle development. There are now several active
+ developers contributing. The last stable release of
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> was v2.0.2, which has now
+ grown whiskers ;-).</P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="contact.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>General Information</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="installation.html"
+>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="NEWJB"
+>1.1. What is this new version of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>?</A
+></H3
+><P
+> The original <SPAN
+CLASS="APPLICATION"
+><SPAN
+CLASS="TRADEMARK"
+>Internet
+ Junkbuster</SPAN
+>™</SPAN
+> (tm) is a copyrighted product of <A
+HREF="http://www.junkbusters.com"
+TARGET="_top"
+>Junkbusters Corporation</A
+>.
+ Development of this effort stopped some time ago as of version 2.0.2. Stefan
+ Waldherr started the ijbswa project on <A
+HREF="http://sourceforge.net/projects/ijbswa/"
+TARGET="_top"
+>Sourceforge</A
+> to
+ rekindle development. Other developers subsequently joined with Stefan, and
+ have since added many new features, refinements and enhancements. The result
+ of this effort is <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.
+ </P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> has evolved from the
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster 2.0.2</SPAN
+> code base, and has advanced
+ significantly at this point.
+ </P
+><P
+>
+ Please see the History section for more
+ information on the history of <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> and
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN47"
+>1.2. Why <SPAN
+CLASS="QUOTE"
+>"Privoxy"</SPAN
+>? Why a name change at all?</A
+></H3
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is the
+ <SPAN
+CLASS="QUOTE"
+>"<I
+CLASS="EMPHASIS"
+>Privacy Enhancing Proxy</I
+>"</SPAN
+>.</P
+><P
+> There are potential legal complications from the continued use of the
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> name, which is a 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 changes from the original
+ code, that it was time to make a clean break from the past and make
+ a name in their own right, especially now with the pending
+ release of version 3.0.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="DIFFERS"
+>1.3. How does <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> differ
+from the old <SPAN
+CLASS="APPLICATION"
+>Junkbuster?</SPAN
+></A
+></H3
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> picks up where
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> left off. All the old features remain.
+ The new <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> still blocks ads and banners,
+ still manages cookies, and still helps protect your privacy. But, these are
+ all enhanced, and many new features have been added, all in the same vein.
+ </P
+><P
+> The configuration has changed significantly as well. This is something that
+ users will notice right off the bat if you are upgrading from
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> 2.0.x. The <SPAN
+CLASS="QUOTE"
+>"blocklist"</SPAN
+>
+ file does not exist any more. This is replaced by <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+>
+ files, such as <TT
+CLASS="FILENAME"
+>default.actions</TT
+>. This is where most of
+ the per site configuration is now.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="FEATURES"
+>1.4. What are some of the new features?</A
+></H3
+><P
+> <P
+></P
+><UL
+><LI
+><P
+> Integrated browser based configuration and control utility (<A
+HREF="http://p.p"
+TARGET="_top"
+>http://p.p</A
+>). Browser-based tracing of rule
+ and filter effects.
+ </P
+></LI
+><LI
+><P
+> Blocking of annoying pop-up browser windows.
+ </P
+></LI
+><LI
+><P
+> HTTP/1.1 compliant (most, but not all 1.1 features are supported).
+ </P
+></LI
+><LI
+><P
+> Support for Perl Compatible Regular Expressions in the configuration files, and
+ generally a more sophisticated and flexible configuration syntax over
+ previous versions.
+ </P
+></LI
+><LI
+><P
+> GIF de-animation.
+ </P
+></LI
+><LI
+><P
+> Web page content filtering (removes banners based on size,
+ invisible <SPAN
+CLASS="QUOTE"
+>"web-bugs"</SPAN
+>, JavaScript, pop-ups, status bar abuse,
+ etc.)
+ </P
+></LI
+><LI
+><P
+> Bypass many click-tracking scripts (avoids script redirection).
+
+ </P
+></LI
+><LI
+><P
+> Multi-threaded (POSIX and native threads).
+ </P
+></LI
+><LI
+><P
+> Auto-detection and re-reading of config file changes.
+ </P
+></LI
+><LI
+><P
+> User-customizable HTML templates (e.g. 404 error page).
+ </P
+></LI
+><LI
+><P
+> Improved cookie management features (e.g. session based cookies).
+ </P
+></LI
+><LI
+><P
+> Improved signal handling, and a true daemon mode (Unix).
+ </P
+></LI
+><LI
+><P
+> Builds from source on most UNIX-like systems. Packages available for: Linux
+ (RedHat, SuSE, or Debian), Windows, Sun Solaris, Mac OSX, OS/2, HP-UX 11 and AmigaOS.
+
+ </P
+></LI
+><LI
+><P
+> In addition, the configuration is much more powerful and versatile over-all.
+ </P
+></LI
+></UL
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="PROXYMORON"
+>1.5. What is a <SPAN
+CLASS="QUOTE"
+>"proxy"</SPAN
+>? How does
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> work?</A
+></H3
+><P
+> When you connect to a web site with <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>,
+ you are really connecting to your locally running version of
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ intercepts your requests for the web page, and relays that to the
+ <SPAN
+CLASS="QUOTE"
+>"real"</SPAN
+> web site. The web site sends the HTTP data stream
+ back to <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>, where
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can work its magic before it
+ relays this data back to your web browser.
+ </P
+><P
+> Since <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> sits between you and the
+ WWW, it is in a position to intercept and completely manage all web traffic and
+ HTTP content before it gets to your browser.
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> uses various programming methods to do
+ this, all of which is under your control via the various configuration
+ files and options.
+ </P
+><P
+> There are many kinds of proxies. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> best
+ fits the <SPAN
+CLASS="QUOTE"
+>"filtering proxy"</SPAN
+> category.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN123"
+>1.6. How does <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> know what is
+an ad, and what is not?</A
+></H3
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> processes all the raw content of every
+ web page. So it reads everything on each page. It then compares this to the
+ rules as set up in the configuration files, and looks for any matches to
+ these rules. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> makes heavy use of
+ <SPAN
+CLASS="QUOTE"
+>"regular expressions"</SPAN
+>. (If you are not familiar with regular
+ expressions, it is explained briefly in <A
+HREF="../user-manual/appendix.html"
+TARGET="_top"
+>the user manual</A
+>.) Regular
+ expressions facilitate matching of one text string against another, using
+ wildcards to build complex patterns. So <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ will typically look for URLs and other content that match certain key words
+ and expressions as defined in the configuration files. For instance a URL
+ that contains <SPAN
+CLASS="QUOTE"
+>"/banners"</SPAN
+>, has a high probability of containing
+ ad banners, and thus would be a prime candidate to have a matching rule.</P
+><P
+> So <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> will look for these kinds of obvious
+ looking culprits. And also, will use lists of known organizations that
+ specialize in ads. Again, using complex patterns to match as many potential
+ combinations as possible since there tend to be many, many variations used by
+ advertisers, and new ones are being introduced all the time.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN135"
+>1.7. Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> 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 something by mistake. There is a good chance you may run
+ into such a situation 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#AEN645"
+>See the Troubleshooting section below</A
+>.)</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="BROWSERS2"
+>1.8. My browser does the same things as
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>. Why should I use
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> at all?</A
+></H3
+><P
+> Modern browsers do indeed have <I
+CLASS="EMPHASIS"
+>some</I
+> of the same
+ functionality as <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>. Maybe this is
+ adequate for you. But <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is much more
+ versatile and powerful, and can do a number of things that browsers just can't.
+ </P
+><P
+> In addition, a proxy is good choice if you use multiple browsers, or
+ have a LAN with multiple computers. This way all the configuration
+ is in one place, and you don't have to maintain a similar configuration
+ for possibly many browsers.
+
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="LICENSE"
+>1.9. Is there is a license or fee? What about a
+warranty? Registration?</A
+></H3
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is licensed under the GNU General Public
+ License (GPL). It is free to use, copy, modify or distribute as you wish
+ under the terms of this license. Please see the Copyright section for more
+ information on the license and copyright.
+
+ </P
+><P
+> There is no warranty of any kind, expressed, implied or otherwise. That is
+ something that would cost real money ;-) There is no registration either.
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> really is <I
+CLASS="EMPHASIS"
+>free</I
+>
+ in every respect!
+
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="JOINTEAM"
+>1.10. I would like to help you, what do I do?</A
+></H3
+><DIV
+CLASS="SECT3"
+><H4
+CLASS="SECT3"
+><A
+NAME="JOINTEAM-MONEY"
+>1.10.1. Money Money Money</A
+></H4
+><P
+> We, of course, welcome donations and use the money for domain registering,
+ regular world-wide get-togethers (hahaha). Anyway, we'll soon describe the
+ process how to donate money to the team.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H4
+CLASS="SECT3"
+><A
+NAME="JOINTEAM-WORK"
+>1.10.2. You want to work with us?</A
+></H4
+><P
+> Well, helping the team is always a good idea. We welcome new developers,
+ RPM gurus or documentation makers. Simply get an account on sourceforge.net
+ and mail your id to the developer mailing list. Then read the
+ section Quickstart in the <A
+HREF="../developer-manual/quickstart.html"
+TARGET="_top"
+> Developer's Manual</A
+>.</P
+><P
+> Once we have added you to the team, you'll have write access to the CVS
+ repository, and together we'll find a suitable task for you.</P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="index.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="installation.html"
+>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
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Privoxy Frequently Asked Questions</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="NEXT"
+TITLE="General Information"
+HREF="general.html"><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 Frequently Asked Questions</A
+></H1
+><DIV
+CLASS="AUTHORGROUP"
+><A
+NAME="AEN5"
+></A
+><H3
+CLASS="AUTHOR"
+><A
+NAME="AEN6"
+></A
+></H3
+><DIV
+CLASS="AFFILIATION"
+><SPAN
+CLASS="ORGNAME"
+>By: Privoxy Developers<BR></SPAN
+></DIV
+></DIV
+><P
+CLASS="PUBDATE"
+>$Id: faq.sgml,v 1.43 2002/04/04 21:59:53 hal9 Exp $<BR></P
+><DIV
+><DIV
+CLASS="ABSTRACT"
+><A
+NAME="AEN9"
+></A
+><P
+></P
+><P
+> </P
+><P
+> This FAQ gives users and developers alike answers to frequently asked
+ questions about <A
+HREF="http://www.privoxy.org"
+TARGET="_top"
+>Privoxy</A
+>
+ .
+ </P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is a web proxy with advanced filtering
+ capabilities for protecting privacy, filtering web page content, managing
+ cookies, controlling access, and removing ads, banners, pop-ups and other
+ obnoxious Internet junk. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> has a very
+ flexible configuration and can be customized to suit individual needs and
+ tastes. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> has application for both
+ stand-alone systems and multi-user networks.</P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is based on the code of the
+ <SPAN
+CLASS="APPLICATION"
+>Internet Junkbuster</SPAN
+> (tm).
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> was originally written by JunkBusters
+ Corporation, and was released as free open-source software under the GNU GPL.
+ Stefan Waldherr made many improvements, and started the SourceForge project
+ to continue development.</P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> continues the
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+> tradition, but adds many
+ refinements, enhancements and new features.</P
+><P
+> 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 Contact section 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
+><A
+HREF="index.html#INTRO"
+></A
+></DT
+><DT
+>1. <A
+HREF="general.html"
+>General Information</A
+></DT
+><DD
+><DL
+><DT
+>1.1. <A
+HREF="general.html#NEWJB"
+>What is this new version of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>?</A
+></DT
+><DT
+>1.2. <A
+HREF="general.html#AEN47"
+>Why <SPAN
+CLASS="QUOTE"
+>"Privoxy"</SPAN
+>? Why a name change at all?</A
+></DT
+><DT
+>1.3. <A
+HREF="general.html#DIFFERS"
+>How does <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> differ
+from the old <SPAN
+CLASS="APPLICATION"
+>Junkbuster?</SPAN
+></A
+></DT
+><DT
+>1.4. <A
+HREF="general.html#FEATURES"
+>What are some of the new features?</A
+></DT
+><DT
+>1.5. <A
+HREF="general.html#PROXYMORON"
+>What is a <SPAN
+CLASS="QUOTE"
+>"proxy"</SPAN
+>? How does
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> work?</A
+></DT
+><DT
+>1.6. <A
+HREF="general.html#AEN123"
+>How does <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> know what is
+an ad, and what is not?</A
+></DT
+><DT
+>1.7. <A
+HREF="general.html#AEN135"
+>Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> make mistakes?
+This does not sound very scientific.</A
+></DT
+><DT
+>1.8. <A
+HREF="general.html#BROWSERS2"
+>My browser does the same things as
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>. Why should I use
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> at all?</A
+></DT
+><DT
+>1.9. <A
+HREF="general.html#LICENSE"
+>Is there is a license or fee? What about a
+warranty? Registration?</A
+></DT
+><DT
+>1.10. <A
+HREF="general.html#JOINTEAM"
+>I would like to help you, what do I do?</A
+></DT
+><DD
+><DL
+><DT
+>1.10.1. <A
+HREF="general.html#JOINTEAM-MONEY"
+>Money Money Money</A
+></DT
+><DT
+>1.10.2. <A
+HREF="general.html#JOINTEAM-WORK"
+>You want to work with us?</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 <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>?</A
+></DT
+><DT
+>2.2. <A
+HREF="installation.html#WHICHOS"
+>Which operating systems are supported?</A
+></DT
+><DT
+>2.3. <A
+HREF="installation.html#NEWINSTALL"
+>Can I install
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> over <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>?</A
+></DT
+><DT
+>2.4. <A
+HREF="installation.html#AEN196"
+>I just installed <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>. 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 <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>?</A
+></DT
+><DT
+>2.6. <A
+HREF="installation.html#AEN221"
+>I just installed <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>, and nothing is happening.
+All the ads are there. What's wrong?</A
+></DT
+></DL
+></DD
+><DT
+>3. <A
+HREF="configuration.html"
+>Configuration</A
+></DT
+><DD
+><DL
+><DT
+>3.1. <A
+HREF="configuration.html#NEWCONFIG"
+>Can I use my old config files?</A
+></DT
+><DT
+>3.2. <A
+HREF="configuration.html#AEN239"
+>What is an <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> file?</A
+></DT
+><DT
+>3.3. <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.4. <A
+HREF="configuration.html#AEN257"
+>How are actions files configured? What is the easiest
+way to do this?</A
+></DT
+><DT
+>3.5. <A
+HREF="configuration.html#CONFIGFILES"
+>What are the differences between
+intermediate.action, basic.action, etc.?</A
+></DT
+><DT
+>3.6. <A
+HREF="configuration.html#BROWSECONFIG"
+>Why can I change the configuration with a
+browser? Does that not raise security issues?</A
+></DT
+><DT
+>3.7. <A
+HREF="configuration.html#AEN379"
+>What is <SPAN
+CLASS="QUOTE"
+>"default.filter"</SPAN
+>?</A
+></DT
+><DT
+>3.8. <A
+HREF="configuration.html#AEN391"
+>How can I set up <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> to act as a proxy for my
+ LAN?</A
+></DT
+><DT
+>3.9. <A
+HREF="configuration.html#AEN403"
+>Instead of ads, now I get a checkerboard pattern. I don't want to see anything.</A
+></DT
+><DT
+>3.10. <A
+HREF="configuration.html#AEN418"
+>Why would anybody want to see a checkerboard pattern?</A
+></DT
+><DT
+>3.11. <A
+HREF="configuration.html#AEN423"
+>I see large red banners on some pages that say
+<SPAN
+CLASS="QUOTE"
+>"Blocked"</SPAN
+>. Why and how do I get rid of this?</A
+></DT
+><DT
+>3.12. <A
+HREF="configuration.html#ALLISEEISRED"
+>I cannot see all of the <SPAN
+CLASS="QUOTE"
+>"Blocked"</SPAN
+> page banner. All I
+see is a bright red square.</A
+></DT
+><DT
+>3.13. <A
+HREF="configuration.html#SRVANY"
+>Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> run as a service
+on Win2K/NT?</A
+></DT
+><DT
+>3.14. <A
+HREF="configuration.html#OTHERPROXY"
+>How can I make <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> work with other
+proxies like <SPAN
+CLASS="APPLICATION"
+>Squid</SPAN
+>?</A
+></DT
+></DL
+></DD
+><DT
+>4. <A
+HREF="misc.html"
+>Miscellaneous</A
+></DT
+><DD
+><DL
+><DT
+>4.1. <A
+HREF="misc.html#AEN473"
+>How much does <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> slow my browsing down? This
+has to add extra time to browsing.</A
+></DT
+><DT
+>4.2. <A
+HREF="misc.html#LOADINGTIMES"
+>I noticed considerable
+delays in page requests compared to the old Junkbuster. What's wrong?</A
+></DT
+><DT
+>4.3. <A
+HREF="misc.html#CONFIGURL"
+>What is the "http://p.p/"?</A
+></DT
+><DT
+>4.4. <A
+HREF="misc.html#BLOCKLIST"
+>Do you still maintain the blocklists?</A
+></DT
+><DT
+>4.5. <A
+HREF="misc.html#NEWADS"
+>How can I submit new ads?</A
+></DT
+><DT
+>4.6. <A
+HREF="misc.html#IP"
+>How can I hide my IP address?</A
+></DT
+><DT
+>4.7. <A
+HREF="misc.html#AEN520"
+>Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> guarantee I am anonymous?</A
+></DT
+><DT
+>4.8. <A
+HREF="misc.html#AEN531"
+>Might some things break because header information is
+being altered?</A
+></DT
+><DT
+>4.9. <A
+HREF="misc.html#AEN541"
+>Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> act as a <SPAN
+CLASS="QUOTE"
+>"caching"</SPAN
+> proxy to
+speed up web browsing?</A
+></DT
+><DT
+>4.10. <A
+HREF="misc.html#AEN549"
+>What about as a firewall? Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> protect me?</A
+></DT
+><DT
+>4.11. <A
+HREF="misc.html#AEN554"
+>The <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> logo that replaces ads is very blocky
+and ugly looking. Can't a better font be used?</A
+></DT
+><DT
+>4.12. <A
+HREF="misc.html#AEN563"
+>I have large empty spaces now where ads used to be.
+Why?</A
+></DT
+><DT
+>4.13. <A
+HREF="misc.html#AEN566"
+>How can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> filter Secure (HTTPS) URLs?</A
+></DT
+><DT
+>4.14. <A
+HREF="misc.html#AEN573"
+><SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> runs as a <SPAN
+CLASS="QUOTE"
+>"server"</SPAN
+>. How
+secure is it? Do I need to take any special precautions?</A
+></DT
+><DT
+>4.15. <A
+HREF="misc.html#TURNOFF"
+>How can I temporarily disable <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>?</A
+></DT
+><DT
+>4.16. <A
+HREF="misc.html#SEEALSO"
+>Where can I find more information about <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+and related issues?</A
+></DT
+></DL
+></DD
+><DT
+>5. <A
+HREF="trouble.html"
+>Troubleshooting</A
+></DT
+><DD
+><DL
+><DT
+>5.1. <A
+HREF="trouble.html#AEN626"
+>I just upgraded and am getting <SPAN
+CLASS="QUOTE"
+>"connection refused"</SPAN
+>
+with every web page?</A
+></DT
+><DT
+>5.2. <A
+HREF="trouble.html#AEN639"
+>I just added a new rule, but the steenkin ad is
+still getting through. How?</A
+></DT
+><DT
+>5.3. <A
+HREF="trouble.html#AEN645"
+>One of my favorite sites does not work with <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.
+What can I do?</A
+></DT
+><DT
+>5.4. <A
+HREF="trouble.html#BUGS"
+>Where can I get help? Report bugs? Feature Requests? Etc?</A
+></DT
+><DT
+>5.5. <A
+HREF="trouble.html#AEN672"
+>What time is it?</A
+></DT
+></DL
+></DD
+><DT
+>7. <A
+HREF="contact.html"
+>Contacting the developers, Bug Reporting and Feature Requests</A
+></DT
+><DT
+>8. <A
+HREF="copyright.html"
+>Copyright and History</A
+></DT
+><DD
+><DL
+><DT
+>8.1. <A
+HREF="copyright.html#AEN700"
+>Copyright</A
+></DT
+><DT
+>8.2. <A
+HREF="copyright.html#AEN707"
+>History</A
+></DT
+></DL
+></DD
+></DL
+></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="INTRO"
+></A
+></H1
+><P
+> </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><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"
+>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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Installation</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="configuration.html"
+>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 <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>?</A
+></H3
+><P
+> Any browser that can be configured to use a <SPAN
+CLASS="QUOTE"
+>"proxy"</SPAN
+>, which
+ should be virtually all browsers. Direct browser support is not necessary
+ since <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> runs as a separate application and
+ just exchanges standard HTML data with your browser, 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 Win32, Mac
+ OSX, OS/2, AmigaOS, Linux (RedHat, Suse, Debian), FreeBSD, and many flavors
+ of Unix. There are source and binary releases for these available for
+ download at <A
+HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
+TARGET="_top"
+>http://sourceforge.net/project/showfiles.php?group_id=11118</A
+>.</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="NEWINSTALL"
+>2.3. Can I install
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> over <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>?</A
+></H3
+><P
+> We recommend you uninstall <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>
+ first to minimize conflicts and confusion. You may want to
+ save your old configuration files for future reference. The configuration
+ is substantially changed.
+ </P
+><P
+> See the <A
+HREF="../user-manual/index.html"
+TARGET="_top"
+>user-manual</A
+> for
+ platform specific installation instructions.
+ </P
+><P
+> Note: Some installers may automatically uninstall
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>, if present!
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN196"
+>2.4. I just installed <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>. Is there anything
+special I have to do now?</A
+></H3
+><P
+> All browsers must 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. See below.
+ Also, you should flush your browser's memory and disk cache to get rid of any
+ cached items. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="LOCALHOST"
+>2.5. What is the proxy address of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>?</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 <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 have <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> to run on a different port with the
+ <I
+CLASS="EMPHASIS"
+>listen-address</I
+> config option).
+ </P
+><P
+> When configuring your browser's proxy settings you typically enter
+ the word <SPAN
+CLASS="QUOTE"
+>"localhost"</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. Port assignment would be
+ same as above.
+ </P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> does not currently handle
+ protocols such as FTP, SMTP, IM, IRC, ICQ, or other Internet
+ protocols.
+ </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN221"
+>2.6. I just installed <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>, 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 give you
+ a banner that says <SPAN
+CLASS="QUOTE"
+>"This is Privoxy"</SPAN
+> and
+ access to <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+> internal configuration.
+ If you see this, then you are good to go. If not, the browser or
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> are not set up correctly. </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="general.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="configuration.html"
+>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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Miscellaneous</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="trouble.html"
+>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="AEN473"
+>4.1. How much does <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> slow my browsing down? This
+has to add extra time to browsing.</A
+></H3
+><P
+> 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 being 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.</P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"Filtering"</SPAN
+> via the <TT
+CLASS="FILENAME"
+>filterfile</TT
+>
+ mechanism may cause a perceived slowdown, since the entire page is buffered
+ before displaying. See below.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="LOADINGTIMES"
+>4.2. I noticed considerable
+delays in page requests compared to the old Junkbuster. What's wrong?</A
+></H3
+><P
+>Using the default filtering configuration, I noticed considerable delays in
+page requests compared to the old Junkbuster. Loading pages with large contents
+seemed to take forever, then suddenly delivering all the content at once.
+ </P
+><P
+>The whole content must be loaded in order to filter, and nothing is is
+sent to the browser during this time. The loading time does not really
+change 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".
+ </P
+><P
+>To modify the content of a page (i.e. make frames resizeable again, etc.) and
+not just replace ads, <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> needs to download the
+entire page first, do its content magic and then send the page to the browser.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="CONFIGURL"
+>4.3. What is the "http://p.p/"?</A
+></H3
+><P
+>Since <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> sits between your web browser and the Internet, it can be
+programmed to handle certain pages specially.</P
+><P
+>With recent versions of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> (version 2.9.x), you can get some
+information about <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> and change some settings by going to
+<A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+> or, equivalently, <A
+HREF="http://config.privoxy.org/"
+TARGET="_top"
+>http://config.privoxy.org/</A
+>
+(Note that p.p is far easier to type but may not work in some
+configurations. With the name change to <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>,
+this is changed from the previous http://i.j.b/ or earlier 2.9.x versions).</P
+><P
+>These pages are <I
+CLASS="EMPHASIS"
+>not</I
+> forwarded to a server on the Internet
+- instead they are handled by a special web server which is built in to
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.</P
+><P
+>If you are not running <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>, then <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+> will fail, and <A
+HREF="http://config.privoxy.org/"
+TARGET="_top"
+>http://config.privoxy.org/</A
+> will
+return a web page telling you you're not running
+<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.</P
+><P
+>If you have version 2.0.2, then the equivalent is
+http://example.com/show-proxy-args (but you get far less information, and you
+should really consider upgrading to 2.9.13).</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="BLOCKLIST"
+>4.4. Do you still maintain the blocklists?</A
+></H3
+><P
+> No. The format of the blocklists has changed significantly in versions
+ 2.9.x and later. Once we have released the new stable
+ version, v3.0, there will again be blocklists that you can update
+ automatically.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="NEWADS"
+>4.5. How can I submit new ads?</A
+></H3
+><P
+> As of now, please discontinue to submit new ad blocking infos. Once we
+ have released the new version, there will again be a form on the website,
+ which you can use to contribute new ads.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="IP"
+>4.6. How can I hide my IP address?</A
+></H3
+><P
+> You cannot hide your IP address with <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> or any other software, since
+the server needs to know your IP address to send the answer to you.</P
+><P
+>Fortunately there are many publicly usable anonymous proxies out there, which
+solve the problem by providing a further level of indirection between you and
+the web server, shared by many people and thus letting your requests "drown"
+in white noise of unrelated requests as far as user tracking is concerned.</P
+><P
+>Most of them will, however, log your IP address and make it available to the
+authorities in case you abuse that anonymity for criminal purposes. 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
+>You can find a list of anonymous public proxies at <A
+HREF="http://www.multiproxy.org/anon_list.htm"
+TARGET="_top"
+>multiproxy.org</A
+> and many
+more through Google.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN520"
+>4.7. Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> guarantee I am anonymous?</A
+></H3
+><P
+> No. Your chances of remaining anonymous are greatly improved, but unless you
+ are an expert on Internet security it would be safest to 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 <I
+CLASS="EMPHASIS"
+>you</I
+> more freedom to decide which sites
+ you can trust, and what details you want to reveal. But it's still possible
+ that web sites can find out who you are. Here's one way this can happen.</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="AEN531"
+>4.8. Might some things break because header information is
+being altered?</A
+></H3
+><P
+> Definitely. More and more sites use HTTP header content to decide what to
+ display and how to display it. There is many ways that this can be handled,
+ so having hard and fast rules, is tricky.</P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"USER AGENT"</SPAN
+> in particular is often used in this way to identify
+ the browser, and adjust content accordingly. Changing this now is not
+ recommended, since so many sites do look for this. You may get undesirable
+ results by changing this.</P
+><P
+> For instance, different browsers use different encodings of Russian and Czech
+ 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. There are
+ many, many other ways things can go wrong when trying to fool a web server.</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="AEN541"
+>4.9. Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> 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
+> 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
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN549"
+>4.10. What about as a firewall? Can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> protect me?</A
+></H3
+><P
+> Not in the way you mean, or in the way a true firewall can, or a proxy that
+ has this specific capability. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can help
+ protect your privacy, but not really protect you from intrusion attempts.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN554"
+>4.11. The <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> logo that replaces ads is very blocky
+and ugly looking. Can't a better font be used?</A
+></H3
+><P
+> This is not a font problem. The logo is an image that is created by
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> on the fly. So as to not waste
+ memory, the image is rather small. The blockiness comes when the
+ image is scaled to fill a largish area. There is not much to be done
+ about this, other than to use one of the other
+ <SPAN
+CLASS="QUOTE"
+>"imageblock"</SPAN
+> directives: <I
+CLASS="EMPHASIS"
+>pattern</I
+>,
+ <I
+CLASS="EMPHASIS"
+>blank</I
+>, or a URL of your choosing.</P
+><P
+>Given the above problem, we have decided to remove the logo option entirely
+[as of v2.9.13].</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN563"
+>4.12. I have large empty spaces now where ads used to be.
+Why?</A
+></H3
+><P
+> It would be easy enough to just eliminate this space altogether, rather than
+ fill it with blank space. But, this would create problems with many pages
+ that use the overall size of the ad to help organize the page layout and
+ position the various components of the page where they were intended to be.
+ It is best left this way.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN566"
+>4.13. How can <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> filter Secure (HTTPS) URLs?</A
+></H3
+><P
+> This is a limitation since HTTPS transactions are encrypted SSL sessions
+ between your browser and the secure site, and are meant to be reliably
+ <I
+CLASS="EMPHASIS"
+>secure</I
+> and private. This means that all cookies and HTTP
+ header information are also encrypted from the time they leave your browser,
+ to the site, and vice versa. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> does not
+ try to unencrypt this information, so it just passes through as is.
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can still catch images and ads that
+ are embedded in the SSL stream though.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN573"
+>4.14. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> runs as a <SPAN
+CLASS="QUOTE"
+>"server"</SPAN
+>. How
+secure is it? Do I need to take any special precautions?</A
+></H3
+><P
+> There are no known exploits that might effect
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>. 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
+> only listens to requests
+ from <SPAN
+CLASS="QUOTE"
+>"localhost"</SPAN
+>. 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
+> config file. All LAN hosts can then use
+ this as their proxy address in the browser proxy configuration. In this way,
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> will not listen on any external ports.
+ Of course, a firewall is always good too. Better safe than sorry.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="TURNOFF"
+>4.15. How can I temporarily disable <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>?</A
+></H3
+><P
+> The easiest way is to access <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> with your
+ browser by using the special URL: <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+>
+ and select "Toggle Privoxy on or off" from that page. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="SEEALSO"
+>4.16. Where can I find more information about <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+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://sourceforge.net/projects/ijbswa"
+TARGET="_top"
+>http://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://p.p/"
+TARGET="_top"
+>http://p.p/</A
+>, access
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> from your browser. Alternately,
+ <A
+HREF="http://config.privoxy.org"
+TARGET="_top"
+>http://config.privoxy.org</A
+>
+ may work in some situations where the first does not.
+ </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
+>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+>
+ <P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <A
+HREF="http://www.waldherr.org/junkbuster/"
+TARGET="_top"
+>http://www.waldherr.org/junkbuster/</A
+>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+>
+ <P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <A
+HREF="http://privacy.net/analyze/"
+TARGET="_top"
+>http://privacy.net/analyze/</A
+>
+ </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
+>
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+> </P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="configuration.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="trouble.html"
+>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
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Troubleshooting</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><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"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="contact.html"
+>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="AEN626"
+>5.1. I just upgraded and am getting <SPAN
+CLASS="QUOTE"
+>"connection refused"</SPAN
+>
+with every web page?</A
+></H3
+><P
+> Either <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is not running, or your
+ browser is configured for a different port than what
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is using.</P
+><P
+> The old <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> (and also
+ <SPAN
+CLASS="APPLICATION"
+>Junkbuster</SPAN
+>) used port 8000 by
+ default. This has been changed to port 8118 now, due to a conflict
+ with NAS (Network Audio Service), which uses port 8000. If you haven't,
+ you need to change your browser to the new port number, or alternately
+ change <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+> <SPAN
+CLASS="QUOTE"
+>"listen-address"</SPAN
+>
+ setting in the <TT
+CLASS="FILENAME"
+>config</TT
+> file used to start
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN639"
+>5.2. 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 in the picture. The best thing to do is try flushing 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 any actions match your new rule.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN645"
+>5.3. One of my favorite sites does not work with <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.
+What can I do?</A
+></H3
+><P
+> First verify that it is indeed a <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> problem,
+ by disabling <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> filtering and blocking.
+ Go to <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+> and click on
+ <SPAN
+CLASS="QUOTE"
+>"Toggle Privoxy On or Off"</SPAN
+>, then disable it. Now try that
+ page again. It's probably a good idea to flush the browser cache as well.</P
+><P
+> If still a problem, go to <SPAN
+CLASS="QUOTE"
+>"Show which actions apply to a URL and
+ why"</SPAN
+> from <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+> and paste
+ the full URL of the page in question into the prompt. See which actions are
+ being applied to the URL. Now, armed with this information, go to <SPAN
+CLASS="QUOTE"
+>"Edit
+ the actions list"</SPAN
+>. Here you should see various sections that have
+ various <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> features disabled for specific
+ sites. Most disabled <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> will have a <SPAN
+CLASS="QUOTE"
+>"-"</SPAN
+> (minus
+ sign) in front of them. Some aliases are used just to disable other actions,
+ e.g. <SPAN
+CLASS="QUOTE"
+>"shop"</SPAN
+> and <SPAN
+CLASS="QUOTE"
+>"fragile"</SPAN
+>, and won't necessarily
+ use a <SPAN
+CLASS="QUOTE"
+>"+"</SPAN
+> or <SPAN
+CLASS="QUOTE"
+>"-"</SPAN
+> sign. Add your problem page
+ URL to one of these sections that looks like it is disabling the feature that
+ is causing the problem. Rember to flush your browser's caches when making
+ such changes! As a last resort, try <SPAN
+CLASS="QUOTE"
+>"fragile"</SPAN
+> which
+ disables most actions. Now re-try the page. There might be some trial and
+ error involved. This is discussed in a little more detail in the <A
+HREF="../user-manual/appendix.html#ACTIONSANAT"
+TARGET="_top"
+>user-manual appendix</A
+>. </P
+><P
+> Alternately, if you are comfortable with a text editor, you can accomplish
+ the same thing by editing the appropriate <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> file.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="BUGS"
+>5.4. Where can I get help? Report bugs? Feature Requests? Etc?</A
+></H3
+><P
+> Feedback is encouraged, whether good, bad or ugly. Please see the contact
+ page in the <A
+HREF="../user-manual/contact.html"
+TARGET="_top"
+>user-manual</A
+> for
+ details. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="AEN672"
+>5.5. What time is it?</A
+></H3
+><P
+> Time for you to go!</P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="misc.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="contact.html"
+>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
--- /dev/null
+<html><head><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 -->
+ <B>privoxy</B> - Privacy enhancing Proxy
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>privoxy</B> [--help] [--version] [--no-daemon] [--pidfile <I>pidÂ</I>
+ <I>file</I>] [--user <I>user</I>[.<I>group</I>]] <I>[configfile]</I> (Unix)
+
+ <B>privoxy.exe</B> <I>[configfile]</I> (Windows)
+
+
+
+</PRE>
+<H2>OPTIONS</H2><PRE>
+ <B>Privoxy</B> may be invoked with the following command-line
+ options:
+
+ <B>--version</B> (unix only)
+ Print version info and exit.
+
+ <B>--help</B> (unix only)
+ Print a short usage info and exit.
+
+ <B>--no-daemon</B> (unix only)
+ Don't become a daemon, i.e. don't fork and become
+ process group leader, don't detach from controlling
+ tty, and do all logging there.
+
+ <B>--pidfile</B> <I>pidfile</I> (unix only)
+ On startup, write the process ID to <I>pidfile</I>. Delete
+ the <I>pidfile</I> on exit. Failiure 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</I>[.<I>group</I>] (unix only)
+ 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.
+
+
+ If the <I>configfile</I> is not specified on the command line,
+ <B>Privoxy</B> will look for a file named <B>config</B> in the current
+ directory (except on Win32 where it will try <B>config.txt</B>).
+
+
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <B>Privoxy</B> is a web proxy with advanced filtering capabiliÂ
+ ties for protecting privacy, filtering web page content,
+ managing cookies, controlling access, and removing ads,
+ banners, pop-ups and other obnoxious Internet junk.
+ <B>Privoxy</B> has a very flexible configuration and can be cusÂ
+ tomized to suit individual needs and tastes. <B>Privoxy</B> has
+ application for both stand-alone systems and multi-user
+ <B>Junkbuster</B> was originally written by JunkBusters CorporaÂ
+ tion, and was released as free open-source software under
+ the GNU GPL. Stefan Waldherr made many improvements, and
+ started the SourceForge project to continue development.
+
+
+
+</PRE>
+<H2>INSTALLATION AND USE</H2><PRE>
+ Browsers must be individually configured to use <B>Privoxy</B> as
+ a HTTP proxy. The default setting is for localhost, on
+ port 8118 (configurable in the main config file). To set
+ the HTTP proxy in Netscape and Mozilla, go through: <B>Edit</B>;
+ <B>Preferences</B>; <B>Advanced</B>; <B>Proxies</B>; <B>Manual</B> <B>Proxy</B> <B>ConfiguraÂ</B>
+ <B>tion</B>; <B>View</B>.
+
+ For Internet Explorer, go through: <B>Tools</B>; <B>Internet</B> <B>ProperÂ</B>
+ <B>ties</B>; <B>Connections</B>; <B>LAN</B> <B>Settings</B>.
+
+ The Secure (SSL) Proxy should also be set to the same valÂ
+ ues, otherwise <B>https:</B> URLs will not be proxied.
+
+ 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.action</I>, and <I>default.filter</I>. These are well comÂ
+ mented. On Unix and Unix-like systems, these are located
+ in <I>/etc/privoxy/</I> by default. On Windows, OS/2 and AmigaOS,
+ these files are in the same directory as the <B>Privoxy</B> exeÂ
+ cutable.
+
+ The name and number of configuration files has changed
+ from previous versions, and is subject to change as develÂ
+ opment progresses. In fact, the configuration itself is
+ changed and much more sophisticated. See the user-manual
+ for a brief explanation of all configuration options.
+
+ The actions list (ad blocks, etc) can also be configured
+ with your web browser at <I>http://www.privoxy.org/config</I>.
+ <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.
+
+
+
+</PRE>
+<H2>SAMPLE CONFIGURATION</H2><PRE>
+ A brief example of what a <I>default.action</I> configuration
+ might look like:
+
+
+ # Define a few useful custom aliases for later use
+ {{alias}}
+ +no-cookies = +no-cookies-set +no-cookies-read
+
+ # Do accept cookies
+ -no-cookies = -no-cookies-set -no-cookies-read
+
+ # Treat these blocked URLs as images.
+ +imageblock = +block +image
+
+ # Define page filters we want to use.
+ myfilters = +filter{html-annoyances} +filter{js-annoyances}\
+ +filter{no-popups} +filter{webbugs}
+
+ ## Default Policies (actions) ############################
+ { \
+ -block \
+ -downgrade \
+ +fast-redirects \
+ myfilters \
+ +no-compression \
+ +hide-forwarded \
+ +hide-from{block} \
+ +hide-referer{forge} \
+ -hide-user-agent \
+ -image \
+ +image-blocker{blank} \
+ +no-cookies-keep \
+ -no-cookies-read \
+ -no-cookies-set \
+ +no-popups \
+ -vanilla-wafer \
+ -wafer \
+ }
+ /
+
+ # Now set exceptions to the above defined policies #######
+
+ # Sites where we want persistant cookies
+ {-no-cookies -no-cookies-keep}
+ .redhat.com
+ .sun.com
+ .yahoo.com
+ .msdn.microsoft.com
+
+ # This site requires cookies AND 'fast-redirects' on
+ {-no-cookies -no-cookies-keep -fast-redirects}
+ .nytimes.com
+
+ # Add custom headers, and turn off filtering of page source
+ {+add-header{X-Privacy: Yes please} #-add-header{*} \
+ +add-header{X-User-Tracking: No thanks!} -filter}
+ privacy.net
+
+ .adforce.imgis.com
+ .ad.preferences.com/image.*
+ .ads.web.aol.com
+ .ad-adex3.flycast.com
+ .ad.doubleclick.net
+ .ln.doubleclick.net
+ .ad.de.doubleclick.net
+ /.*/count\.cgi\?.*df=
+ 194.221.183.22[1-7]
+ a196.g.akamai.net/7/196/2670/000[12]/images.gmx.net/i4/images/.*/
+
+ # Block any URLs that match these patterns
+ {+block}
+ /.*/(.*[-_.])?ads?[0-9]?(/|[-_.].*|\.(gif|jpe?g))
+ /.*/(plain|live|rotate)[-_.]?ads?/
+ /.*/(sponsor)s?[0-9]?/
+ /.*/ad(server|stream|juggler)\.(cgi|pl|dll|exe)
+ /.*/adbanners/
+ /.*/adv((er)?ts?|ertis(ing|ements?))?/
+ /.*/banners?/
+ /.*/popupads/
+ /.*/advert[0-9]+\.jpg
+ /ad_images/
+ /.*/ads/
+ /images/.*/.*_anim\.gif
+ /rotations/
+ /.*(ms)?backoff(ice)?.*\.(gif|jpe?g)
+ 195.63.104.*/(inbox|log|meld|folderlu|folderru|log(in|out)[lmr]u|)
+ .images.nytimes.com
+ .images.yahoo.com/adv/
+ /.*cnnstore\.gif
+
+
+
+ See the comments in the configuration files themselves, or
+ the user-manual for explanations of the above syntax, and
+ other <B>Privoxy</B> configuration options.
+
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ <I>/usr/sbin/privoxy</I>
+ <I>/etc/privoxy/config</I>
+ <I>/etc/privoxy/default.action</I>
+ <I>/etc/privoxy/advanced.action</I>
+ <I>/etc/privoxy/basic.action</I>
+ <I>/etc/privoxy/intermediate.action</I>
+ <I>/etc/privoxy/default.filter</I>
+ <I>/etc/privoxy/trust</I>
+ <I>/etc/privoxy/templates/*</I>
+ <I>/var/log/privoxy/logfile</I>
+
+
+ mentation should be included in the local documentation
+ directory, though is not complete at this time.
+
+
+
+</PRE>
+<H2>SIGNALS</H2><PRE>
+ <B>Privoxy</B> terminates on the <B>SIGINT</B>, <B>SIGTERM</B> and <B>SIGABRT</B> sigÂ
+ nals. Log rotation scripts may cause a re-opening of the
+ logfile by sending a <B>SIGHUP</B> to <B>Privoxy</B>. Note that unlike
+ other daemons, <B>Privoxy</B> does not need to be made aware of
+ config file changes by <B>SIGHUP</B> -- it will detect them autoÂ
+ matically.
+
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ This is a <B>BETA</B> version of <B>Privoxy</B>. Not all features are
+ well tested.
+
+ Please see the user-maual on how to contact the developers
+ for feature requests, reporting problems, and other quesÂ
+ tions.
+
+
+
+</PRE>
+<H2>BUGS</H2><PRE>
+ Probably. Please see the user-manual for how and where to
+ report bugs.
+
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ http://www.privoxy.org/
+ http://config.privoxy.org/
+ http://www.privoxy.org/faq/
+ http://www.privoxy.org/user-manual/
+ http://www.privoxy.org/developer-manual/
+ http://sourceforge.net/projects/ijbswa (Privoxy Project
+ Page)
+ http://www.waldherr.org/junkbuster/
+ http://www.junkbusters.com/ht/en/cookies.html
+ http://privacy.net/analyze/
+ http://www.squid-cache.org/
+ http://linuxalpha.ch/steudten/software/
+
+
+
+</PRE>
+<H2>DEVELOPMENT TEAM</H2><PRE>
+ Stefan Waldherr
+ Andreas Oesterhelt
+ Jon Foster
+ Markus Breitenbach
+ Thomas Steudten
+ David Schmidt
+ Haroon Rafique
+ Joerg Strohmayer
+ Shamim Mohamed
+ John Venvertloh
+ Hal Burgiss
+ Rodrigo Barbosa
+ Gábor Lipták
+
+
+
+</PRE>
+<H2>COPYRIGHT AND LICENSE</H2><PRE>
+ This program is free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation;
+ either version 2 of the License, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the GNU General Public License for more
+ details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307 USA
+
+ Internet Junkbuster Proxy is a trademark of Junkbusters
+ Corporation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+</body></html>
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Appendix</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy User Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="See Also"
+HREF="seealso.html"><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
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>Privoxy User Manual</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="seealso.html"
+>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"
+>9. Appendix</A
+></H1
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="REGEX"
+>9.1. Regular Expressions</A
+></H2
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can use <SPAN
+CLASS="QUOTE"
+>"regular expressions"</SPAN
+>
+ in various config files. Assuming support for <SPAN
+CLASS="QUOTE"
+>"pcre"</SPAN
+> (Perl
+ Compatible Regular Expressions) is compiled in, which is the default. Such
+ configuration directives do not require regular expressions, but they can be
+ used to increase flexibility by matching a pattern with wild-cards against
+ URLs.</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 book ;-)</P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"Regular expressions"</SPAN
+> is a way of matching one character
+ expression against another to see if it matches or not. One of the
+ <SPAN
+CLASS="QUOTE"
+>"expressions"</SPAN
+> is a literal string of readable characters
+ (letter, numbers, etc), and the other is a complex string of literal
+ characters combined with wild-cards, and other special characters, called
+ meta-characters. The <SPAN
+CLASS="QUOTE"
+>"meta-characters"</SPAN
+> have special meanings and
+ are used to build the complex pattern to be matched against. Perl Compatible
+ Regular Expressions is an enhanced form of the regular expression language
+ with backward compatibility.</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
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>.</I
+> - 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
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>?</I
+> - The preceding character or expression is matched ZERO or ONE
+ times. Either/or.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>+</I
+> - The preceding character or expression is matched ONE or MORE
+ times.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>*</I
+> - The preceding character or expression is matched ZERO or MORE
+ times.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>\</I
+> - 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.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>[]</I
+> - Characters enclosed in brackets will be matched if
+ any of the enclosed characters are encountered.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>()</I
+> - parentheses are used to group a sub-expression,
+ or multiple sub-expressions.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>|</I
+> - 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.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> <I
+CLASS="EMPHASIS"
+>s/string1/string2/g</I
+> - This is used to rewrite strings of text.
+ <SPAN
+CLASS="QUOTE"
+>"string1"</SPAN
+> is replaced by <SPAN
+CLASS="QUOTE"
+>"string2"</SPAN
+> in this
+ example.
+ </TD
+></TR
+></TBODY
+></TABLE
+><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
+> <I
+CLASS="EMPHASIS"
+><TT
+CLASS="LITERAL"
+>/.*/banners/.*</TT
+></I
+> - 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
+> A now something a little more complex:</P
+><P
+> <I
+CLASS="EMPHASIS"
+><TT
+CLASS="LITERAL"
+>/.*/adv((er)?ts?|ertis(ing|ements?))?/</TT
+></I
+> -
+ 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 <I
+CLASS="EMPHASIS"
+>must
+ match</I
+> 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
+>
+ <I
+CLASS="EMPHASIS"
+>OR</I
+> <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
+> <I
+CLASS="EMPHASIS"
+><TT
+CLASS="LITERAL"
+>/.*/advert[0-9]+\.(gif|jpe?g)</TT
+></I
+> - 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
+> <I
+CLASS="EMPHASIS"
+><TT
+CLASS="LITERAL"
+>s/microsoft(?!.com)/MicroSuck/i</TT
+></I
+> - This is
+ a substitution. <SPAN
+CLASS="QUOTE"
+>"MicroSuck"</SPAN
+> will replace any occurrence of
+ <SPAN
+CLASS="QUOTE"
+>"microsoft"</SPAN
+>. The <SPAN
+CLASS="QUOTE"
+>"i"</SPAN
+> at the end of the expression
+ means ignore case. The <SPAN
+CLASS="QUOTE"
+>"(?!.com)"</SPAN
+> means
+ the match should fail if <SPAN
+CLASS="QUOTE"
+>"microsoft"</SPAN
+> is followed by
+ <SPAN
+CLASS="QUOTE"
+>".com"</SPAN
+>. In other words, this acts like a <SPAN
+CLASS="QUOTE"
+>"NOT"</SPAN
+>
+ modifier. In case this is a hyperlink, we don't want to break it ;-).</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://www.perldoc.com/perl5.6/pod/perlre.html"
+TARGET="_top"
+>http://www.perldoc.com/perl5.6/pod/perlre.html</A
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN1587"
+>9.2. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>'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="AEN1602"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>
+ <A
+HREF="http://config.privoxy.org/"
+TARGET="_top"
+>http://config.privoxy.org/</A
+>
+ </P
+></BLOCKQUOTE
+><P
+> Alternately, this may be reached at <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+>, but this
+ variation may not work as reliably as the above in some configurations.
+ </P
+></LI
+><LI
+><P
+>
+ Show information about the current configuration:
+ </P
+><A
+NAME="AEN1609"
+></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="AEN1614"
+></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 client's request headers:
+ </P
+><A
+NAME="AEN1619"
+></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="AEN1624"
+></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. In this case, <SPAN
+CLASS="QUOTE"
+>"Privoxy"</SPAN
+> continues
+ to run, but only as a pass-through proxy, with no actions taking place:
+ </P
+><A
+NAME="AEN1630"
+></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="AEN1634"
+></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="AEN1637"
+></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
+><LI
+><P
+>
+ Edit the actions list file:
+ </P
+><A
+NAME="AEN1642"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>
+ <A
+HREF="http://config.privoxy.org/edit-actions"
+TARGET="_top"
+>http://config.privoxy.org/edit-actions</A
+>
+ </P
+></BLOCKQUOTE
+></LI
+></UL
+></P
+><P
+> These may be bookmarked for quick reference. </P
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="BOOKMARKLETS"
+>9.2.1. Bookmarklets</A
+></H3
+><P
+> Here are some bookmarklets to allow you to easily access a
+ <SPAN
+CLASS="QUOTE"
+>"mini"</SPAN
+> version of this page. 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 will 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 favourites/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"
+>Enable Privoxy</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"
+>Disable Privoxy</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"
+>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"
+>View Privoxy Status</A
+>
+ </P
+></LI
+></UL
+></P
+><P
+> Credit: The site which gave me 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="ACTIONSANAT"
+>9.3. Anatomy of an Action</A
+></H2
+><P
+> The way <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> applies <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+>
+ and <SPAN
+CLASS="QUOTE"
+>"filters"</SPAN
+> 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
+ <I
+CLASS="EMPHASIS"
+>see</I
+> just what <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is
+ doing. Especially, if something <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is doing
+ is causing us a problem inadvertantly. It can be a little daunting to look at
+ the actions and filters files themselves, since they tend to be filled with
+ <SPAN
+CLASS="QUOTE"
+>"regular expressions"</SPAN
+> whose consequences are not always
+ so obvious. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> 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 from the <TT
+CLASS="FILENAME"
+>default.filter</TT
+> file! 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 look at an example, <A
+HREF="http://google.com"
+TARGET="_top"
+>google.com</A
+>,
+ one section at a time:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> System default actions:
+
+ { -add-header -block -deanimate-gifs -downgrade -fast-redirects -filter
+ -hide-forwarded -hide-from -hide-referer -hide-user-agent -image
+ -image-blocker -limit-connect -no-compression -no-cookies-keep
+ -no-cookies-read -no-cookies-set -no-popups -vanilla-wafer -wafer }
+
+ </PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> This is the top section, and only tells us of the compiled in defaults. This
+ is basically what <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> would do if there
+ were not any <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> defined, i.e. it does nothing. Every action
+ is disabled. This is not particularly informative for our purposes here. OK,
+ next section:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> Matches for http://google.com:
+
+ { -add-header -block +deanimate-gifs -downgrade +fast-redirects
+ +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}
+ +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal}
+ +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge}
+ -hide-user-agent -image +image-blocker{blank} +no-compression
+ +no-cookies-keep -no-cookies-read -no-cookies-set +no-popups
+ -vanilla-wafer -wafer }
+ /
+
+ { -no-cookies-keep -no-cookies-read -no-cookies-set }
+ .google.com
+
+ { -fast-redirects }
+ .google.com
+
+ </PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> This is much more informative, and tells us how we have defined our
+ <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+>, and which ones match for our example,
+ <SPAN
+CLASS="QUOTE"
+>"google.com"</SPAN
+>. The first grouping shows our default
+ settings, which would apply to all URLs. 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 applies to all URLs as signified by the single forward
+ slash -- <SPAN
+CLASS="QUOTE"
+>"/"</SPAN
+>.
+ </P
+><P
+> These are the default actions we have enabled. But we can define additional
+ actions that would be exceptions to these general rules, and then list
+ specific URLs that these exceptions would apply to. Last match wins.
+ Just below this then are two explict matches for <SPAN
+CLASS="QUOTE"
+>".google.com"</SPAN
+>.
+ The first is negating our various cookie blocking actions (i.e. we will allow
+ cookies here). The second is allowing <SPAN
+CLASS="QUOTE"
+>"fast-redirects"</SPAN
+>. 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
+>. So, apparently, we have these actions defined
+ somewhere in the lower part of our actions file, and
+ <SPAN
+CLASS="QUOTE"
+>"google.com"</SPAN
+> is referenced in these sections. </P
+><P
+> And now we pull it altogether in the bottom section and summarize how
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is appying 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:
+
+ -add-header -block -deanimate-gifs -downgrade -fast-redirects
+ +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}
+ +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal}
+ +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge}
+ -hide-user-agent -image +image-blocker{blank} -limit-connect +no-compression
+ -no-cookies-keep -no-cookies-read -no-cookies-set +no-popups -vanilla-wafer
+ -wafer
+
+ </PRE
+></TD
+></TR
+></TABLE
+></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 +image }
+ .ad.doubleclick.net
+
+ { +block +image }
+ ad*.
+
+ { +block +image }
+ .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. Each as an <SPAN
+CLASS="QUOTE"
+>"+block +image"</SPAN
+>,
+ which is the expanded form of one of our aliases that had been defined as:
+ <SPAN
+CLASS="QUOTE"
+>"+imageblock"</SPAN
+>. (<SPAN
+CLASS="QUOTE"
+>"Aliases"</SPAN
+> 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 <SPAN
+CLASS="QUOTE"
+>"+block"</SPAN
+> <I
+CLASS="EMPHASIS"
+>and</I
+> an
+ <SPAN
+CLASS="QUOTE"
+>"+image"</SPAN
+>. The custom alias <SPAN
+CLASS="QUOTE"
+>"+imageblock"</SPAN
+> does this
+ for us.</P
+><P
+> One last example. Let's try <SPAN
+CLASS="QUOTE"
+>"http://www.rhapsodyk.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.rhapsodyk.net/adsl/HOWTO/:
+
+ { -add-header -block +deanimate-gifs -downgrade +fast-redirects
+ +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}
+ +filter{webbugs} +filter{nimda} +filter{banners-by-size} +filter{hal}
+ +filter{fun} +hide-forwarded +hide-from{block} +hide-referer{forge}
+ -hide-user-agent -image +image-blocker{blank} +no-compression
+ +no-cookies-keep -no-cookies-read -no-cookies-set +no-popups
+ -vanilla-wafer -wafer }
+ /
+
+ { +block +image }
+ /ads
+
+ </PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Ooops, the <SPAN
+CLASS="QUOTE"
+>"/adsl/"</SPAN
+> is matching <SPAN
+CLASS="QUOTE"
+>"/ads"</SPAN
+>! But
+ we did not want this at all! Now we see why we get the blank page. We could
+ now add a new action below this that explictly does <I
+CLASS="EMPHASIS"
+>not</I
+>
+ block (-block) pages with <SPAN
+CLASS="QUOTE"
+>"adsl"</SPAN
+>. 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 ;-) Be sure to flush your browser's caches when
+ making such changes. 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 }
+ /adsl
+
+ </PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> That actually was very telling and pointed us quickly to where the problem
+ was. If you don't get this kind of match, then it means one of the default
+ rules in the first section is causing the problem. This would require some
+ guesswork, and maybe a little trial and error to isolate the offending rule.
+ One likely cause would be one of the <SPAN
+CLASS="QUOTE"
+>"{+filter}"</SPAN
+> actions. Try
+ adding the URL for the site to one of aliases that turn off <SPAN
+CLASS="QUOTE"
+>"+filter"</SPAN
+>:</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"
+>"{shop}"</SPAN
+> is an <SPAN
+CLASS="QUOTE"
+>"alias"</SPAN
+> that expands to
+ <SPAN
+CLASS="QUOTE"
+>"{ -filter -no-cookies -no-cookies-keep }"</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
+><P
+> <SPAN
+CLASS="QUOTE"
+>"{fragile}"</SPAN
+> is an alias that disables most actions. This can be
+ used as a last resort for problem sites. Remember to flush caches! If this
+ still does not work, you will have to go through the remaining actions one by
+ one to find which one(s) is causing the problem.</P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="seealso.html"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+>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
+>
\ No newline at end of file
--- /dev/null
+<HTML
+><HEAD
+><TITLE
+>Privoxy Configuration</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
+REL="HOME"
+TITLE="Privoxy User Manual"
+HREF="index.html"><LINK
+REL="PREVIOUS"
+TITLE="Quickstart to Using Privoxy"
+HREF="quickstart.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"></HEAD
+><BODY
+CLASS="SECT1"
+BGCOLOR="#EEEEEE"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>Privoxy User Manual</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="quickstart.html"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="contact.html"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="CONFIGURATION"
+>5. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> 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="AEN275"
+>5.1. Controlling <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> with Your Web Browser</A
+></H2
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can be reached by the special
+ URL <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+> (or alternately
+ <A
+HREF="http://config.privoxy.org/"
+TARGET="_top"
+>http://config.privoxy.org/</A
+>),
+ which is an internal page. You will see the following section: </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> Please choose from the following options:
+
+ * Show information about the current configuration
+ * Show the source code version numbers
+ * Show the client's request headers.
+ * Show which actions apply to a URL and why
+ * Toggle Privoxy on or off
+ * Edit the actions list
+
+ </PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> This should be self-explanatory. Note the last item is an editor for the
+ <SPAN
+CLASS="QUOTE"
+>"actions list"</SPAN
+>, which is where much of 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.
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> will automatically detect any changes
+ to these files.</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, or just to test if
+ a site misbehaves, 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 filtering is disabled. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN293"
+>5.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 possibly
+ aggressive by some standards. For the time being, there are only three
+ default configuration files (this may change in time):</P
+><P
+> <P
+></P
+><UL
+><LI
+><P
+> The main configuration file is named <TT
+CLASS="FILENAME"
+>config</TT
+>
+ on Linux, Unix, BSD, OS/2, and AmigaOS and <TT
+CLASS="FILENAME"
+>config.txt</TT
+>
+ on Windows.
+ </P
+></LI
+><LI
+><P
+> The <TT
+CLASS="FILENAME"
+>default.action</TT
+> file is used to define various
+ <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> relating to images, banners, pop-ups, access
+ restrictions, banners and cookies. There is a CGI based editor for this
+ file that can be accessed via <A
+HREF="http://p.p"
+TARGET="_top"
+>http://p.p</A
+>. (Other actions
+ files are included as well with differing levels of filtering
+ and blocking, e.g. <TT
+CLASS="FILENAME"
+>basic.action</TT
+>.)
+ </P
+></LI
+><LI
+><P
+> The <TT
+CLASS="FILENAME"
+>default.filter</TT
+> file 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.
+ </P
+></LI
+></UL
+></P
+><P
+> <TT
+CLASS="FILENAME"
+>default.action</TT
+> and <TT
+CLASS="FILENAME"
+>default.filter</TT
+>
+ can use Perl style regular expressions for maximum flexibility. All files use
+ the <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="LITERAL"
+>#</TT
+>"</SPAN
+> character to denote a comment. Such
+ lines are not processed by <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>. 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
+> should detect such changes
+ automatically.</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
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="AEN324"
+>5.3. The Main Configuration File</A
+></H2
+><P
+> Again, the main configuration file is named <TT
+CLASS="FILENAME"
+>config</TT
+> on
+ Linux/Unix/BSD and OS/2, and <TT
+CLASS="FILENAME"
+>config.txt</TT
+> on Windows.
+ Configuration lines consist of an initial keyword followed by a list of
+ values, all separated by whitespace (any number of spaces or tabs). For
+ example:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>blockfile blocklist.ini</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Indicates that the blockfile is named <SPAN
+CLASS="QUOTE"
+>"blocklist.ini"</SPAN
+>. (A
+ default installation does not use this.)</P
+><P
+> A <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="LITERAL"
+>#</TT
+>"</SPAN
+> indicates a comment. Any part of a
+ line following a <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="LITERAL"
+>#</TT
+>"</SPAN
+> is ignored, except if
+ the <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="LITERAL"
+>#</TT
+>"</SPAN
+> is preceded by a
+ <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="LITERAL"
+>\</TT
+>"</SPAN
+>.</P
+><P
+> Thus, by placing a <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="LITERAL"
+>#</TT
+>"</SPAN
+> at the start of an
+ existing configuration line, you can make it a comment and it will be treated
+ as if it weren't there. This is called <SPAN
+CLASS="QUOTE"
+>"commenting out"</SPAN
+> an
+ option and can be useful to turn off features: If you comment out the
+ <SPAN
+CLASS="QUOTE"
+>"logfile"</SPAN
+> line, <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> will not
+ log to a file at all. Watch for the <SPAN
+CLASS="QUOTE"
+>"default:"</SPAN
+> section in each
+ explanation to see what happens if the option is left unset (or commented
+ out). </P
+><P
+> Long lines can be continued on the next line by using a
+ <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="LITERAL"
+>\</TT
+>"</SPAN
+> as the very last character.</P
+><P
+> There are various aspects of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> behavior
+ that can be tuned.</P
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="AEN357"
+>5.3.1. Defining Other Configuration Files</A
+></H3
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> can use a number of other files to tell it
+ what ads to block, what cookies to accept, and perform other functions. This
+ section of the configuration file tells <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ where to find all those other files. </P
+><P
+> On <SPAN
+CLASS="APPLICATION"
+>Windows</SPAN
+> and <SPAN
+CLASS="APPLICATION"
+>AmigaOS</SPAN
+>,
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> looks for these files in the same
+ directory as the executable. On Unix and OS/2,
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> looks for these files in the current
+ working directory. In either case, an absolute path name can be used to
+ avoid problems.</P
+><P
+> When development goes modular and multi-user, the blocker, filter, and
+ per-user config will be stored in subdirectories of <SPAN
+CLASS="QUOTE"
+>"confdir"</SPAN
+>.
+ For now, only <TT
+CLASS="FILENAME"
+>confdir/templates</TT
+> is used for storing HTML
+ templates for CGI results. </P
+><P
+> The location of the configuration files:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>confdir /etc/privoxy</I
+> # No trailing /, please.<br>
+ </P
+>
+ </TT
+></P
+><P
+> The directory where all logging (i.e. <TT
+CLASS="FILENAME"
+>logfile</TT
+> and
+ <TT
+CLASS="FILENAME"
+>jarfile</TT
+>) takes place. No trailing
+ <SPAN
+CLASS="QUOTE"
+>"<TT
+CLASS="LITERAL"
+>/</TT
+>"</SPAN
+>, please: </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>logdir /var/log/privoxy</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Note that all file specifications below are relative to
+ the above two directories!</P
+><P
+> The <SPAN
+CLASS="QUOTE"
+>"default.action"</SPAN
+> file contains patterns to specify the
+ actions to apply to requests for each site. Default: Cookies to and from all
+ destinations are kept only during the current browser session (i.e. they are
+ not saved to disk). Pop-ups are disabled for all sites. All sites are
+ filtered through selected sections of <SPAN
+CLASS="QUOTE"
+>"default.filter"</SPAN
+>. No sites
+ are blocked. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> displays a checkboard type
+ pattern for filtered ads and other images. The syntax of this file is
+ explained in detail <A
+HREF="configuration.html#ACTIONSFILE"
+>below</A
+>. Other
+ <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> files are included, and you are free to use any of
+ them. They have varying degrees of aggressiveness.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>actionsfile default.action</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> The <SPAN
+CLASS="QUOTE"
+>"default.filter"</SPAN
+> file contains content modification rules
+ that use <SPAN
+CLASS="QUOTE"
+>"regular expressions"</SPAN
+>. These rules permit powerful
+ changes on the content of Web pages, e.g., you could disable your favorite
+ JavaScript annoyances, re-write the actual displayed text, or just have some
+ fun replacing <SPAN
+CLASS="QUOTE"
+>"Microsoft"</SPAN
+> with <SPAN
+CLASS="QUOTE"
+>"MicroSuck"</SPAN
+> wherever
+ it appears on a Web page. Default: whatever the developers are playing with
+ :-/</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. (It does not really take longer, but seems that way since
+ the page is not incrementally displayed.) This effect will be more noticeable
+ on slower connections. </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>filterfile default.filter</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> The logfile is where all logging and error messages are written. 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) but in most cases you probably will never look at it.</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 Redhat, a <B
+CLASS="COMMAND"
+>logrotate</B
+>
+ script has been included.</P
+><P
+> On SuSE Linux systems, you can place a line like <SPAN
+CLASS="QUOTE"
+>"/var/log/privoxy.*
+ +1024k 644 nobody.nogroup"</SPAN
+> in <TT
+CLASS="FILENAME"
+>/etc/logfiles</TT
+>, with
+ the effect that cron.daily will automatically archive, gzip, and empty the
+ log, when it exceeds 1M size.</P
+><P
+> Default: Log to the a file named <TT
+CLASS="FILENAME"
+>logfile</TT
+>.
+ Comment out to disable logging.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>logfile logfile</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> The <SPAN
+CLASS="QUOTE"
+>"jarfile"</SPAN
+> defines where
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> stores the cookies it intercepts. Note
+ that if you use a <SPAN
+CLASS="QUOTE"
+>"jarfile"</SPAN
+>, it may grow quite large. Default:
+ Don't store intercepted cookies.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>#jarfile jarfile</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> If you specify a <SPAN
+CLASS="QUOTE"
+>"trustfile"</SPAN
+>,
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> will only allow access to sites that
+ are named in the trustfile. You can also mark sites as trusted referrers,
+ with the effect that access to untrusted sites will be granted, if a link
+ from a trusted referrer was used. The link target will then be added to the
+ <SPAN
+CLASS="QUOTE"
+>"trustfile"</SPAN
+>. This is a very restrictive feature that typical
+ users most probably want to leave disabled. Default: Disabled, don't use the
+ trust mechanism.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>#trustfile trust</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> If you use the trust mechanism, it is a good idea to write up some on-line
+ documentation about your blocking policy and to specify the URL(s) here. They
+ will appear on the page that your users receive when they try to access
+ untrusted content. Use multiple times for multiple URLs. Default: Don't
+ display links on the <SPAN
+CLASS="QUOTE"
+>"untrusted"</SPAN
+> info page.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>trust-info-url http://www.example.com/why_we_block.html</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>trust-info-url http://www.example.com/what_we_allow.html</I
+><br>
+ </P
+>
+ </TT
+></P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="AEN450"
+>5.3.2. Other Configuration Options</A
+></H3
+><P
+> This part of the configuration file contains options that control how
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> operates.</P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"Admin-address"</SPAN
+> should be set to the email address of the proxy
+ administrator. It is used in many of the proxy-generated pages. Default:
+ fill@me.in.please.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>#admin-address fill@me.in.please</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"Proxy-info-url"</SPAN
+> can be set to a URL that contains more info
+ about this <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> installation, it's
+ configuration and policies. It is used in many of the proxy-generated pages
+ and its use is highly recommended in multi-user installations, since your
+ users will want to know why certain content is blocked or modified. Default:
+ Don't show a link to on-line documentation.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>proxy-info-url http://www.example.com/proxy.html</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"Listen-address"</SPAN
+> specifies the address and port where
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> will listen for connections from your
+ Web browser. The default is to listen on the localhost port 8118, and
+ this is suitable for most users. (In your web browser, under proxy
+ configuration, list the proxy server as <SPAN
+CLASS="QUOTE"
+>"localhost"</SPAN
+> and the
+ port as <SPAN
+CLASS="QUOTE"
+>"8118"</SPAN
+>).</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. The syntax is
+ <SPAN
+CLASS="QUOTE"
+>"listen-address [<ip-address>]:<port>"</SPAN
+>. If you leave
+ out the IP address, <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> will bind to all
+ interfaces (addresses) on your machine and may become reachable from the
+ Internet. In that case, consider using access control lists (acl's) (see
+ <SPAN
+CLASS="QUOTE"
+>"aclfile"</SPAN
+> above), or a firewall.</P
+><P
+> For example, 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
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>listen-address 192.168.0.1:8118</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> If you want it to listen on all addresses (including the outside
+ connection):</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>listen-address :8118</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> If you do this, consider using ACLs (see <SPAN
+CLASS="QUOTE"
+>"aclfile"</SPAN
+> above). Note:
+ you will need to point your browser(s) to the address and port that you have
+ configured here. Default: localhost:8118 (127.0.0.1:8118).</P
+><P
+> The debug option sets the level of debugging information to log in the
+ logfile (and to the console in the Windows version). A debug level of 1 is
+ informative because it will show you each request as it happens. Higher
+ levels of debug are probably only of interest to developers.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> debug 1 # GPC = show each GET/POST/CONNECT request<br>
+ debug 2 # CONN = show each connection status<br>
+ debug 4 # IO = show I/O status<br>
+ debug 8 # HDR = show header parsing<br>
+ debug 16 # LOG = log all data into the logfile<br>
+ debug 32 # FRC = debug force feature<br>
+ debug 64 # REF = debug regular expression filter <br>
+ debug 128 # = debug fast redirects<br>
+ debug 256 # = debug GIF de-animation<br>
+ debug 512 # CLF = Common Log Format<br>
+ debug 1024 # = debug kill pop-ups<br>
+ debug 4096 # INFO = Startup banner and warnings.<br>
+ debug 8192 # ERROR = Non-fatal errors<br>
+ </P
+>
+ </TT
+></P
+><P
+> It is <I
+CLASS="EMPHASIS"
+>highly recommended</I
+> that you enable ERROR
+ reporting (debug 8192), at least until v3.0 is released.</P
+><P
+> The reporting of FATAL errors (i.e. ones which crash
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>) is always on and cannot be disabled.</P
+><P
+> If you want to use CLF (Common Log Format), you should set <SPAN
+CLASS="QUOTE"
+>"debug
+ 512"</SPAN
+> ONLY, do not enable anything else.</P
+><P
+> Multiple <SPAN
+CLASS="QUOTE"
+>"debug"</SPAN
+> directives, are OK - they're logical-OR'd
+ together. </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>debug 15 # same as setting the first 4 listed above</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Default:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>debug 1 # URLs</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>debug 4096 # Info</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>debug 8192 # Errors - *we highly recommended enabling this*</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> normally uses
+ <SPAN
+CLASS="QUOTE"
+>"multi-threading"</SPAN
+>, a software technique that permits it to
+ handle many different requests simultaneously. In some cases you may wish to
+ disable this -- particularly if you're trying to debug a problem. The
+ <SPAN
+CLASS="QUOTE"
+>"single-threaded"</SPAN
+> option forces
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> to handle requests sequentially.
+ Default: Multi-threaded mode.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>#single-threaded</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"toggle"</SPAN
+> allows you to temporarily disable all
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+> filtering. Just set <SPAN
+CLASS="QUOTE"
+>"toggle
+ 0"</SPAN
+>.</P
+><P
+> The Windows version of <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> puts an icon in
+ the system tray, which also allows you to change this option. If you
+ right-click on that icon (or select the <SPAN
+CLASS="QUOTE"
+>"Options"</SPAN
+> menu), one
+ choice is <SPAN
+CLASS="QUOTE"
+>"Enable"</SPAN
+>. Clicking on enable toggles
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> on and off. This is useful if you want
+ to temporarily disable <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>, e.g., to access
+ a site that requires cookies which you would otherwise have blocked. This can also
+ be toggled via a web browser at the <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ internal address of <A
+HREF="http://p.p"
+TARGET="_top"
+>http://p.p</A
+> on
+ any platform.</P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"toggle 1"</SPAN
+> means <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> runs
+ normally, <SPAN
+CLASS="QUOTE"
+>"toggle 0"</SPAN
+> means that
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> becomes a non-anonymizing non-blocking
+ proxy. Default: 1 (on). </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>toggle 1</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> For content filtering, i.e. the <SPAN
+CLASS="QUOTE"
+>"+filter"</SPAN
+> and
+ <SPAN
+CLASS="QUOTE"
+>"+deanimate-gif"</SPAN
+> 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.</P
+><P
+> The <SPAN
+CLASS="APPLICATION"
+>buffer-limit</SPAN
+> option lets you set the maximum
+ size in Kbytes that each buffer may use. When the documents buffer exceeds
+ this size, it is flushed to the client unfiltered and no further attempt to
+ filter the rest of it is made. Remember that there may multiple threads
+ running, which might require increasing the <SPAN
+CLASS="QUOTE"
+>"buffer-limit"</SPAN
+>
+ Kbytes <I
+CLASS="EMPHASIS"
+>each</I
+>, unless you have enabled
+ <SPAN
+CLASS="QUOTE"
+>"single-threaded"</SPAN
+> above.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>buffer-limit 4069</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> To enable the web-based <TT
+CLASS="FILENAME"
+>default.action</TT
+> file editor set
+ <SPAN
+CLASS="APPLICATION"
+>enable-edit-actions</SPAN
+> to 1, or 0 to disable. Note
+ that you must have compiled <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> with
+ support for this feature, otherwise this option has no effect. This
+ internal page can be reached at <A
+HREF="http://p.p"
+TARGET="_top"
+>http://p.p</A
+>.
+ </P
+><P
+> Security note: If this is enabled, anyone who can use the proxy
+ can edit the actions file, and their changes will affect all users.
+ For shared proxies, you probably want to disable this. Default: enabled.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>enable-edit-actions 1</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Allow <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> to be toggled on and off
+ remotely, using your web browser. Set <SPAN
+CLASS="QUOTE"
+>"enable-remote-toggle"</SPAN
+>to
+ 1 to enable, and 0 to disable. Note that you must have compiled
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> with support for this feature,
+ otherwise this option has no effect.</P
+><P
+> Security note: If this is enabled, anyone who can use the proxy can toggle
+ it on or off (see <A
+HREF="http://p.p"
+TARGET="_top"
+>http://p.p</A
+>), and
+ their changes will affect all users. For shared proxies, you probably want to
+ disable this. Default: enabled.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>enable-remote-toggle 1</I
+><br>
+ </P
+>
+ </TT
+></P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="AEN587"
+>5.3.3. Access Control List (ACL)</A
+></H3
+><P
+> Access controls are included at the request of some ISPs and systems
+ administrators, and are not usually needed by individual users. Please note
+ the warnings in the FAQ that this proxy is not intended to be a substitute
+ for a firewall or to encourage anyone to defer addressing basic security
+ weaknesses.</P
+><P
+> If no access settings are specified, the proxy talks to anyone that
+ connects. If any access settings file are specified, then the proxy
+ talks only to IP addresses permitted somewhere in this file and not
+ denied later in this file.</P
+><P
+> Summary -- if using an ACL:</P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> Client must have permission to receive service.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> LAST match in ACL wins.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+> Default behavior is to deny service.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+><P
+> The syntax for an entry in the Access Control List is:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> ACTION SRC_ADDR[/SRC_MASKLEN] [ DST_ADDR[/DST_MASKLEN] ]<br>
+ </P
+>
+ </TT
+></P
+><P
+> Where the individual fields are:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>ACTION</I
+> = <SPAN
+CLASS="QUOTE"
+>"permit-access"</SPAN
+> or <SPAN
+CLASS="QUOTE"
+>"deny-access"</SPAN
+><br>
+<br>
+ <I
+CLASS="EMPHASIS"
+>SRC_ADDR</I
+> = client hostname or dotted IP address<br>
+ <I
+CLASS="EMPHASIS"
+>SRC_MASKLEN</I
+> = number of bits in the subnet mask for the source<br>
+<br>
+ <I
+CLASS="EMPHASIS"
+>DST_ADDR</I
+> = server or forwarder hostname or dotted IP address<br>
+ <I
+CLASS="EMPHASIS"
+>DST_MASKLEN</I
+> = number of bits in the subnet mask for the target<br>
+ </P
+>
+ </TT
+></P
+><P
+>
+ The field separator (FS) is whitespace (space or tab).</P
+><P
+> IMPORTANT NOTE: If <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is using a
+ forwarder (see below) or a gateway for a particular destination URL, the
+ <TT
+CLASS="LITERAL"
+>DST_ADDR</TT
+> that is examined is the address of the forwarder
+ or the gateway and <I
+CLASS="EMPHASIS"
+>NOT</I
+> 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 address of the
+ ultimate target (that's often what gateways are used for).</P
+><P
+> Here are a few examples to show how the ACL features work:</P
+><P
+> <SPAN
+CLASS="QUOTE"
+>"localhost"</SPAN
+> is OK -- no DST_ADDR implies that
+ <I
+CLASS="EMPHASIS"
+>ALL</I
+> destination addresses are OK:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>permit-access localhost</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> A silly example to illustrate permitting any host on the class-C subnet with
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> to go anywhere:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>permit-access www.privoxy.com/24</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Except deny one particular IP address from using it at all:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>deny-access ident.privoxy.com</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> You can also specify an explicit network address and subnet mask.
+ Explicit addresses do not have to be resolved to be used.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>permit-access 207.153.200.0/24</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> A subnet mask of 0 matches anything, so the next line permits everyone.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>permit-access 0.0.0.0/0</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Note, you <I
+CLASS="EMPHASIS"
+>cannot</I
+> say:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>permit-access .org</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> to allow all *.org domains. Every IP address listed must resolve fully.</P
+><P
+> An ISP may want to provide a <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> that is
+ accessible by <SPAN
+CLASS="QUOTE"
+>"the world"</SPAN
+> and yet restrict use of some of their
+ private content to hosts on its internal network (i.e. its own subscribers).
+ Say, for instance the ISP owns the Class-B IP address block 123.124.0.0 (a 16
+ bit netmask). This is how they could do it:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>permit-access 0.0.0.0/0 0.0.0.0/0</I
+> # other clients can go anywhere <br>
+ # with the following exceptions:<br>
+ <br>
+ <I
+CLASS="EMPHASIS"
+>deny-access</I
+> 0.0.0.0/0 123.124.0.0/16 # block all external requests for<br>
+ # sites on the ISP's network<br>
+<br>
+ <I
+CLASS="EMPHASIS"
+>permit 0.0.0.0/0 www.my_isp.com</I
+> # except for the ISP's main <br>
+ # web site<br>
+<br>
+ <I
+CLASS="EMPHASIS"
+>permit 123.124.0.0/16 0.0.0.0/0</I
+> # the ISP's clients can go <br>
+ # anywhere<br>
+ </P
+>
+ </TT
+></P
+><P
+> Note that if some hostnames are listed with multiple IP addresses,
+ the primary value returned by DNS (via gethostbyname()) is used. Default:
+ Anyone can access the proxy.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="FORWARDING"
+>5.3.4. Forwarding</A
+></H3
+><P
+> This feature allows chaining of HTTP requests via multiple proxies.
+ It can be used to better protect privacy and confidentiality when
+ accessing specific domains by routing requests to those domains
+ to a special purpose filtering proxy such as lpwa.com. Or to use
+ a caching proxy to speed up browsing.</P
+><P
+> It can also be used in an environment with multiple networks to route
+ requests via multiple gateways allowing transparent access to multiple
+ networks without having to modify browser configurations.</P
+><P
+> Also specified here are SOCKS proxies. <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>
+ SOCKS 4 and SOCKS 4A. The difference is that SOCKS 4A will resolve the target
+ hostname using DNS on the SOCKS server, not our local DNS client.</P
+><P
+> The syntax of each line is:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward target_domain[:port] http_proxy_host[:port]</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>forward-socks4 target_domain[:port] socks_proxy_host[:port] http_proxy_host[:port]</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>forward-socks4a target_domain[:port] socks_proxy_host[:port] http_proxy_host[:port]</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> If http_proxy_host is <SPAN
+CLASS="QUOTE"
+>"."</SPAN
+>, then requests are not forwarded to a
+ HTTP proxy but are made directly to the web servers.</P
+><P
+> Lines are checked in sequence, and the last match wins.</P
+><P
+> There is an implicit line equivalent to the following, which specifies that
+ anything not finding a match on the list is to go out without forwarding
+ or gateway protocol, like so:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward .* . </I
+># implicit<br>
+ </P
+>
+ </TT
+></P
+><P
+> In the following common configuration, everything goes to Lucent's LPWA,
+ except SSL on port 443 (which it doesn't handle):</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward .* lpwa.com:8000</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>forward :443 .</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+>
+ Some users have reported difficulties related to LPWA's use of
+ <SPAN
+CLASS="QUOTE"
+>"."</SPAN
+> as the last element of the domain, and have said that this
+ can be fixed with this:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward lpwa. lpwa.com:8000</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> (NOTE: the syntax for specifying target_domain has changed since the
+ previous paragraph was written -- it will not work now. More information
+ is welcome.)</P
+><P
+> In this fictitious example, everything goes via an ISP's caching proxy,
+ except requests to that ISP:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward .* caching.myisp.net:8000</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>forward myisp.net .</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> For the @home network, we're told the forwarding configuration is this:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward .* proxy:8080</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Also, we're told they insist on getting cookies and JavaScript, so you should
+ allow cookies from home.com. We consider JavaScript a potential security risk.
+ Java need not be enabled.</P
+><P
+> In this example direct connections are made to all <SPAN
+CLASS="QUOTE"
+>"internal"</SPAN
+>
+ domains, but everything else goes through Lucent's LPWA by way of the
+ company's SOCKS gateway to the Internet.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward-socks4 .* lpwa.com:8000 firewall.my_company.com:1080</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>forward my_company.com .</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> This is how you could set up a site that always uses SOCKS but no forwarders:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward-socks4a .* . firewall.my_company.com:1080</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> An advanced example for network administrators:</P
+><P
+> If you have links to multiple ISPs that provide various special content to
+ their subscribers, you can configure forwarding to pass requests to the
+ specific host that's connected to that ISP so that everybody can see all
+ of the content on all of the ISPs.</P
+><P
+> This is a bit tricky, but here's an example:</P
+><P
+> host-a has a PPP connection to isp-a.com. And host-b has a PPP connection to
+ isp-b.com. host-a can run a <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> proxy with
+ forwarding like this: </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward .* .</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>forward isp-b.com host-b:8118</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> host-b can run a <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> proxy with forwarding
+ like this: </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward .* .</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>forward isp-a.com host-a:8118</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Now, <I
+CLASS="EMPHASIS"
+>anyone</I
+> on the Internet (including users on host-a
+ and host-b) can set their browser's proxy to <I
+CLASS="EMPHASIS"
+>either</I
+>
+ host-a or host-b and be able to browse the content on isp-a or isp-b.</P
+><P
+> Here's another practical example, for University of Kent at
+ Canterbury students with a network connection in their room, who
+ need to use the University's Squid web cache.</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>forward *. ssbcache.ukc.ac.uk:3128</I
+> # Use the proxy, except for:<br>
+ <I
+CLASS="EMPHASIS"
+>forward .ukc.ac.uk . </I
+> # Anything on the same domain as us<br>
+ <I
+CLASS="EMPHASIS"
+>forward * . </I
+> # Host with no domain specified<br>
+ <I
+CLASS="EMPHASIS"
+>forward 129.12.*.* . </I
+> # A dotted IP on our /16 network.<br>
+ <I
+CLASS="EMPHASIS"
+>forward 127.*.*.* . </I
+> # Loopback address<br>
+ <I
+CLASS="EMPHASIS"
+>forward localhost.localdomain . </I
+> # Loopback address<br>
+ <I
+CLASS="EMPHASIS"
+>forward www.ukc.mirror.ac.uk . </I
+> # Specific host<br>
+ </P
+>
+ </TT
+></P
+><P
+> If you intend to chain <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> and
+ <SPAN
+CLASS="APPLICATION"
+>squid</SPAN
+> locally, then chain as
+ <TT
+CLASS="LITERAL"
+>browser -> squid -> privoxy</TT
+> is the recommended way. </P
+><P
+>Your squid configuration could then look like this (assuming that the IP
+address of the box is <TT
+CLASS="LITERAL"
+>192.168.0.1</TT
+> ):</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> # Define Privoxy as parent cache <br>
+ <br>
+ cache_peer 192.168.0.1 parent 8118 0 no-query<br>
+<br>
+ # don't listen to the whole world<br>
+ http_port 192.168.0.1:3128<br>
+<br>
+ # define the local lan<br>
+ acl mylocallan src 192.168.0.1-192.168.0.5/255.255.255.255<br>
+<br>
+ # grant access for http to local lan<br>
+ http_access allow mylocallan<br>
+ <br>
+ # Define ACL for protocol FTP <br>
+ acl FTP proto FTP <br>
+<br>
+ # Do not forward ACL FTP to privoxy<br>
+ always_direct allow FTP <br>
+<br>
+ # Do not forward ACL CONNECT (https) to privoxy<br>
+ always_direct allow CONNECT <br>
+<br>
+ # Forward the rest to privoxy<br>
+ never_direct allow all <br>
+ </P
+>
+ </TT
+></P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="AEN785"
+>5.3.5. Windows GUI Options</A
+></H3
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> has a number of options specific to the
+ Windows GUI interface:</P
+><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"
+> <I
+CLASS="EMPHASIS"
+>activity-animation 1</I
+><br>
+ </P
+>
+ </TT
+></P
+><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"
+> <I
+CLASS="EMPHASIS"
+>log-messages 1</I
+><br>
+ </P
+>
+ </TT
+></P
+><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"
+> <I
+CLASS="EMPHASIS"
+>log-buffer-size 1</I
+><br>
+ </P
+>
+ </TT
+></P
+><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"
+> <I
+CLASS="EMPHASIS"
+>log-max-lines 200</I
+><br>
+ </P
+>
+ </TT
+></P
+><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"
+> <I
+CLASS="EMPHASIS"
+>log-highlight-messages 1</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> The font used in the console window:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>log-font-name Comic Sans MS</I
+><br>
+ </P
+>
+ </TT
+></P
+><P
+> Font size used in the console window:</P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>log-font-size 8</I
+><br>
+ </P
+>
+ </TT
+></P
+><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"
+> <I
+CLASS="EMPHASIS"
+>show-on-task-bar 0</I
+><br>
+ </P
+>
+ </TT
+></P
+><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"
+> <I
+CLASS="EMPHASIS"
+>close-button-minimizes 1</I
+><br>
+ </P
+>
+ </TT
+></P
+><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"
+> #hide-console<br>
+ </P
+>
+ </TT
+></P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="ACTIONSFILE"
+>5.4. The Actions File</A
+></H2
+><P
+> The <SPAN
+CLASS="QUOTE"
+>"default.action"</SPAN
+> file (formerly
+ <TT
+CLASS="FILENAME"
+>actionsfile</TT
+> or <TT
+CLASS="FILENAME"
+>ijb.action</TT
+>) is used
+ to define what actions <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> takes, and thus
+ determines how ad images, cookies and various other aspects of HTTP content
+ and transactions are handled. These can be accepted or rejected for all
+ sites, or just those sites you choose. See below for a complete list of
+ actions. </P
+><P
+>
+ Anything you want can blocked, including ads, banners, or just some obnoxious
+ URL that 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).
+ Changes to <TT
+CLASS="FILENAME"
+>default.action</TT
+> should be immediately visible
+ to <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> without the need to restart.</P
+><P
+> Note that some sites may misbehave, or possibly not work at all with some
+ actions. This may require some tinkering with the rules to get the most
+ mileage of <SPAN
+CLASS="APPLICATION"
+>Privoxy's</SPAN
+> features, and still be
+ able to see and enjoy just what you want to. There is no general rule of
+ thumb on these things. There just are too many variables, and sites are
+ always changing. </P
+><P
+> The easiest way to edit the <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> file is with a browser by
+ loading <A
+HREF="http://p.p/"
+TARGET="_top"
+>http://p.p/</A
+>, and then select
+ <SPAN
+CLASS="QUOTE"
+>"Edit Actions List"</SPAN
+>. A text editor can also be used.</P
+><P
+> To determine which actions apply to a request, the URL of the request is
+ compared to all patterns in this file. Every time it matches, the list of
+ applicable actions for the URL is incrementally updated. You can trace
+ this process by visiting <A
+HREF="http://p.p/show-url-info"
+TARGET="_top"
+>http://p.p/show-url-info</A
+>. </P
+><P
+> There are four types of lines in this file: comments (begin with a
+ <SPAN
+CLASS="QUOTE"
+>"#"</SPAN
+> character), actions, aliases and patterns, all of which are
+ explained below, as well as the configuration file syntax that
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> understands. </P
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="AEN887"
+>5.4.1. URL Domain and Path Syntax</A
+></H3
+><P
+> Generally, a pattern has the form <domain>/<path>, where both the
+ <domain> and <path> part are optional. If you only specify a
+ domain part, the <SPAN
+CLASS="QUOTE"
+>"/"</SPAN
+> can be left out:</P
+><P
+> <I
+CLASS="EMPHASIS"
+>www.example.com</I
+> - is a domain only pattern and will match any request to
+ <SPAN
+CLASS="QUOTE"
+>"www.example.com"</SPAN
+>.</P
+><P
+> <I
+CLASS="EMPHASIS"
+>www.example.com/</I
+> - means exactly the same.</P
+><P
+> <I
+CLASS="EMPHASIS"
+>www.example.com/index.html</I
+> - matches only the single
+ document <SPAN
+CLASS="QUOTE"
+>"/index.html"</SPAN
+> on <SPAN
+CLASS="QUOTE"
+>"www.example.com"</SPAN
+>.</P
+><P
+> <I
+CLASS="EMPHASIS"
+>/index.html</I
+> - matches the document <SPAN
+CLASS="QUOTE"
+>"/index.html"</SPAN
+>,
+ regardless of the domain. So would match any page named <SPAN
+CLASS="QUOTE"
+>"index.html"</SPAN
+>
+ on any site.</P
+><P
+> <I
+CLASS="EMPHASIS"
+>index.html</I
+> - matches nothing, since it would be
+ interpreted as a domain name and there is no top-level domain called
+ <SPAN
+CLASS="QUOTE"
+>".html"</SPAN
+>.</P
+><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
+> <I
+CLASS="EMPHASIS"
+>.example.com</I
+> - matches any domain or sub-domain that
+ <I
+CLASS="EMPHASIS"
+>ENDS</I
+> in <SPAN
+CLASS="QUOTE"
+>".example.com"</SPAN
+>.</P
+><P
+> <I
+CLASS="EMPHASIS"
+>www.</I
+> - matches any domain that <I
+CLASS="EMPHASIS"
+>STARTS</I
+> with
+ <SPAN
+CLASS="QUOTE"
+>"www"</SPAN
+>.</P
+><P
+> Additionally, there are wild-cards that you can use in the domain names
+ themselves. They work pretty similar to shell wild-cards: <SPAN
+CLASS="QUOTE"
+>"*"</SPAN
+>
+ stands for zero or more arbitrary characters, <SPAN
+CLASS="QUOTE"
+>"?"</SPAN
+> stands for
+ any single character. And you can define character classes in square
+ brackets and they can be freely mixed:</P
+><P
+> <I
+CLASS="EMPHASIS"
+>ad*.example.com</I
+> - 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
+><P
+> <I
+CLASS="EMPHASIS"
+>*ad*.example.com</I
+> - matches all of the above, and then some.</P
+><P
+> <I
+CLASS="EMPHASIS"
+>.?pix.com</I
+> - matches <SPAN
+CLASS="QUOTE"
+>"www.ipix.com"</SPAN
+>,
+ <SPAN
+CLASS="QUOTE"
+>"pictures.epix.com"</SPAN
+>, <SPAN
+CLASS="QUOTE"
+>"a.b.c.d.e.upix.com"</SPAN
+>, etc. </P
+><P
+> <I
+CLASS="EMPHASIS"
+>www[1-9a-ez].example.com</I
+> - matches <SPAN
+CLASS="QUOTE"
+>"www1.example.com"</SPAN
+>,
+ <SPAN
+CLASS="QUOTE"
+>"www4.example.com"</SPAN
+>, <SPAN
+CLASS="QUOTE"
+>"wwwd.example.com"</SPAN
+>,
+ <SPAN
+CLASS="QUOTE"
+>"wwwz.example.com"</SPAN
+>, etc., but <I
+CLASS="EMPHASIS"
+>not</I
+>
+ <SPAN
+CLASS="QUOTE"
+>"wwww.example.com"</SPAN
+>.</P
+><P
+> If <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> was compiled with
+ <SPAN
+CLASS="QUOTE"
+>"pcre"</SPAN
+> support (the default), Perl compatible regular expressions
+ can be used. These are more flexible and powerful than other types
+ of <SPAN
+CLASS="QUOTE"
+>"regular expressions"</SPAN
+>. See the <TT
+CLASS="FILENAME"
+>pcre/docs/</TT
+> directory or <SPAN
+CLASS="QUOTE"
+>"man
+ perlre"</SPAN
+> (also available on <A
+HREF="http://www.perldoc.com/perl5.6/pod/perlre.html"
+TARGET="_top"
+>http://www.perldoc.com/perl5.6/pod/perlre.html</A
+>)
+ for details. A brief discussion of regular expressions is in the
+ <A
+HREF="appendix.html#REGEX"
+>Appendix</A
+>. For instance:</P
+><P
+> <I
+CLASS="EMPHASIS"
+>/.*/advert[0-9]+\.jpe?g</I
+> - would match a URL from any
+ domain, with any path that includes <SPAN
+CLASS="QUOTE"
+>"advert"</SPAN
+> followed
+ immediately by one or more digits, then a <SPAN
+CLASS="QUOTE"
+>"."</SPAN
+> and ending in
+ either <SPAN
+CLASS="QUOTE"
+>"jpeg"</SPAN
+> or <SPAN
+CLASS="QUOTE"
+>"jpg"</SPAN
+>. So we match
+ <SPAN
+CLASS="QUOTE"
+>"example.com/ads/advert2.jpg"</SPAN
+>, and
+ <SPAN
+CLASS="QUOTE"
+>"www.example.com/ads/banners/advert39.jpeg"</SPAN
+>, but not
+ <SPAN
+CLASS="QUOTE"
+>"www.example.com/ads/banners/advert39.gif"</SPAN
+> (no gifs in the
+ example pattern).</P
+><P
+> Please note that matching in the path is case
+ <I
+CLASS="EMPHASIS"
+>INSENSITIVE</I
+> by default, but you can switch to case
+ sensitive at any point in the pattern by using the
+ <SPAN
+CLASS="QUOTE"
+>"(?-i)"</SPAN
+> switch:</P
+><P
+> <I
+CLASS="EMPHASIS"
+>www.example.com/(?-i)PaTtErN.*</I
+> - will match only
+ documents whose path starts with <SPAN
+CLASS="QUOTE"
+>"PaTtErN"</SPAN
+> in
+ <I
+CLASS="EMPHASIS"
+>exactly</I
+> this capitalization.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="AEN963"
+>5.4.2. Actions</A
+></H3
+><P
+> Actions are enabled if preceded with a <SPAN
+CLASS="QUOTE"
+>"+"</SPAN
+>, and disabled if
+ preceded with a <SPAN
+CLASS="QUOTE"
+>"-"</SPAN
+>. Actions are invoked by enclosing the
+ action name in curly braces (e.g. {+some_action}), followed by a list of
+ URLs to which the action applies. There are three classes of actions:</P
+><P
+> <P
+></P
+><UL
+><LI
+><P
+>
+ Boolean (e.g. <SPAN
+CLASS="QUOTE"
+>"+/-block"</SPAN
+>):
+ </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>{+name}</I
+> # enable this action<br>
+ <I
+CLASS="EMPHASIS"
+>{-name}</I
+> # disable this action<br>
+ </P
+>
+ </TT
+>
+ </P
+></LI
+><LI
+><P
+>
+ parameterized (e.g. <SPAN
+CLASS="QUOTE"
+>"+/-hide-user-agent"</SPAN
+>):
+ </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>{+name{param}}</I
+> # enable action and set parameter to <SPAN
+CLASS="QUOTE"
+>"param"</SPAN
+><br>
+ <I
+CLASS="EMPHASIS"
+>{-name}</I
+> # disable action<br>
+ </P
+>
+ </TT
+>
+ </P
+></LI
+><LI
+><P
+>
+ Multi-value (e.g. <SPAN
+CLASS="QUOTE"
+>"{+/-add-header{Name: value}}"</SPAN
+>, <SPAN
+CLASS="QUOTE"
+>"{+/-wafer{name=value}}"</SPAN
+>):
+ </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>{+name{param}}</I
+> # enable action and add parameter <SPAN
+CLASS="QUOTE"
+>"param"</SPAN
+><br>
+ <I
+CLASS="EMPHASIS"
+>{-name{param}}</I
+> # remove the parameter <SPAN
+CLASS="QUOTE"
+>"param"</SPAN
+><br>
+ <I
+CLASS="EMPHASIS"
+>{-name}</I
+> # disable this action totally<br>
+ </P
+>
+ </TT
+>
+ </P
+></LI
+></UL
+></P
+><P
+> If nothing is specified in this 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-anonymizing proxy. You must specifically
+ enable the privacy and blocking features you need (although the
+ provided default <TT
+CLASS="FILENAME"
+>default.action</TT
+> file will
+ give a good starting point).</P
+><P
+> Later defined actions always over-ride earlier ones. So exceptions
+ to any rules you make, should come in the latter part of the file. For
+ multi-valued actions, the actions are applied in the order they are
+ specified.</P
+><P
+> The list of valid <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> <SPAN
+CLASS="QUOTE"
+>"actions"</SPAN
+> are:</P
+><P
+> <P
+></P
+><UL
+><LI
+><P
+>
+ Add the specified HTTP header, which is not checked for validity.
+ You may specify this many times to specify many different headers:
+ </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>+add-header{Name: value}</I
+><br>
+ </P
+>
+ </TT
+>
+ </P
+></LI
+><LI
+><P
+>
+ Block this URL totally. In a default installation, a <SPAN
+CLASS="QUOTE"
+>"blocked"</SPAN
+>
+ URL will result in bright red banner that says <SPAN
+CLASS="QUOTE"
+>"BLOCKED"</SPAN
+>,
+ with a reason why it is being blocked, and an option to see it anyway.
+ The page displayed for this is the <SPAN
+CLASS="QUOTE"
+>"blocked"</SPAN
+> template
+ file.
+ </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>+block</I
+><br>
+ </P
+>
+ </TT
+>
+ </P
+></LI
+><LI
+><P
+>
+ De-animate all animated GIF images, i.e. reduce them to their last frame.
+ This will also shrink the images considerably (in bytes, not pixels!). If
+ the option <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
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>+deanimate-gifs{last}</I
+><br>
+ <I
+CLASS="EMPHASIS"
+>+deanimate-gifs{first}</I
+><br>
+ </P
+>
+ </TT
+>
+ </P
+></LI
+><LI
+><P
+> <SPAN
+CLASS="QUOTE"
+>"+downgrade"</SPAN
+> will downgrade HTTP/1.1 client requests to
+ HTTP/1.0 and downgrade the responses as well. Use this action for servers
+ that use HTTP/1.1 protocol features that
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> doesn't handle well yet. HTTP/1.1
+ is only partially implemented. Default is not to downgrade requests.
+ </P
+><P
+> <TT
+CLASS="LITERAL"
+> <P
+CLASS="LITERALLAYOUT"
+> <I
+CLASS="EMPHASIS"
+>+downgrade</I
+><br>
+ </P
+>
+ </TT
+>
+ </P
+></LI
+><LI
+><P
+>
+ Many sites, like yahoo.com, don't just link to other sites. Instead, they
+ will link to some script on their own server, giving the destination as a
+ parameter, which will then redirect you to the final target. URLs resulting
+