From: swa <swa@users.sourceforge.net> Date: Sun, 7 Apr 2002 08:39:11 +0000 (+0000) Subject: generated files. do NOT edit. X-Git-Tag: v_2_9_14~180 X-Git-Url: http://www.privoxy.org/gitweb/%22https:/@default-cgi@/faq/static/gitweb.js?a=commitdiff_plain;h=16e9ef297b4cf15a61876abcc794e5a058500e4b;p=privoxy.git generated files. do NOT edit. --- diff --git a/doc/webserver/.gitignore b/doc/webserver/.gitignore index 7184d633..e69de29b 100644 --- a/doc/webserver/.gitignore +++ b/doc/webserver/.gitignore @@ -1,4 +0,0 @@ -developer-manual -faq -user-manual -man-page \ No newline at end of file diff --git a/doc/webserver/developer-manual/coding.html b/doc/webserver/developer-manual/coding.html new file mode 100644 index 00000000..5b3c4883 --- /dev/null +++ b/doc/webserver/developer-manual/coding.html @@ -0,0 +1,2265 @@ +<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 diff --git a/doc/webserver/developer-manual/contact.html b/doc/webserver/developer-manual/contact.html new file mode 100644 index 00000000..2e312f5e --- /dev/null +++ b/doc/webserver/developer-manual/contact.html @@ -0,0 +1,223 @@ +<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 diff --git a/doc/webserver/developer-manual/copyright.html b/doc/webserver/developer-manual/copyright.html new file mode 100644 index 00000000..58f57325 --- /dev/null +++ b/doc/webserver/developer-manual/copyright.html @@ -0,0 +1,211 @@ +<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 diff --git a/doc/webserver/developer-manual/cvs.html b/doc/webserver/developer-manual/cvs.html new file mode 100644 index 00000000..7b41c56e --- /dev/null +++ b/doc/webserver/developer-manual/cvs.html @@ -0,0 +1,135 @@ +<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 diff --git a/doc/webserver/developer-manual/documentation.html b/doc/webserver/developer-manual/documentation.html new file mode 100644 index 00000000..0ab7ad12 --- /dev/null +++ b/doc/webserver/developer-manual/documentation.html @@ -0,0 +1,779 @@ +<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 diff --git a/doc/webserver/developer-manual/index.html b/doc/webserver/developer-manual/index.html new file mode 100644 index 00000000..b7f88427 --- /dev/null +++ b/doc/webserver/developer-manual/index.html @@ -0,0 +1,654 @@ +<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 diff --git a/doc/webserver/developer-manual/introduction.html b/doc/webserver/developer-manual/introduction.html new file mode 100644 index 00000000..be712acb --- /dev/null +++ b/doc/webserver/developer-manual/introduction.html @@ -0,0 +1,157 @@ +<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 diff --git a/doc/webserver/developer-manual/newrelease.html b/doc/webserver/developer-manual/newrelease.html new file mode 100644 index 00000000..48813636 --- /dev/null +++ b/doc/webserver/developer-manual/newrelease.html @@ -0,0 +1,1299 @@ +<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 diff --git a/doc/webserver/developer-manual/quickstart.html b/doc/webserver/developer-manual/quickstart.html new file mode 100644 index 00000000..f2b39a2b --- /dev/null +++ b/doc/webserver/developer-manual/quickstart.html @@ -0,0 +1,174 @@ +<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 diff --git a/doc/webserver/developer-manual/seealso.html b/doc/webserver/developer-manual/seealso.html new file mode 100644 index 00000000..9f313449 --- /dev/null +++ b/doc/webserver/developer-manual/seealso.html @@ -0,0 +1,286 @@ +<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 diff --git a/doc/webserver/developer-manual/testing.html b/doc/webserver/developer-manual/testing.html new file mode 100644 index 00000000..d219407d --- /dev/null +++ b/doc/webserver/developer-manual/testing.html @@ -0,0 +1,248 @@ +<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 diff --git a/doc/webserver/faq/configuration.html b/doc/webserver/faq/configuration.html new file mode 100644 index 00000000..339b7629 --- /dev/null +++ b/doc/webserver/faq/configuration.html @@ -0,0 +1,1111 @@ +<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 diff --git a/doc/webserver/faq/contact.html b/doc/webserver/faq/contact.html new file mode 100644 index 00000000..869d46c0 --- /dev/null +++ b/doc/webserver/faq/contact.html @@ -0,0 +1,223 @@ +<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 diff --git a/doc/webserver/faq/copyright.html b/doc/webserver/faq/copyright.html new file mode 100644 index 00000000..e1cce0f0 --- /dev/null +++ b/doc/webserver/faq/copyright.html @@ -0,0 +1,202 @@ +<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 diff --git a/doc/webserver/faq/general.html b/doc/webserver/faq/general.html new file mode 100644 index 00000000..de198e61 --- /dev/null +++ b/doc/webserver/faq/general.html @@ -0,0 +1,658 @@ +<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 diff --git a/doc/webserver/faq/index.html b/doc/webserver/faq/index.html new file mode 100644 index 00000000..2f327d62 --- /dev/null +++ b/doc/webserver/faq/index.html @@ -0,0 +1,688 @@ +<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 diff --git a/doc/webserver/faq/installation.html b/doc/webserver/faq/installation.html new file mode 100644 index 00000000..8b946711 --- /dev/null +++ b/doc/webserver/faq/installation.html @@ -0,0 +1,379 @@ +<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 diff --git a/doc/webserver/faq/misc.html b/doc/webserver/faq/misc.html new file mode 100644 index 00000000..9bed737b --- /dev/null +++ b/doc/webserver/faq/misc.html @@ -0,0 +1,803 @@ +<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 diff --git a/doc/webserver/faq/trouble.html b/doc/webserver/faq/trouble.html new file mode 100644 index 00000000..732b1b7d --- /dev/null +++ b/doc/webserver/faq/trouble.html @@ -0,0 +1,329 @@ +<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 diff --git a/doc/webserver/man-page/privoxy-man-page.html b/doc/webserver/man-page/privoxy-man-page.html new file mode 100644 index 00000000..167822ee --- /dev/null +++ b/doc/webserver/man-page/privoxy-man-page.html @@ -0,0 +1,343 @@ +<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> diff --git a/doc/webserver/user-manual/appendix.html b/doc/webserver/user-manual/appendix.html new file mode 100644 index 00000000..0546aff1 --- /dev/null +++ b/doc/webserver/user-manual/appendix.html @@ -0,0 +1,1549 @@ +<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 diff --git a/doc/webserver/user-manual/configuration.html b/doc/webserver/user-manual/configuration.html new file mode 100644 index 00000000..f2d4c3bc --- /dev/null +++ b/doc/webserver/user-manual/configuration.html @@ -0,0 +1,3964 @@ +<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 + from this scheme typically look like: + <I +CLASS="EMPHASIS" +>http://some.place/some_script?http://some.where-else</I +>. + </P +><P +> Sometimes, there are even multiple consecutive redirects encoded in the + URL. These redirections via scripts make your web browsing more traceable, + since the server from which you follow such a link can see where you go to. + Apart from that, valuable bandwidth and time is wasted, while your browser + ask the server for one redirect after the other. Plus, it feeds the + advertisers. + </P +><P +> The <SPAN +CLASS="QUOTE" +>"+fast-redirects"</SPAN +> option enables interception of these + types of requests by <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +>, who will cut off + all but the last valid URL in the request and send a local redirect back to + your browser without contacting the intermediate site(s). + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+fast-redirects</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + Apply the filters in the <TT +CLASS="LITERAL" +>section_header</TT +> + section of the <TT +CLASS="FILENAME" +>default.filter</TT +> file to the site(s). + <TT +CLASS="FILENAME" +>default.filter</TT +> sections are grouped according to like + functionality. <SPAN +CLASS="APPLICATION" +>Filters</SPAN +> can be used to + re-write any of the raw page content. This is a potentially a + very powerful feature! + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+filter{section_header}</I +><br> + </P +> + </TT +> + </P +><P +> + Filter sections that are pre-defined in the supplied + <TT +CLASS="FILENAME" +>default.filter</TT +> include: + </P +><A +NAME="AEN1073" +></A +><BLOCKQUOTE +CLASS="BLOCKQUOTE" +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>html-annoyances</I +>: Get rid of particularly annoying HTML abuse. + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>js-annoyances</I +>: Get rid of particularly annoying JavaScript abuse + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>no-poups</I +>: Kill all popups in JS and HTML + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>frameset-borders</I +>: Give frames a border + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>webbugs</I +>: Squish WebBugs (1x1 invisible GIFs used for user tracking) + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>no-refresh</I +>: Automatic refresh sucks on auto-dialup lines + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>fun</I +>: Text replacements for subversive browsing fun! + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>nimda</I +>: Remove (virus) Nimda code. + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>banners-by-size</I +>: Kill banners by size + </TD +></TR +></TBODY +></TABLE +><P +></P +><P +></P +><TABLE +BORDER="0" +><TBODY +><TR +><TD +> <I +CLASS="EMPHASIS" +>crude-parental</I +>: Kill all web pages that contain the words "sex" or "warez" + </TD +></TR +></TBODY +></TABLE +><P +></P +></BLOCKQUOTE +></LI +><LI +><P +> + Block any existing X-Forwarded-for header, and do not add a new one: + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+hide-forwarded</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + If the browser sends a <SPAN +CLASS="QUOTE" +>"From:"</SPAN +> header containing your e-mail + address, this either completely removes the header (<SPAN +CLASS="QUOTE" +>"block"</SPAN +>), or + changes it to the specified e-mail address. + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+hide-from{block}</I +><br> + <I +CLASS="EMPHASIS" +>+hide-from{spam@sittingduck.xqq}</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + Don't send the <SPAN +CLASS="QUOTE" +>"Referer:"</SPAN +> (sic) header to the web site. You + can block it, forge a URL to the same server as the request (which is + preferred because some sites will not send images otherwise) or set it to a + constant, user defined string of your choice. + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+hide-referer{block}</I +><br> + <I +CLASS="EMPHASIS" +>+hide-referer{forge}</I +><br> + <I +CLASS="EMPHASIS" +>+hide-referer{http://nowhere.com}</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + Alternative spelling of <SPAN +CLASS="QUOTE" +>"+hide-referer"</SPAN +>. It has the same + parameters, and can be freely mixed with, <SPAN +CLASS="QUOTE" +>"+hide-referer"</SPAN +>. + (<SPAN +CLASS="QUOTE" +>"referrer"</SPAN +> is the correct English spelling, however the HTTP + specification has a bug - it requires it to be spelled <SPAN +CLASS="QUOTE" +>"referer"</SPAN +>.) + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+hide-referrer{...}</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + Change the <SPAN +CLASS="QUOTE" +>"User-Agent:"</SPAN +> header so web servers can't tell your + browser type. Warning! This breaks many web sites. Specify the + user-agent value you want. Example, pretend to be using Netscape on + Linux: + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+hide-user-agent{Mozilla (X11; I; Linux 2.0.32 i586)}</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + Treat this URL as an image. This only matters if it's also <SPAN +CLASS="QUOTE" +>"+block"</SPAN +>ed, + in which case a <SPAN +CLASS="QUOTE" +>"blocked"</SPAN +> image can be sent rather than a HTML page. + See <SPAN +CLASS="QUOTE" +>"+image-blocker{}"</SPAN +> below for the control over what is actually sent. + If you want <I +CLASS="EMPHASIS" +>invisible</I +> ads, they should be defined as + <I +CLASS="EMPHASIS" +>images</I +> and <I +CLASS="EMPHASIS" +>blocked</I +>. And also, + <SPAN +CLASS="QUOTE" +>"image-blocker"</SPAN +> should be set to <SPAN +CLASS="QUOTE" +>"blank"</SPAN +>. Note you + cannot treat HTML pages as images in most cases. For instance, frames + require an HTML page to display. So a frame that is an ad, cannot be + treated as an image. Forcing an <SPAN +CLASS="QUOTE" +>"image"</SPAN +> in this + situation just will not work. + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+image</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> Decides what to do with URLs that end up tagged with <SPAN +CLASS="QUOTE" +>"{+block + +image}"</SPAN +>, e.g an advertizement. There are five options. + <SPAN +CLASS="QUOTE" +>"-image-blocker"</SPAN +> will send a HTML <SPAN +CLASS="QUOTE" +>"blocked"</SPAN +> page, + usually resulting in a <SPAN +CLASS="QUOTE" +>"broken image"</SPAN +> icon. +<SPAN +CLASS="QUOTE" +>"+image-blocker{blank}"</SPAN +> will send a 1x1 transparent GIF +image. And finally, <SPAN +CLASS="QUOTE" +>"+image-blocker{http://xyz.com}"</SPAN +> will send a +HTTP temporary redirect to the specified image. This has the advantage of the +icon being being cached by the browser, which will speed up the display. +<SPAN +CLASS="QUOTE" +>"+image-blocker{pattern}"</SPAN +> will send a checkboard type pattern + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+image-blocker{blank}</I +><br> + <I +CLASS="EMPHASIS" +>+image-blocker{pattern}</I +><br> + <I +CLASS="EMPHASIS" +>+image-blocker{http://p.p/send-banner}</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + By default (i.e. in the absence of a <SPAN +CLASS="QUOTE" +>"+limit-connect"</SPAN +> + action), <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> will only allow CONNECT + requests to port 443, which is the standard port for https as a + precaution. + </P +><P +> The CONNECT methods exists in HTTP to allow access to secure websites + (https:// URLs) through proxies. It works very simply: the proxy + connects to the server on the specified port, and then short-circuits + its connections to the client <I +CLASS="EMPHASIS" +>and</I +> to the remote proxy. + This can be a big security hole, since CONNECT-enabled proxies can + be abused as TCP relays very easily. + </P +><P +> + If you want to allow CONNECT for more ports than this, or want to forbid + CONNECT altogether, you can specify a comma separated list of ports and + port ranges (the latter using dashes, with the minimum defaulting to 0 and + max to 65K): + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+limit-connect{443} # This is the default and need no be specified.</I +><br> + <I +CLASS="EMPHASIS" +>+limit-connect{80,443} # Ports 80 and 443 are OK.</I +><br> + <I +CLASS="EMPHASIS" +>+limit-connect{-3, 7, 20-100, 500-} # Port less than 3, 7, 20 to 100</I +><br> + <I +CLASS="EMPHASIS" +> #and above 500 are OK.</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> <SPAN +CLASS="QUOTE" +>"+no-compression"</SPAN +> prevents the website from compressing the + data. Some websites do this, which can be a problem for + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +>, since <SPAN +CLASS="QUOTE" +>"+filter"</SPAN +>, + <SPAN +CLASS="QUOTE" +>"+no-popup"</SPAN +> and <SPAN +CLASS="QUOTE" +>"+gif-deanimate"</SPAN +> will not work on + compressed data. This will slow down connections to those websites, + though. Default is <SPAN +CLASS="QUOTE" +>"no-compression"</SPAN +> is turned on. + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+nocompression</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + If the website sets cookies, <SPAN +CLASS="QUOTE" +>"no-cookies-keep"</SPAN +> will make sure + they are erased when you exit and restart your web browser. This makes + profiling cookies useless, but won't break sites which require cookies so + that you can log in for transactions. Default: on. + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+no-cookies-keep</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + Prevent the website from reading cookies: + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+no-cookies-read</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + Prevent the website from setting cookies: + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+no-cookies-set</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + Filter the website through a built-in filter to disable those obnoxious + JavaScript pop-up windows via window.open(), etc. The two alternative + spellings are equivalent. + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+no-popup</I +><br> + <I +CLASS="EMPHASIS" +>+no-popups</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + This action only applies if you are using a <TT +CLASS="FILENAME" +>jarfile</TT +> + for saving cookies. It sends a cookie to every site stating that you do not + accept any copyright on cookies sent to you, and asking them not to track + you. Of course, this is a (relatively) unique header they could use to + track you. + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+vanilla-wafer</I +><br> + </P +> + </TT +> + </P +></LI +><LI +><P +> + This allows you to add an arbitrary cookie. It can be specified multiple + times in order to add as many cookies as you like. + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> <I +CLASS="EMPHASIS" +>+wafer{name=value}</I +><br> + </P +> + </TT +> + </P +></LI +></UL +></P +><P +> The meaning of any of the above is reversed by preceding the action with a + <SPAN +CLASS="QUOTE" +>"-"</SPAN +>, in place of the <SPAN +CLASS="QUOTE" +>"+"</SPAN +>.</P +><P +> Some examples:</P +><P +> Turn off cookies by default, then allow a few through for specified sites:</P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> # Turn off all persistent cookies<br> + { +no-cookies-read }<br> + { +no-cookies-set }<br> + # Allow cookies for this browser session ONLY<br> + { +no-cookies-keep }<br> +<br> + # Exceptions to the above, sites that benefit from persistent cookies<br> + { -no-cookies-read }<br> + { -no-cookies-set }<br> + { -no-cookies-keep }<br> + .javasoft.com<br> + .sun.com<br> + .yahoo.com<br> + .msdn.microsoft.com<br> + .redhat.com<br> +<br> + # Alternative way of saying the same thing<br> + {-no-cookies-set -no-cookies-read -no-cookies-keep}<br> + .sourceforge.net<br> + .sf.net<br> + </P +> + </TT +></P +><P +> Now turn off <SPAN +CLASS="QUOTE" +>"fast redirects"</SPAN +>, and then we allow two exceptions:</P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> # Turn them off!<br> + {+fast-redirects}<br> + <br> + # Reverse it for these two sites, which don't work right without it.<br> + {-fast-redirects}<br> + www.ukc.ac.uk/cgi-bin/wac\.cgi\?<br> + login.yahoo.com<br> + </P +> + </TT +></P +><P +> Turn on page filtering according to rules in the defined sections + of <TT +CLASS="FILENAME" +>refilterfile</TT +>, and make one exception for + sourceforge: + </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> # Run everything through the filter file, using only the<br> + # specified sections:<br> + +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}\<br> + +filter{webbugs} +filter{nimda} +filter{banners-by-size}<br> + <br> + # Then disable filtering of code from sourceforge!<br> + {-filter}<br> + .cvs.sourceforge.net<br> + </P +> + </TT +></P +><P +> Now some URLs that we want <SPAN +CLASS="QUOTE" +>"blocked"</SPAN +> (normally generates + the <SPAN +CLASS="QUOTE" +>"blocked"</SPAN +> banner). Many of these use regular expressions + that will expand to match multiple URLs:</P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> # Blocklist:<br> + {+block}<br> + /.*/(.*[-_.])?ads?[0-9]?(/|[-_.].*|\.(gif|jpe?g))<br> + /.*/(.*[-_.])?count(er)?(\.cgi|\.dll|\.exe|[?/])<br> + /.*/(ng)?adclient\.cgi<br> + /.*/(plain|live|rotate)[-_.]?ads?/<br> + /.*/(sponsor)s?[0-9]?/<br> + /.*/_?(plain|live)?ads?(-banners)?/<br> + /.*/abanners/<br> + /.*/ad(sdna_image|gifs?)/<br> + /.*/ad(server|stream|juggler)\.(cgi|pl|dll|exe)<br> + /.*/adbanners/<br> + /.*/adserver<br> + /.*/adstream\.cgi<br> + /.*/adv((er)?ts?|ertis(ing|ements?))?/<br> + /.*/banner_?ads/<br> + /.*/banners?/<br> + /.*/banners?\.cgi/<br> + /.*/cgi-bin/centralad/getimage<br> + /.*/images/addver\.gif<br> + /.*/images/marketing/.*\.(gif|jpe?g)<br> + /.*/popupads/<br> + /.*/siteads/<br> + /.*/sponsor.*\.gif<br> + /.*/sponsors?[0-9]?/<br> + /.*/advert[0-9]+\.jpg<br> + /Media/Images/Adds/<br> + /ad_images/<br> + /adimages/<br> + /.*/ads/<br> + /bannerfarm/<br> + /grafikk/annonse/<br> + /graphics/defaultAd/<br> + /image\.ng/AdType<br> + /image\.ng/transactionID<br> + /images/.*/.*_anim\.gif # alvin brattli<br> + /ip_img/.*\.(gif|jpe?g)<br> + /rotateads/<br> + /rotations/ <br> + /worldnet/ad\.cgi<br> + /cgi-bin/nph-adclick.exe/<br> + /.*/Image/BannerAdvertising/<br> + /.*/ad-bin/<br> + /.*/adlib/server\.cgi<br> + /autoads/<br> + </P +> + </TT +></P +><P +> Note that many of these actions have the potential to cause a page to + misbehave, possibly even not to display at all. There are many ways + a site designer may choose to design his site, and what HTTP header + content he may depend on. There is no way to have hard and fast rules + for all sites. See the <A +HREF="appendix.html#ACTIONSANAT" +>Appendix</A +> + for a brief example on troubleshooting actions.</P +></DIV +><DIV +CLASS="SECT3" +><H3 +CLASS="SECT3" +><A +NAME="AEN1285" +>5.4.3. Aliases</A +></H3 +><P +> Custom <SPAN +CLASS="QUOTE" +>"actions"</SPAN +>, known to <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> + as <SPAN +CLASS="QUOTE" +>"aliases"</SPAN +>, can be defined by combining other <SPAN +CLASS="QUOTE" +>"actions"</SPAN +>. + These can in turn be invoked just like the built-in <SPAN +CLASS="QUOTE" +>"actions"</SPAN +>. + Currently, an alias can contain any character except space, tab, <SPAN +CLASS="QUOTE" +>"="</SPAN +>, + <SPAN +CLASS="QUOTE" +>"{"</SPAN +> or <SPAN +CLASS="QUOTE" +>"}"</SPAN +>. But please use only <SPAN +CLASS="QUOTE" +>"a"</SPAN +>- + <SPAN +CLASS="QUOTE" +>"z"</SPAN +>, <SPAN +CLASS="QUOTE" +>"0"</SPAN +>-<SPAN +CLASS="QUOTE" +>"9"</SPAN +>, <SPAN +CLASS="QUOTE" +>"+"</SPAN +>, and + <SPAN +CLASS="QUOTE" +>"-"</SPAN +>. Alias names are not case sensitive, and + <I +CLASS="EMPHASIS" +>must be defined before anything</I +> else in the + <TT +CLASS="FILENAME" +>default.action</TT +>file! And there can only be one set of + <SPAN +CLASS="QUOTE" +>"aliases"</SPAN +> defined.</P +><P +> Now let's define a few aliases:</P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> # Useful custom aliases we can use later. These must come first!<br> + {{alias}}<br> + +no-cookies = +no-cookies-set +no-cookies-read<br> + -no-cookies = -no-cookies-set -no-cookies-read<br> + fragile = -block -no-cookies -filter -fast-redirects -hide-referer -no-popups<br> + shop = -no-cookies -filter -fast-redirects<br> + +imageblock = +block +image<br> +<br> + #For people who don't like to type too much: ;-)<br> + c0 = +no-cookies<br> + c1 = -no-cookies<br> + c2 = -no-cookies-set +no-cookies-read<br> + c3 = +no-cookies-set -no-cookies-read<br> + #... etc. Customize to your heart's content.<br> + </P +> + </TT +></P +><P +> Some examples using our <SPAN +CLASS="QUOTE" +>"shop"</SPAN +> and <SPAN +CLASS="QUOTE" +>"fragile"</SPAN +> + aliases from above:</P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> # These sites are very complex and require<br> + # minimal interference.<br> + {fragile}<br> + .office.microsoft.com<br> + .windowsupdate.microsoft.com<br> + .nytimes.com<br> +<br> + # Shopping sites - still want to block ads.<br> + {shop}<br> + .quietpc.com<br> + .worldpay.com # for quietpc.com<br> + .jungle.com<br> + .scan.co.uk<br> +<br> + # These shops require pop-ups<br> + {shop -no-popups}<br> + .dabs.com<br> + .overclockers.co.uk<br> + </P +> + </TT +></P +><P +> The <SPAN +CLASS="QUOTE" +>"shop"</SPAN +> and <SPAN +CLASS="QUOTE" +>"fragile"</SPAN +> aliases are often used for + <SPAN +CLASS="QUOTE" +>"problem"</SPAN +> sites that require most actions to be disabled + in order to function properly. </P +></DIV +></DIV +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="FILTERFILE" +>5.5. The Filter File</A +></H2 +><P +> Any web page can be dynamically modified with the filter file. This + modification can be removal, or re-writing, of any web page content, + including tags and non-visible content. The default filter file is + <TT +CLASS="FILENAME" +>default.filter</TT +>, located in the config directory. </P +><P +> This is potentially a very powerful feature, and requires knowledge of both + <SPAN +CLASS="QUOTE" +>"regular expression"</SPAN +> and HTML in order create custom + filters. But, there are a number of useful filters included with + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> for many common situations.</P +><P +> The included example file is divided into sections. Each section begins + with the <TT +CLASS="LITERAL" +>FILTER</TT +> keyword, followed by the identifier + for that section, e.g. <SPAN +CLASS="QUOTE" +>"FILTER: webbugs"</SPAN +>. Each section performs + a similar type of filtering, such as <SPAN +CLASS="QUOTE" +>"html-annoyances"</SPAN +>.</P +><P +> This file uses regular expressions to alter or remove any string in the + target page. The expressions can only operate on one line at a time. Some + examples from the included default <TT +CLASS="FILENAME" +>default.filter</TT +>:</P +><P +> Stop web pages from displaying annoying messages in the status bar by + deleting such references:</P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> FILTER: html-annoyances<br> +<br> + # New browser windows should be resizeable and have a location and status<br> + # bar. Make it so.<br> + #<br> + s/resizable="?(no|0)"?/resizable=1/ig s/noresize/yesresize/ig<br> + s/location="?(no|0)"?/location=1/ig s/status="?(no|0)"?/status=1/ig<br> + s/scrolling="?(no|0|Auto)"?/scrolling=1/ig<br> + s/menubar="?(no|0)"?/menubar=1/ig <br> +<br> + # The <BLINK> tag was a crime!<br> + #<br> + s*<blink>|</blink>**ig<br> +<br> + # Is this evil? <br> + #<br> + #s/framespacing="?(no|0)"?//ig<br> + #s/margin(height|width)=[0-9]*//gi<br> + </P +> + </TT +></P +><P +> Just for kicks, replace any occurrence of <SPAN +CLASS="QUOTE" +>"Microsoft"</SPAN +> with + <SPAN +CLASS="QUOTE" +>"MicroSuck"</SPAN +>, and have a little fun with topical buzzwords: </P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> FILTER: fun<br> +<br> + s/microsoft(?!.com)/MicroSuck/ig<br> +<br> + # Buzzword Bingo:<br> + #<br> + s/industry-leading|cutting-edge|award-winning/<font color=red><b>BINGO!</b></font>/ig<br> + </P +> + </TT +></P +><P +> Kill those pesky little web-bugs:</P +><P +> <TT +CLASS="LITERAL" +> <P +CLASS="LITERALLAYOUT" +> # webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking)<br> + FILTER: webbugs<br> +<br> + s/<img\s+[^>]*?(width|height)\s*=\s*['"]?1\D[^>]*?(width|height)\s*=\s*['"]?1(\D[^>]*?)?>/<!-- Squished WebBug -->/sig<br> + </P +> + </TT +></P +></DIV +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN1351" +>5.6. Templates</A +></H2 +><P +> When <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> displays one of its internal + pages, such as a 404 Not Found error page, it uses the appropriate template. + On Linux, BSD, and Unix, these are located in + <TT +CLASS="FILENAME" +>/etc/privoxy/templates</TT +> by default. These may be + customized, if desired.</P +><P +> The default <SPAN +CLASS="QUOTE" +>"Blocked"</SPAN +> banner page with the bright red top + banner, is called just <SPAN +CLASS="QUOTE" +>"<TT +CLASS="FILENAME" +>blocked</TT +>"</SPAN +>. This + may be customized or replaced with something else if desired. </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="contact.html" +>Next</A +></TD +></TR +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +>Quickstart to Using <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +></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 diff --git a/doc/webserver/user-manual/contact.html b/doc/webserver/user-manual/contact.html new file mode 100644 index 00000000..655340fb --- /dev/null +++ b/doc/webserver/user-manual/contact.html @@ -0,0 +1,228 @@ +<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 User Manual" +HREF="index.html"><LINK +REL="PREVIOUS" +TITLE="Privoxy Configuration" +HREF="configuration.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 User Manual</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="copyright.html" +>Next</A +></TD +></TR +></TABLE +><HR +ALIGN="LEFT" +WIDTH="100%"></DIV +><DIV +CLASS="SECT1" +><H1 +CLASS="SECT1" +><A +NAME="CONTACT" +>6. Contacting the Developers, Bug Reporting and Feature +Requests</A +></H1 +><P +> We value your feedback. 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="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="copyright.html" +>Next</A +></TD +></TR +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +><SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> Configuration</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 diff --git a/doc/webserver/user-manual/copyright.html b/doc/webserver/user-manual/copyright.html new file mode 100644 index 00000000..9aea5adb --- /dev/null +++ b/doc/webserver/user-manual/copyright.html @@ -0,0 +1,213 @@ +<HTML +><HEAD +><TITLE +>Copyright and History</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="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 User 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" +>7. Copyright and History</A +></H1 +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN1385" +>7.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="HISTORY" +>7.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 diff --git a/doc/webserver/user-manual/index.html b/doc/webserver/user-manual/index.html new file mode 100644 index 00000000..8b87588c --- /dev/null +++ b/doc/webserver/user-manual/index.html @@ -0,0 +1,483 @@ +<HTML +><HEAD +><TITLE +>Privoxy User 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 User 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: user-manual.sgml,v 1.69 2002/04/06 05:07:29 hal9 Exp $<BR></P +><DIV +><DIV +CLASS="ABSTRACT" +><A +NAME="AEN9" +></A +><P +></P +><P +> + </P +><P +> The user manual gives users information on how to install, configure and use + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +>. + </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 user manual at <A +HREF="http://www.privoxy.org/user-manual/" +TARGET="_top" +>http://www.privoxy.org/user-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 +><DD +><DL +><DT +>1.1. <A +HREF="introduction.html#AEN37" +>New Features</A +></DT +></DL +></DD +><DT +>3. <A +HREF="installation.html" +>Installation</A +></DT +><DD +><DL +><DT +>3.1. <A +HREF="installation.html#INSTALLATION-SOURCE" +>Source</A +></DT +><DD +><DL +><DT +>3.1.1. <A +HREF="installation.html#INSTALLATION-RH" +>Red Hat</A +></DT +><DT +>3.1.2. <A +HREF="installation.html#INSTALLATION-SUSE" +>SuSE</A +></DT +><DT +>3.1.3. <A +HREF="installation.html#INSTALLATION-OS2" +>OS/2</A +></DT +><DT +>3.1.4. <A +HREF="installation.html#INSTALLATION-WIN" +>Windows</A +></DT +><DT +>3.1.5. <A +HREF="installation.html#INSTALLATION-OTHER" +>Other</A +></DT +></DL +></DD +></DL +></DD +><DT +>4. <A +HREF="quickstart.html" +>Quickstart to Using <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +></A +></DT +><DD +><DL +><DT +>4.1. <A +HREF="quickstart.html#AEN230" +>Command Line Options</A +></DT +></DL +></DD +><DT +>5. <A +HREF="configuration.html" +><SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> Configuration</A +></DT +><DD +><DL +><DT +>5.1. <A +HREF="configuration.html#AEN275" +>Controlling <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> with Your Web Browser</A +></DT +><DT +>5.2. <A +HREF="configuration.html#AEN293" +>Configuration Files Overview</A +></DT +><DT +>5.3. <A +HREF="configuration.html#AEN324" +>The Main Configuration File</A +></DT +><DD +><DL +><DT +>5.3.1. <A +HREF="configuration.html#AEN357" +>Defining Other Configuration Files</A +></DT +><DT +>5.3.2. <A +HREF="configuration.html#AEN450" +>Other Configuration Options</A +></DT +><DT +>5.3.3. <A +HREF="configuration.html#AEN587" +>Access Control List (ACL)</A +></DT +><DT +>5.3.4. <A +HREF="configuration.html#FORWARDING" +>Forwarding</A +></DT +><DT +>5.3.5. <A +HREF="configuration.html#AEN785" +>Windows GUI Options</A +></DT +></DL +></DD +><DT +>5.4. <A +HREF="configuration.html#ACTIONSFILE" +>The Actions File</A +></DT +><DD +><DL +><DT +>5.4.1. <A +HREF="configuration.html#AEN887" +>URL Domain and Path Syntax</A +></DT +><DT +>5.4.2. <A +HREF="configuration.html#AEN963" +>Actions</A +></DT +><DT +>5.4.3. <A +HREF="configuration.html#AEN1285" +>Aliases</A +></DT +></DL +></DD +><DT +>5.5. <A +HREF="configuration.html#FILTERFILE" +>The Filter File</A +></DT +><DT +>5.6. <A +HREF="configuration.html#AEN1351" +>Templates</A +></DT +></DL +></DD +><DT +>6. <A +HREF="contact.html" +>Contacting the Developers, Bug Reporting and Feature +Requests</A +></DT +><DT +>7. <A +HREF="copyright.html" +>Copyright and History</A +></DT +><DD +><DL +><DT +>7.1. <A +HREF="copyright.html#AEN1385" +>Copyright</A +></DT +><DT +>7.2. <A +HREF="copyright.html#HISTORY" +>History</A +></DT +></DL +></DD +><DT +>8. <A +HREF="seealso.html" +>See Also</A +></DT +><DT +>9. <A +HREF="appendix.html" +>Appendix</A +></DT +><DD +><DL +><DT +>9.1. <A +HREF="appendix.html#REGEX" +>Regular Expressions</A +></DT +><DD +><DL +><DT +>21<A +HREF="appendix.html#AEN1459" +></A +></DT +><DT +>22<A +HREF="appendix.html#AEN1467" +></A +></DT +><DT +>23<A +HREF="appendix.html#AEN1470" +></A +></DT +><DT +>24<A +HREF="appendix.html#AEN1473" +></A +></DT +><DT +>25<A +HREF="appendix.html#AEN1476" +></A +></DT +><DT +>26<A +HREF="appendix.html#AEN1481" +></A +></DT +><DT +>27<A +HREF="appendix.html#AEN1484" +></A +></DT +><DT +>28<A +HREF="appendix.html#AEN1487" +></A +></DT +><DT +>29<A +HREF="appendix.html#AEN1493" +></A +></DT +></DL +></DD +><DT +>9.2. <A +HREF="appendix.html#AEN1587" +><SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +>'s Internal Pages</A +></DT +><DD +><DL +><DT +>9.2.1. <A +HREF="appendix.html#BOOKMARKLETS" +>Bookmarklets</A +></DT +></DL +></DD +><DT +>9.3. <A +HREF="appendix.html#ACTIONSANAT" +>Anatomy of an Action</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="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 diff --git a/doc/webserver/user-manual/installation.html b/doc/webserver/user-manual/installation.html new file mode 100644 index 00000000..56700d0f --- /dev/null +++ b/doc/webserver/user-manual/installation.html @@ -0,0 +1,567 @@ +<HTML +><HEAD +><TITLE +>Installation</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="Introduction" +HREF="introduction.html"><LINK +REL="NEXT" +TITLE="Quickstart to Using Privoxy" +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 User 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="quickstart.html" +>Next</A +></TD +></TR +></TABLE +><HR +ALIGN="LEFT" +WIDTH="100%"></DIV +><DIV +CLASS="SECT1" +><H1 +CLASS="SECT1" +><A +NAME="INSTALLATION" +>3. Installation</A +></H1 +><P +> <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> is available as raw source code (tarball + or via CVS), or pre-compiled binaries for various platforms. See the <A +HREF="http://sourceforge.net/projects/ijbswa/" +TARGET="_top" +>Privoxy Project Page</A +> for + the most up to date release information. + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> is also available via <A +HREF="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/ijbswa/current/" +TARGET="_top" +>CVS</A +>. + This is the recommended approach at this time. But + please be aware that CVS is constantly changing, and it may break in + mysterious ways.</P +><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 +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="INSTALLATION-SOURCE" +>3.1. Source</A +></H2 +><P +> There are several ways to install <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +>.</P +><P +> To build <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> from source, + autoconf and GNU make (gmake) are required. Source is available as gzipped + tar archives. For this, first unpack the source: </P +><P +> <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> tar xzvf privoxy-2.9.13-beta-src* [.tgz or .tar.gz] + cd privoxy-2.9.13-beta + </PRE +></TD +></TR +></TABLE +></P +><P +> For retrieving the current CVS sources, you'll need the CVS + package installed first. Note CVS source is development quality, + and may not be stable, or well tested. To download CVS source:</P +><P +> <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login + cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co current + cd current + </PRE +></TD +></TR +></TABLE +></P +><P +> This will create a directory named <TT +CLASS="FILENAME" +>current/</TT +>, which will + contain the source tree.</P +><P +> Then, in either case, to build from unpacked tarball or CVS source:</P +><P +> <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> autoheader + autoconf + ./configure (--help to see options) + make (the make from gnu, gmake for *BSD) + su + make -n install (to see where all the files will go) + make install (to really install) + </PRE +></TD +></TR +></TABLE +></P +><P +> Redhat and SuSE src and binary RPMs can be built with + <SPAN +CLASS="QUOTE" +>"<B +CLASS="COMMAND" +>make redhat-dist</B +>"</SPAN +> or + <SPAN +CLASS="QUOTE" +>"<B +CLASS="COMMAND" +>make suse-dist</B +>"</SPAN +> from unpacked sources. You + will need to run <SPAN +CLASS="QUOTE" +>"<B +CLASS="COMMAND" +>autoconf; autoheader; + ./configure</B +>"</SPAN +> beforehand. *BSD will require gmake (from + <A +HREF="http://www.gnu.org" +TARGET="_top" +>http://www.gnu.org</A +>). + </P +><P +> For Redhat and SuSE Linux RPM packages, see below.</P +><DIV +CLASS="SECT3" +><H3 +CLASS="SECT3" +><A +NAME="INSTALLATION-RH" +>3.1.1. Red Hat</A +></H3 +><P +> To build Redhat RPM packages from source, install source as above. Then:</P +><P +> <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> autoheader + autoconf + ./configure + make redhat-dist + </PRE +></TD +></TR +></TABLE +></P +><P +> This will create both binary and src RPMs in the usual places. Example:</P +><P +> /usr/src/redhat/RPMS/i686/privoxy-2.9.13-1.i686.rpm</P +><P +> /usr/src/redhat/SRPMS/privoxy-2.9.13-1.src.rpm</P +><P +> To install, of course:</P +><P +> <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> rpm -Uvv /usr/src/redhat/RPMS/i686/privoxy-2.9.13-1.i686.rpm + </PRE +></TD +></TR +></TABLE +></P +><P +> This will place the <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> configuration + files in <TT +CLASS="FILENAME" +>/etc/privoxy/</TT +>, and log files in + <TT +CLASS="FILENAME" +>/var/log/privoxy/</TT +>. Run + <B +CLASS="COMMAND" +>ckconfig privoxy on</B +> to have + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> start automatically during init. </P +></DIV +><DIV +CLASS="SECT3" +><H3 +CLASS="SECT3" +><A +NAME="INSTALLATION-SUSE" +>3.1.2. SuSE</A +></H3 +><P +> To build SuSE RPM packages, install source as above. Then:</P +><P +> <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> autoheader + autoconf + ./configure + make suse-dist + </PRE +></TD +></TR +></TABLE +></P +><P +> This will create both binary and src RPMs in the usual places. Example:</P +><P +> /usr/src/packages/RPMS/i686/privoxy-2.9.13-1.i686.rpm</P +><P +> /usr/src/packages/SRPMS/privoxy-2.9.13-1.src.rpm</P +><P +> To install, of course:</P +><P +> <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> rpm -Uvv /usr/src/packages/RPMS/i686/privoxy-2.9.13-1.i686.rpm + </PRE +></TD +></TR +></TABLE +></P +><P +> This will place the <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> configuration + files in <TT +CLASS="FILENAME" +>/etc/privoxy/</TT +>, and log files in + <TT +CLASS="FILENAME" +>/var/log/privoxy/</TT +>. </P +></DIV +><DIV +CLASS="SECT3" +><H3 +CLASS="SECT3" +><A +NAME="INSTALLATION-OS2" +>3.1.3. OS/2</A +></H3 +><P +> <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> is packaged in a WarpIN self- + installing archive. The self-installing program will be named depending + on the release version, something like: + <TT +CLASS="FILENAME" +>privoxyos2_setup_2.9.13.exe</TT +>. In order to install it, simply + run this executable or double-click on its icon and follow the WarpIN + installation panels. A shadow of the <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> + executable will be placed in your startup folder so it will start + automatically whenever OS/2 starts.</P +><P +> The directory you choose to install <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> + into will contain all of the configuration files.</P +><P +> If you would like to build binary images on OS/2 yourself, you will need + a few Unix-like tools: autoconf, autoheader and sh. These tools will be + used to create the required config.h file, which is not part of the + source distribution because it differs based on platform. You will also + need a compiler. + The distribution has been created using IBM VisualAge compilers, but you + can use any compiler you like. GCC/EMX has the disadvantage of needing + to be single-threaded due to a limitation of EMX's implementation of the + <TT +CLASS="FUNCTION" +>select()</TT +> socket call.</P +><P +> In addition to needing the source code distribution as outlined earlier, + you will want to extract the <TT +CLASS="FILENAME" +>os2seutp</TT +> directory from CVS: + <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login + cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup + </PRE +></TD +></TR +></TABLE +> + This will create a directory named os2setup/, which will contain the + <TT +CLASS="FILENAME" +>Makefile.vac</TT +> makefile and <TT +CLASS="FILENAME" +>os2build.cmd</TT +> + which is used to completely create the binary distribution. The sequence + of events for building the executable for yourself goes something like this: + <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> cd current + autoheader + autoconf + sh configure + cd ..\os2setup + nmake -f Makefile.vac + </PRE +></TD +></TR +></TABLE +> + You will see this sequence laid out in <TT +CLASS="FILENAME" +>os2build.cmd</TT +>.</P +></DIV +><DIV +CLASS="SECT3" +><H3 +CLASS="SECT3" +><A +NAME="INSTALLATION-WIN" +>3.1.4. Windows</A +></H3 +><P +>Click-click. (I need help on this. Not a clue here. Also for +configuration section below. HB.)</P +></DIV +><DIV +CLASS="SECT3" +><H3 +CLASS="SECT3" +><A +NAME="INSTALLATION-OTHER" +>3.1.5. Other</A +></H3 +><P +> Some quick notes on other Operating Systems.</P +><P +> For FreeBSD (and other *BSDs?), the build will require <B +CLASS="COMMAND" +>gmake</B +> + instead of the included <B +CLASS="COMMAND" +>make</B +>. <B +CLASS="COMMAND" +>gmake</B +> is + available from <A +HREF="http://www.gnu.org" +TARGET="_top" +>http://www.gnu.org</A +>. + The rest should be the same as above for Linux/Unix.</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="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="quickstart.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" +>Quickstart to Using <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +></TD +></TR +></TABLE +></DIV +></BODY +></HTML +> \ No newline at end of file diff --git a/doc/webserver/user-manual/introduction.html b/doc/webserver/user-manual/introduction.html new file mode 100644 index 00000000..ed132b97 --- /dev/null +++ b/doc/webserver/user-manual/introduction.html @@ -0,0 +1,266 @@ +<HTML +><HEAD +><TITLE +>Introduction</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="Privoxy User Manual" +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 User 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="installation.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 +> This documentation is included with the current BETA version of + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +>, v.2.9.13, + and is mostly complete at this point. The most up to date reference for the + time being is still the comments in the source files and in the individual + configuration files. Development of version 3.0 is currently nearing + completion, and includes many significant changes and enhancements over + earlier versions. The target release date for + stable v3.0 is <SPAN +CLASS="QUOTE" +>"soon"</SPAN +> ;-).</P +><P +> Since this is a BETA version, not all new features are well tested. This + documentation may be slightly out of sync as a result (especially with + CVS sources). And there <I +CLASS="EMPHASIS" +>may be</I +> bugs, though hopefully + not many! </P +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN37" +>1.1. New Features</A +></H2 +><P +> In addition to <SPAN +CLASS="APPLICATION" +>Internet Junkbuster's</SPAN +> traditional + feature of ad and banner blocking and cookie management, + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> provides new features, + some of them currently under development:</P +><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 +><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 User Manual</TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +> </TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +>Installation</TD +></TR +></TABLE +></DIV +></BODY +></HTML +> \ No newline at end of file diff --git a/doc/webserver/user-manual/quickstart.html b/doc/webserver/user-manual/quickstart.html new file mode 100644 index 00000000..956525f2 --- /dev/null +++ b/doc/webserver/user-manual/quickstart.html @@ -0,0 +1,500 @@ +<HTML +><HEAD +><TITLE +>Quickstart to Using Privoxy</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="Installation" +HREF="installation.html"><LINK +REL="NEXT" +TITLE="Privoxy 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 User Manual</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="configuration.html" +>Next</A +></TD +></TR +></TABLE +><HR +ALIGN="LEFT" +WIDTH="100%"></DIV +><DIV +CLASS="SECT1" +><H1 +CLASS="SECT1" +><A +NAME="QUICKSTART" +>4. Quickstart to Using <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +></A +></H1 +><P +> Before launching <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> for the first time, you + will want to configure your browser(s) to use <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> + as a HTTP and HTTPS proxy. The default is localhost for the proxy address, + and port 8118 (earlier versions used port 800). This is the one required + configuration that must be done! </P +><P +> + With <SPAN +CLASS="APPLICATION" +>Netscape</SPAN +> (and + <SPAN +CLASS="APPLICATION" +>Mozilla</SPAN +>), this can be set under <TT +CLASS="LITERAL" +>Edit + -> Preferences -> Advanced -> Proxies -> HTTP Proxy</TT +>. + For <SPAN +CLASS="APPLICATION" +>Internet Explorer</SPAN +>: <TT +CLASS="LITERAL" +>Tools -> + Internet Properties -> Connections -> LAN Setting</TT +>. Then, + check <SPAN +CLASS="QUOTE" +>"Use Proxy"</SPAN +> and fill in the appropriate info (Address: + localhost, Port: 8118). Include if HTTPS proxy support too.</P +><P +> After doing this, flush your browser's disk and memory caches to force a + re-reading of all pages and get rid of any ads that may be cached. You + are now ready to start enjoying the benefits of using + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +>.</P +><P +> <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> is typically started by specifying the + main configuration file to be used on the command line. Example Unix startup + command:</P +><P +> <TABLE +BORDER="0" +BGCOLOR="#E0E0E0" +WIDTH="100%" +><TR +><TD +><PRE +CLASS="SCREEN" +> + # /usr/sbin/privoxy /etc/privoxy/config + + </PRE +></TD +></TR +></TABLE +></P +><P +> An init script is provided for SuSE and Redhat.</P +><P +> For for SuSE: <B +CLASS="COMMAND" +>/etc/rc.d/privoxy start</B +></P +><P +> For RedHat: <B +CLASS="COMMAND" +>/etc/rc.d/init.d/privoxy start</B +></P +><P +> If no configuration file is specified on the command line, + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> will look for a file named + <TT +CLASS="FILENAME" +>config</TT +> in the current directory. Except on Win32 where + it will try <TT +CLASS="FILENAME" +>config.txt</TT +>. If no file is specified on the + command line and no default configuration file can be found, + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> will fail to start.</P +><P +> The included default configuration files should give a reasonable starting + point, though may be somewhat aggressive in blocking junk. Most of the + per site configuration is done in the <SPAN +CLASS="QUOTE" +>"actions"</SPAN +> files. These + are where various cookie actions are defined, ad and banner blocking, + and other aspects of <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> configuration. There + are several such files included, with varying levels of aggressiveness. </P +><P +> You will probably want to keep an eye out for sites that require persistent + cookies, and add these to <TT +CLASS="FILENAME" +>default.action</TT +> as needed. By + default, most of these will be accepted only during the current browser + session, until you add them to the configuration. If you want the browser to + handle this instead, you will need to edit + <TT +CLASS="FILENAME" +>default.action</TT +> and disable this feature. If you use more + than one browser, it would make more sense to let + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> handle this. In which case, the browser(s) + should be set to accept all cookies.</P +><P +> <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> is HTTP/1.1 compliant, but not all 1.1 + features are as yet implemented. If browsers that support HTTP/1.1 (like + <SPAN +CLASS="APPLICATION" +>Mozilla</SPAN +> or recent versions of I.E.) experience + problems, you might try to force HTTP/1.0 compatibility. For Mozilla, look + under <TT +CLASS="LITERAL" +>Edit -> Preferences -> Debug -> Networking</TT +>. + Or set the <SPAN +CLASS="QUOTE" +>"+downgrade"</SPAN +> config option in + <TT +CLASS="FILENAME" +>default.action</TT +>.</P +><P +> After running <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> for a while, you can + start to fine tune the configuration to suit your personal, or site, + preferences and requirements. There are many, many aspects that can + be customized. <SPAN +CLASS="QUOTE" +>"Actions"</SPAN +> (as specified in <TT +CLASS="FILENAME" +>default.action</TT +>) + can be adjusted by pointing your browser to + <A +HREF="http://p.p/" +TARGET="_top" +>http://p.p/</A +>, + and then follow the link to <SPAN +CLASS="QUOTE" +>"edit the actions list"</SPAN +>. + (This is an internal page and does not require Internet access.)</P +><P +> In fact, various aspects of <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> + configuration can be viewed from this page, including + current configuration parameters, source code version numbers, + the browser's request headers, and <SPAN +CLASS="QUOTE" +>"actions"</SPAN +> that apply + to a given URL. In addition to the <TT +CLASS="FILENAME" +>default.action</TT +> file + editor mentioned above, <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> can also + be turned <SPAN +CLASS="QUOTE" +>"on"</SPAN +> and <SPAN +CLASS="QUOTE" +>"off"</SPAN +> from this page.</P +><P +> If you encounter problems, please verify it is a + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> bug, by disabling + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +>, and then trying the same page. + Also, try another browser if possible to eliminate browser or site + problems. Before reporting it as a bug, see if there is not a configuration + option that is enabled that is causing the page not to load. You can then add + an exception for that page or site. For instance, try adding it to the + <TT +CLASS="LITERAL" +>{fragile}</TT +> section of <TT +CLASS="FILENAME" +>default.action</TT +>. + This will turn off most actions for this site. For more on troubleshooting + problem sites, see the <A +HREF="appendix.html#ACTIONSANAT" +TARGET="_top" +>Appendix</A +>. If a bug, please report it + to the developers (see below). </P +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN230" +>4.1. Command Line Options</A +></H2 +><P +> <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> may be invoked with the following + command-line options:</P +><P +> <P +></P +><UL +><LI +><P +> <I +CLASS="EMPHASIS" +>--version</I +> + </P +><P +> Print version info and exit, Unix only. + </P +></LI +><LI +><P +> <I +CLASS="EMPHASIS" +>--help</I +> + </P +><P +> Print a short usage info and exit, Unix only. + </P +></LI +><LI +><P +> <I +CLASS="EMPHASIS" +>--no-daemon</I +> + </P +><P +> Don't become a daemon, i.e. don't fork and become process group + leader, don't detach from controlling tty. Unix only. + </P +></LI +><LI +><P +> <I +CLASS="EMPHASIS" +>--pidfile FILE</I +> + + </P +><P +> On startup, write the process ID to <I +CLASS="EMPHASIS" +>FILE</I +>. Delete the + <I +CLASS="EMPHASIS" +>FILE</I +> on exit. Failiure to create or delete the + <I +CLASS="EMPHASIS" +>FILE</I +> is non-fatal. If no <I +CLASS="EMPHASIS" +>FILE</I +> + option is given, no PID file will be used. Unix only. + </P +></LI +><LI +><P +> <I +CLASS="EMPHASIS" +>--user USER[.GROUP]</I +> + + </P +><P +> After (optionally) writing the PID file, assume the user ID of + <I +CLASS="EMPHASIS" +>USER</I +>, and if included the GID of GROUP. Exit if the + privileges are not sufficient to do so. Unix only. + </P +></LI +><LI +><P +> <I +CLASS="EMPHASIS" +>configfile</I +> + </P +><P +> If no <I +CLASS="EMPHASIS" +>configfile</I +> is included on the command line, + <SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> will look for a file named + <SPAN +CLASS="QUOTE" +>"config"</SPAN +> in the current directory (except on Win32 + where it will look for <SPAN +CLASS="QUOTE" +>"config.txt"</SPAN +> instead). Specify + full path to avoid confusion. + </P +></LI +></UL +></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="configuration.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" +><SPAN +CLASS="APPLICATION" +>Privoxy</SPAN +> Configuration</TD +></TR +></TABLE +></DIV +></BODY +></HTML +> \ No newline at end of file diff --git a/doc/webserver/user-manual/seealso.html b/doc/webserver/user-manual/seealso.html new file mode 100644 index 00000000..68b11dfb --- /dev/null +++ b/doc/webserver/user-manual/seealso.html @@ -0,0 +1,295 @@ +<HTML +><HEAD +><TITLE +>See Also</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="Copyright and History" +HREF="copyright.html"><LINK +REL="NEXT" +TITLE="Appendix" +HREF="appendix.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="copyright.html" +>Prev</A +></TD +><TD +WIDTH="80%" +ALIGN="center" +VALIGN="bottom" +></TD +><TD +WIDTH="10%" +ALIGN="right" +VALIGN="bottom" +><A +HREF="appendix.html" +>Next</A +></TD +></TR +></TABLE +><HR +ALIGN="LEFT" +WIDTH="100%"></DIV +><DIV +CLASS="SECT1" +><H1 +CLASS="SECT1" +><A +NAME="SEEALSO" +>8. 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" +><A +HREF="appendix.html" +>Next</A +></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" +>Appendix</TD +></TR +></TABLE +></DIV +></BODY +></HTML +> \ No newline at end of file