From 942ea3d5a7eb837752fa51f879b7a5a8b41676a8 Mon Sep 17 00:00:00 2001 From: hal9 Date: Wed, 19 Mar 2003 02:06:13 +0000 Subject: [PATCH] Regenerate docs for upcoming 3.0.1 release. --- doc/text/developer-manual.txt | 357 +++-- doc/text/faq.txt | 236 ++- doc/text/user-manual.txt | 549 ++++--- doc/webserver/developer-manual/coding.html | 192 ++- doc/webserver/developer-manual/contact.html | 24 +- doc/webserver/developer-manual/copyright.html | 12 +- doc/webserver/developer-manual/cvs.html | 191 ++- .../developer-manual/documentation.html | 18 +- doc/webserver/developer-manual/index.html | 26 +- .../developer-manual/introduction.html | 34 +- .../developer-manual/newrelease.html | 144 +- doc/webserver/developer-manual/seealso.html | 4 +- doc/webserver/developer-manual/testing.html | 12 +- .../developer-manual/webserver-update.html | 4 +- doc/webserver/faq/configuration.html | 628 ++++---- doc/webserver/faq/contact.html | 24 +- doc/webserver/faq/copyright.html | 12 +- doc/webserver/faq/general.html | 55 +- doc/webserver/faq/index.html | 115 +- doc/webserver/faq/installation.html | 72 +- doc/webserver/faq/misc.html | 137 +- doc/webserver/faq/trouble.html | 115 +- doc/webserver/man-page/privoxy-man-page.html | 18 +- doc/webserver/user-manual/actions-file.html | 1314 +++++++++++++---- doc/webserver/user-manual/appendix.html | 60 +- doc/webserver/user-manual/config.html | 238 ++- doc/webserver/user-manual/configuration.html | 22 +- doc/webserver/user-manual/contact.html | 28 +- doc/webserver/user-manual/copyright.html | 36 +- doc/webserver/user-manual/filter-file.html | 12 +- doc/webserver/user-manual/index.html | 34 +- doc/webserver/user-manual/installation.html | 359 ++++- doc/webserver/user-manual/introduction.html | 18 +- doc/webserver/user-manual/quickstart.html | 23 +- doc/webserver/user-manual/seealso.html | 8 +- doc/webserver/user-manual/startup.html | 77 +- doc/webserver/user-manual/templates.html | 8 +- doc/webserver/user-manual/upgradersnote.html | 8 +- 38 files changed, 3717 insertions(+), 1507 deletions(-) diff --git a/doc/text/developer-manual.txt b/doc/text/developer-manual.txt index 0eaee2ea..e0dc191e 100644 --- a/doc/text/developer-manual.txt +++ b/doc/text/developer-manual.txt @@ -2,7 +2,7 @@ Privoxy Developer Manual Copyright © 2001, 2002 by Privoxy Developers -$Id: developer-manual.sgml,v 1.46.2.8 2002/08/17 00:16:10 hal9 Exp $ +$Id: developer-manual.sgml,v 1.46.2.11 2002/12/11 13:12:15 hal9 Exp $ The developer manual provides guidance on coding, testing, packaging, documentation and other issues of importance to those involved with Privoxy @@ -10,7 +10,7 @@ development. It is mandatory (and helpful!) reading for anyone who wants to join the team. Please note that this document is constantly evolving. This copy represents the -state at the release of version 3.0.0. You can find the latest version of the +state at the release of version 3.0.1. You can find the latest version of the this manual at http://www.privoxy.org/developer-manual/. Please see the Contact section on how to contact the developers. @@ -24,8 +24,8 @@ Table of Contents 2. The CVS Repository 2.1. Access to CVS - 2.2. CVS Commit Guideline - 2.3. Discussing Changes First + 2.2. Branches + 2.3. CVS Commit Guidelines 3. Documentation Guidelines @@ -155,19 +155,27 @@ porting, are all important jobs as well. 1.1. Quickstart to Privoxy Development -You'll need an account on Sourceforge to support our development. Mail your ID -to the list and wait until a project manager has added you. +The first step is to join the developer's mailing list. You can submit your +ideas, or even better patches. Patches are best submitted to the Sourceforge +tracker set up for this purpose, but can be sent to the list for review too. -For the time being (read, this section is under construction), please refer to -the extensive comments in the source code. +You will also need to have a cvs package installed, which will entail having +ssh installed as well (which seems to be a requirement of SourceForge), in +order to access the cvs repository. Having the GNU build tools is also going to +be important (particularly, autoconf and gmake). + +For the time being (read, this section is under construction), you can also +refer to the extensive comments in the source code. In fact, reading the code +is recommended in any case. ------------------------------------------------------------------------------- 2. The CVS Repository -If you intend to help us with programming, documentation or packaging you will -need write access to our holy grail, the CVS repository. Please read this -chapter completely before accessing via CVS. +If you become part of the active development team, you will eventually need +write access to our holy grail, the CVS repository. One of the team members +will need to set this up for you. Please read this chapter completely before +accessing via CVS. ------------------------------------------------------------------------------- @@ -181,13 +189,43 @@ tree module is called current. ------------------------------------------------------------------------------- -2.2. CVS Commit Guideline +2.2. Branches + +Within the CVS repository, there are modules and branches. As mentioned, the +sources are in the current "module". Other modules are present for platform +specific issues. There is a webview of the CVS hierarchy at http:// +cvs.sourceforge.net/cgi-bin/viewcvs.cgi/ijbswa/, which might help with +visualizing how these pieces fit together. + +Branches are used to fork a sub-development path from the main trunk. Within +the current module where the sources are, there is always at least one "branch" +from the main trunk devoted to a stable release series. The main trunk is where +active development takes place for the next stable series (e.g. 3.2.x). So just +prior to each stable series (e.g. 3.0.x), a branch is created just for stable +series releases (e.g. 3.0.0 -> 3.0.1 -> 3.0.2, etc). Once the initial stable +release of any stable branch has taken place, this branch is only used for +bugfixes, which have had prior testing before being committed to CVS. (See +Version Numbers below for details on versioning.) + +This will result in at least two active branches, which means there may be +occasions that require the same (or similar) item to be checked into to two +different places (assuming its a bugfix and needs fixing in both the stable and +unstable trees). This also means that in order to have access to both trees, +both will have to be checked out separately. Use the cvs -r flag to check out a +branch, e.g: cvs co -r v_3_0_branch current. + +------------------------------------------------------------------------------- + +2.3. CVS Commit Guidelines The source tree is the heart of every software project. Every effort must be -made to ensure that it is readable, compilable and consistent at all times. We -therefore ask anyone with CVS access to strictly adhere to the following +made to ensure that it is readable, compilable and consistent at all times. +There are differing guidelines for the stable branch and the main development +trunk, and we ask anyone with CVS access to strictly adhere to the following guidelines: +Basic Guidelines, for all branches: + * Never (read: never, ever) be tempted to commit that small change without testing it thoroughly first. When we're close to a public release, ask a fellow developer to review your changes. @@ -205,33 +243,29 @@ guidelines: necessary, prepare the commit messages in advance. * Before changing things on CVS, make sure that your changes are in line with - the team's general consensus on what should be done (see below). + the team's general consensus on what should be done. - * Don't commit into the stable branch, unless immediately before a new - release. (See Version Numbers below for details.) Collect your changes on - the patches tracker instead. + * Note that near a major public release, we get more cautious. There is + always the possibility to submit a patch to the patch tracker instead. -------------------------------------------------------------------------------- - -2.3. Discussing Changes First - -We don't have a too formal policy on this, just use common sense. Hints: If it -is.. +Stable branches are handled with more care, especially after the initial *.*.0 +release, and we are just in bugfix mode. In addition to the above, the below +applies only to the stable branch (currently the v_3_0_branch branch): - 1. ..a bug-fix / clean-up / cosmetic thing: shoot + * Do not commit anything unless your proposed changes have been well tested + first, preferably by other members of the project, or have prior approval + of the project leaders or consensus of the devel list. - 2. ..a new feature that can be turned off: shoot + * Where possible, bugfixes and changes should be tested in the main + development trunk first. There may be occasions where this is not feasible, + though. - 3. ..a clear improvement w/o side effects on other parts of the code: shoot + * Alternately, proposed changes can be submitted as patches to the patch + tracker on Sourceforge first: http://sourceforge.net/tracker/?group_id= + 11118&atid=311118. Then ask for peer review. - 4. ..a matter of taste: ask the list + * Do not even think about anything except bugfixes. No new features! - 5. ..a major redesign of some part of the code: ask the list - -Note that near a major public release, we get a bit more cautious - if unsure, -it doesn't hurt to ask first. There is always the possibility to submit a patch -to the patches tracker instead. - ------------------------------------------------------------------------------- 3. Documentation Guidelines @@ -435,7 +469,7 @@ entities are listed below. See any of the main docs for examples. * Commonly used "internal entities": - p-version: the Privoxy version string, e.g. "3.0.0". + p-version: the Privoxy version string, e.g. "3.0.1". p-status: the project status, either "alpha", "beta", or "stable". p-not-stable: use to conditionally include text in "not stable" releases (e.g. "beta"). @@ -1389,49 +1423,49 @@ from the project). Example for file comments: -const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.46.2.8 2002/08/17 00:16:10 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; +const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.46.2.11 2002/12/11 13:12:15 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; Note: 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 @@ -1444,71 +1478,71 @@ can. Example for file header comments: -#ifndef _FILENAME_H -#define _FILENAME_H -#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.46.2.8 2002/08/17 00:16:10 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: -*/ +#ifndef _FILENAME_H +#define _FILENAME_H +#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.46.2.11 2002/12/11 13:12:15 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: +*/ Example for function comments: @@ -1606,8 +1640,8 @@ scp, ssh (ssh), gmake (GNU's version of make), autoconf, cvs. 6.1. Version numbers First you need to determine which version number the release will have. Privoxy -version numbers consist of three numbers, separated by dots, like in X.Y.Z, -where: +version numbers consist of three numbers, separated by dots, like in X.Y.Z +(e.g. 3.0.0), where: * X, the version major, is rarely ever changed. It is increased by one if turning a development branch into stable substantially changes the @@ -1637,6 +1671,33 @@ where: distinguished from released versions. The point version is reset to zero when the minor changes. + Stable branches work a little differently, since there should be little to + no development happening in such branches. Remember, only bugfixes, which + presumably should have had some testing before being committed. Stable + branches will then have their version reported as 0.0.0, during that period + between releases when changes are being added. This is to denote that this + code is not for release. Then as the release nears, the version is bumped + according: e.g. 3.0.1 -> 0.0.0 -> 3.0.2. + +In summary, the main CVS trunk is the development branch where new features are +being worked on for the next stable series. This should almost always be where +the most activity takes place. There is always at least one stable branch from +the trunk, e.g now it is 3.0, which is only used to release stable versions. +Once the initial *.0 release of the stable branch has been done, then as a +rule, only bugfixes that have had prior testing should be committed to the +stable branch. Once there are enough bugfixes to justify a new release, the +version of this branch is again incremented Example: 3.0.0 -> 3.0.1 -> 3.0.2, +etc are all stable releases from within the stable branch. 3.1.x is currently +the main trunk, and where work on 3.2.x is taking place. If any questions, +please post to the devel list before committing to a stable branch! + +Developers should remember too that if they commit a bugfix to the stable +branch, this will more than likely require a separate submission to the main +trunk, since these are separate development trees within CVS. If you are +working on both, then this would require at least two separate check outs (i.e +main trunk, and the stable release branch, which is v_3_0_branch at the +moment). + ------------------------------------------------------------------------------- 6.2. Before the Release: Freeze @@ -1925,13 +1986,13 @@ First, make sure that you have freshly exported the right version into an empty directory. (See "Building and releasing packages" above). Then add a log entry to debian/changelog, if it is not already there, for example by running: - debchange -v 3.0.0-stable-1 "New upstream version" + debchange -v 3.0.1-stable-1 "New upstream version" Then, run: dpkg-buildpackage -rfakeroot -us -uc -b -This will create ../privoxy_3.0.0-stable-1_i386.deb which can be uploaded. To +This will create ../privoxy_3.0.1-stable-1_i386.deb which can be uploaded. To upload the package to Sourceforge, simply issue make debian-upload @@ -2057,7 +2118,7 @@ Once this done go to http://sourceforge.net/project/admin/editpackages.php? group_id=11118, making sure you are logged in. Find your target platform in the second column, and click Add Release. You will then need to create a new release for your package, using the format of $VERSION ($CODE_STATUS), e.g. -3.0.0 (beta). +3.0.1 (beta). Now just follow the prompts. Be sure to add any appropriate Release notes. You should see your freshly uploaded packages in "Step 2. Add Files To This diff --git a/doc/text/faq.txt b/doc/text/faq.txt index 185b97a6..838132f4 100644 --- a/doc/text/faq.txt +++ b/doc/text/faq.txt @@ -2,7 +2,7 @@ Privoxy Frequently Asked Questions Copyright © 2001, 2002 by Privoxy Developers -$Id: faq.sgml,v 1.61.2.18 2002/08/14 16:39:37 hal9 Exp $ +$Id: faq.sgml,v 1.61.2.27 2002/12/01 06:31:58 hal9 Exp $ This FAQ gives quick answers to frequently asked questions about Privoxy. It can't and doesn't replace the User Manual. @@ -17,7 +17,7 @@ networks. Privoxy is based on Internet Junkbuster (tm). Please note that this document is constantly evolving. This copy represents the -state at the release of version 3.0.0. You can find the latest version of the +state at the release of version 0.0.0. You can find the latest version of the document at http://www.privoxy.org/faq/. Please see the Contact section if you want to contact the developers. @@ -45,10 +45,11 @@ Table of Contents 2.1. Which browsers are supported by Privoxy? 2.2. Which operating systems are supported? - 2.3. Can I install Privoxy over Junkbuster? - 2.4. I just installed Privoxy. Is there anything special I have to do now? - 2.5. What is the proxy address of Privoxy? - 2.6. I just installed Privoxy, and nothing is happening. All the ads are + 2.3. Can I use Privoxy with my email client? + 2.4. Can I install Privoxy over Junkbuster? + 2.5. I just installed Privoxy. Is there anything special I have to do now? + 2.6. What is the proxy address of Privoxy? + 2.7. I just installed Privoxy, and nothing is happening. All the ads are there. What's wrong? 3. Configuration @@ -61,7 +62,7 @@ Table of Contents 3.5. How are actions files configured? What is the easiest way to do this? 3.6. There are several different "actions" files. What are the differences? 3.7. How can I make my Yahoo/Hotmail/GMX account work? - 3.8. What's the difference between the "Cautious", "Medium" and "Advanced" + 3.8. What's the difference between the "Cautious", "Medium" and "Radical" defaults? 3.9. Why can I change the configuration with a browser? Does that not raise security issues? @@ -77,6 +78,9 @@ Table of Contents 3.17. Can I just set Privoxy to use port 80 and thus avoid individual browser configuration? 3.18. Can Privoxy run as a "transparent" proxy? + 3.19. How can I configure Privoxy for use with Outlook Express? + 3.20. How can I have separate rules just for HTML mail? + 3.21. How can I allow permanent cookies for my trusted sites? 4. Miscellaneous @@ -105,6 +109,8 @@ Table of Contents 4.17. Can Privoxy effect files that I download from a webserver? FTP server? 4.18. Where can I find more information about Privoxy and related issues? + 4.19. I've noticed that Privoxy changes "Microsoft" to "MicroSuck"! Why are + you manipulating my browsing? 5. Troubleshooting @@ -122,7 +128,8 @@ Table of Contents uninstall it. Now the finder tells me I don't have sufficient privileges to empty the trash. 5.8. I get a completely blank page at one site. "View Source" shows only: - . + . Without Privoxy the page loads fine. + 5.9. Why am I getting a 503 Error (WSAECONNREFUSED) on every page? 6. Contacting the developers, Bug Reporting and Feature Requests @@ -185,7 +192,7 @@ project itself, and they, in fact, still share our ideals and goals. 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. +their own right, especially now with the pending release of version 3.0. ------------------------------------------------------------------------------- @@ -375,8 +382,8 @@ protocol, just like a web server does. 2.2. Which operating systems are supported? At present, Privoxy is known to run on Windows(95, 98, ME, 2000, XP), Linux -(RedHat, SuSE, Debian, Conectiva, Gentoo), Mac OSX, OS/2, AmigaOS, BeOS, -FreeBSD, NetBSD, Solaris, and many more flavors of Unix. +(RedHat, SuSE, Debian, Conectiva, Gentoo, Slackware), Mac OSX, OS/2, AmigaOS, +BeOS, FreeBSD, NetBSD, OpenBSD, Solaris, and many more flavors of Unix. But any operating system that runs TCP/IP, can conceivably take advantage of Privoxy in a networked situation where Privoxy would run as a server on a LAN @@ -388,7 +395,22 @@ always a possibility. ------------------------------------------------------------------------------- -2.3. Can I install Privoxy over Junkbuster? +2.3. Can I use Privoxy with my email client? + +As long as there is some way to set a HTTP proxy for the client, then yes, any +application can be used, whether it is strictly speaking a "browser" or not. +Though this may not be the best approach for dealing with some of the common +abuses of HTML in email. See How can I configure Privoxy with Outlook Express? +below for more on this. + +Be aware that HTML email presents a number of unique security and privacy +related issues, that can require advanced skills to overcome. The developers +recommend using email clients that can be configured to convert HTML to plain +text for these reasons. + +------------------------------------------------------------------------------- + +2.4. Can I install Privoxy over Junkbuster? We recommend you un-install Junkbuster first to minimize conflicts and confusion. You may want to save your old configuration files for future @@ -400,16 +422,16 @@ Note: Some installers may automatically un-install Junkbuster, if present! ------------------------------------------------------------------------------- -2.4. I just installed Privoxy. Is there anything special I have to do now? +2.5. I just installed Privoxy. Is there anything special I have to do now? All browsers must be told to use Privoxy as a proxy by specifying the correct proxy address and port number in the appropriate configuration area for the browser. See below. You should also flush your browser's memory and disk cache -to get rid of any cached junk items. +to get rid of any cached junk items, and remove any stored cookies. ------------------------------------------------------------------------------- -2.5. What is the proxy address of Privoxy? +2.6. What is the proxy address of Privoxy? If you set up the Privoxy 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 @@ -433,7 +455,7 @@ other Internet protocols. ------------------------------------------------------------------------------- -2.6. I just installed Privoxy, and nothing is happening. All the ads are there. +2.7. I just installed Privoxy, and nothing is happening. All the ads are there. What's wrong? Did you configure your browser to use Privoxy as a proxy? It does not sound @@ -487,7 +509,7 @@ then applied to requests matching one or more patterns. There are many possible actions that might apply to any given site. As an example, if you are blocking cookies as one of your default actions, but need to accept cookies from a given site, you would need to define an exception for this site in one of your -actions files, preferably in user.action +actions files, preferably in user.action. ------------------------------------------------------------------------------- @@ -539,55 +561,22 @@ yahoo might look like: ------------------------------------------------------------------------------- -3.8. What's the difference between the "Cautious", "Medium" and "Advanced" +3.8. What's the difference between the "Cautious", "Medium" and "Radical" defaults? Configuring Privoxy is not entirely trivial. To help you get started, we -provide you with three different default action "packages" in the web based -actions file editor at http://config.privoxy.org/show-status. The following -table shows you, which of the most important features are enabled in each -configuration: - -Table 1. Default Configurations - -+-----------------------------------------------------------------------------+ -|Feature |Cautious |Intermadiate |Advanced | -|-------------------+------------------+-------------------+------------------| -|Ad-blocking by URL |yes |yes |yes | -|-------------------+------------------+-------------------+------------------| -|Ad-filtering by |yes |yes |yes | -|size | | | | -|-------------------+------------------+-------------------+------------------| -|GIF de-animation |no |yes |yes | -|-------------------+------------------+-------------------+------------------| -|Referer forging |no |yes |yes | -|-------------------+------------------+-------------------+------------------| -|Cookie handling |none |session-only |kill | -|-------------------+------------------+-------------------+------------------| -|Pop-up killing |no |yes |yes | -|-------------------+------------------+-------------------+------------------| -|Fast redirects |no |no |yes | -|-------------------+------------------+-------------------+------------------| -|HTML taming |yes |yes |yes | -|-------------------+------------------+-------------------+------------------| -|JavaScript taming |yes |yes |yes | -|-------------------+------------------+-------------------+------------------| -|Web-bug killing |yes |yes |yes | -|-------------------+------------------+-------------------+------------------| -|Fun text |no |no |yes | -|replacements | | | | -|-------------------+------------------+-------------------+------------------| -|Image tag |no |no |yes | -|reordering | | | | -|-------------------+------------------+-------------------+------------------| -|Ad-filtering by |no |no |yes | -|link | | | | -+-----------------------------------------------------------------------------+ +provide you with three different default action "profiles" in the web based +actions file editor at http://config.privoxy.org/show-status. See the User +Manual for a list of actions, and how the default profiles are set. Where the defaults are likely to break some sites, exceptions for known popular "problem" sites are included, but in general, the more aggressive your default -settings are, the more exceptions you will have to make later. See the user -manual for a more deatiled discussion. +settings are, the more exceptions you will have to make later. See the User +Manual for a more deatiled discussion. + +It should be noted that the "Radical" profile (formerly known as the "Advanced" +profile) is not only more aggressive, but also includes fun and, extreme usage +of most of Privoxy's features. Use at your own risk! ------------------------------------------------------------------------------- @@ -649,6 +638,16 @@ like: Save the file, and restart Privoxy. Configure all browsers on the network then to use this address and port number. +Alternately, you can have Privoxy listen on all available interfaces: + + listen-address :8118 + +And then use Privoxy's permit-access feature to limit connections. A firewall +in this situation is recommended as well. + +The above steps should be the same for any TCP network, regardless of operating +system. + If you run Privoxy on a LAN with untrusted users, we recommend that you double-check the access control and security options! @@ -705,13 +704,12 @@ will try to load the actual banner images and the usual image blocking will 3.15. Can Privoxy run as a service on Win2K/NT? -Yes, it can run as a system service using srvany.exe. The only catch is that -this will effectively disable the Privoxy icon (and its menu!) in the taskbar. -You can have one or the other, but not both at this time :( +Yes, it can run as a system service using srvany.exe. See the discussion at +http://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id= +11118, for details, and a sample configuration. -There is a pending feature request for this functionality. See the discussion -at http://sourceforge.net/tracker/?func=detail&atid=361118&aid=485617&group_id= -11118, for details, and a sample configuration. +Version 3.0.1 fixes the problem where the icon and menu where not available in +the taskbar for this usage. ------------------------------------------------------------------------------- @@ -743,6 +741,50 @@ used for chaining we recommend Transproxy (http://www.transproxy.nlc.net.au/). ------------------------------------------------------------------------------- +3.19. How can I configure Privoxy for use with Outlook Express? + +Outlook Express uses Internet Explorer components to both render HTML, and +fetch any HTTP requests that may be embedded in an HTML email. So however you +have Privoxy configured to work with IE, this configuration should +automatically be shared. + +------------------------------------------------------------------------------- + +3.20. How can I have separate rules just for HTML mail? + +The short answer is, you can't. Privoxy has no way of knowing which particular +application makes a request, so there is no way to distinguish between web +pages and HTML mail. Privoxy just blindly proxies all requests. In the case of +Outlook Express (see above), OE uses IE anyway, and there is no way for Privoxy +to ever be able to distinguish between them (nor could any other proxy type +application for that matter). + +For a good discussion of some of the issues involved (including privacy and +security issues), see http://sourceforge.net/tracker/?func=detail&atid=211118& +aid=629518&group_id=11118. + +------------------------------------------------------------------------------- + +3.21. How can I allow permanent cookies for my trusted sites? + +There are several actions that relate to cookies. The default behavior is to +allow only "session cookies", which means the cookies only last for the current +browser session. This eliminates most kinds of abuse related to cookies. But +there may be cases where we want cookies to last. + +To disable all cookie actions, so that cookies are allowed unrestricted, both +in and out, for example.com: + + { -crunch-incoming-cookies -crunch-outgoing-cookies -session-cookies-only -filter{content-cookies} } + .example.com + +Place the above in user.action. Note some of these may be off by default +anyway, so this might be redundant, but there is no harm being explicit in what +you want to happen. user.action includes an alias for this situation, called +allow-cookies. + +------------------------------------------------------------------------------- + 4. Miscellaneous 4.1. How much does Privoxy slow my browsing down? This has to add extra time to @@ -787,10 +829,11 @@ intercept requests for these addresses and answer them with its built-in "web server". This also makes for a good test for your browser configuration: If entering the -URL http://config.privoxy.org/ takes you to a page saying "This is Privoxy..", -everything is OK. If you get a page saying "Privoxy is not working" instead, -then your browser didn't use Privoxy for the request, hence it could not be -intercepted, and you have accessed the real web site at config.privoxy.org. +URL http://config.privoxy.org/ takes you to a page saying "This is Privoxy +...", everything is OK. If you get a page saying "Privoxy is not working" +instead, then your browser didn't use Privoxy for the request, hence it could +not be intercepted, and you have accessed the real web site at +config.privoxy.org. With recent versions of Privoxy (version 2.9.x and later), the user interface features information on the run time status, the configuration, and even a @@ -799,7 +842,7 @@ built-in editor for the actions files. Note that the built-in URLs from earlier versions of Junkbuster / Privoxy, http://example.com/show-proxy-args and http://i.j.b/, are no longer supported. If you still use such an old version, you should really consider upgrading to -3.0.0. +0.0.0. ------------------------------------------------------------------------------- @@ -836,7 +879,7 @@ can't even rule out that some of them only exist to *collect* information on You can find a list of anonymous public proxies at multiproxy.org and many more through Google. A particularly interesting project is the JAP service offered by the Technical University of Dresden (http://anon.inf.tu-dresden.de/ -index_en.html. +index_en.html). There is, however, even in the single-machine case the possibility to make the server believe that your machine is in fact a shared proxy serving a whole big @@ -955,6 +998,11 @@ banners to be placed in an encrypted page come unencrypted nonetheless for efficiency reasons, which exposes them to the full power of Privoxy's ad blocking. +"Content cookies" (those that are embedded in the actual HTML or JS page +content, see filter{content-cookies}), in an SSL transaction will be impossible +to block under these conditions. Fortunately, this does not seem to be a very +common scenario since most cookies come by traditional means. + ------------------------------------------------------------------------------- 4.13. Privoxy runs as a "server". How secure is it? Do I need to take any @@ -1062,6 +1110,17 @@ http://www.privoxy.org/developer-manual/, the Privoxy developer manual. ------------------------------------------------------------------------------- +4.19. I've noticed that Privoxy changes "Microsoft" to "MicroSuck"! Why are you +manipulating my browsing? + +We're not. The text substitutions that you are seeing are disabled in the +default configuration as shipped. You have either manually activated the "fun" +filter which is clearly labeled "Text replacements for subversive browsing fun! +" or you have implicitly activated it by choosing the "Radical" profile in the +web-based editor (formerly known as the Advanced profile). + +------------------------------------------------------------------------------- + 5. Troubleshooting 5.1. I just upgraded and am getting "connection refused" with every web page? @@ -1166,6 +1225,11 @@ Privoxy cannot act as a proxy for FTP traffic, so do not configure your browser to use Privoxy as an FTP proxy. The same is true for any protocol other than HTTP or HTTPS. +Most browsers understand FTP as well as HTTP. If you connect to a site, with a +URL like ftp://ftp.example.com, your browser is making an FTP connection, and +not a HTTP connection. So while your browser may speak FTP, Privoxy does not, +and cannot proxy such traffic. + ------------------------------------------------------------------------------- 5.6. In Mac OSX, I can't configure Microsoft Internet Explorer to use Privoxy @@ -1196,22 +1260,34 @@ desktop should make it appear empty again. ------------------------------------------------------------------------------- 5.8. I get a completely blank page at one site. "View Source" shows only: -. +. Without Privoxy the page loads fine. -This is often the result of a webserver using PHP that mishandles the request -Privoxy sends to not compress the content (a PHP bug). +Chances are that the site suffers from a bug in PHP, which results in empty +pages being sent if the client explicitly requests an uncompressed page, like +Privoxy does. This bug has been fixed in PHP 4.2.3. -In a default configuration, Privoxy requests all data be sent "uncompressed". -This is required for the page filtering and other magic to work. In some rare -cases, the browser and webserver miscommunicate and the result is a totally -blank page. The suggested work around is to selectively turn off this feature -for sites that exhibit such behavior. Example section for user.action: +To find out if this is in fact the source of the problem, try adding the site +to a -prevent-compression section in user.action: # Make exceptions for ill-behaved sites: # {-prevent-compression} .example.com +If that works, you may also want to report the problem to the site's +webmasters, telling them to use zlib.output_compression instead of ob_gzhandler +in their PHP applications (workaround) or upgrade to PHP 4.2.3 or later (fix). + +------------------------------------------------------------------------------- + +5.9. Why am I getting a 503 Error (WSAECONNREFUSED) on every page? + +More than likely this is a problem with the network stack. ZoneAlarm has been +reported to cause this symptom -- even if not running. The solution is to +either fight the ZA configuration, or uninstall ZoneAlarm, and then find +something better behaved in its place. Other firewall type products may cause +similar type problems if not configured correctly. + ------------------------------------------------------------------------------- 6. Contacting the developers, Bug Reporting and Feature Requests diff --git a/doc/text/user-manual.txt b/doc/text/user-manual.txt index cb60c2bb..424f53c7 100644 --- a/doc/text/user-manual.txt +++ b/doc/text/user-manual.txt @@ -1,8 +1,8 @@ -Privoxy 3.0.0 User Manual +Privoxy 3.0.1 User Manual Copyright © 2001, 2002 by Privoxy Developers -$Id: user-manual.sgml,v 1.123.2.18 2002/08/22 23:47:58 hal9 Exp $ +$Id: user-manual.sgml,v 1.123.2.27 2003/03/18 19:37:14 oes Exp $ The User Manual gives users information on how to install, configure and use Privoxy. @@ -179,7 +179,7 @@ Table of Contents 1. Introduction This documentation is included with the current stable version of Privoxy, -v.3.0.0. +v.3.0.1. ------------------------------------------------------------------------------- @@ -250,7 +250,7 @@ How to install the binary packages depends on your operating system: 2.1.1. Red Hat, SuSE and Conectiva RPMs -RPMs can be installed with rpm -Uvh privoxy-3.0.0-1.rpm, and will use /etc/ +RPMs can be installed with rpm -Uvh privoxy-3.0.1-1.rpm, and will use /etc/ privoxy for the location of configuration files. Note that on Red Hat, Privoxy will not be automatically started on system boot. @@ -258,7 +258,7 @@ You will need to enable that using chkconfig, ntsysv, or similar methods. Note that SuSE will automatically start Privoxy in the boot process. If you have problems with failed dependencies, try rebuilding the SRC RPM: rpm ---rebuild privoxy-3.0.0-1.src.rpm. This will use your locally installed +--rebuild privoxy-3.0.1-1.src.rpm. This will use your locally installed libraries and RPM version. Also note that if you have a Junkbuster RPM installed on your system, you need @@ -269,7 +269,7 @@ remove Junkbuster automatically, before installing Privoxy. 2.1.2. Debian -DEBs can be installed with dpkg -i privoxy_3.0.0-1.deb, and will use /etc/ +DEBs can be installed with dpkg -i privoxy_3.0.1-1.deb, and will use /etc/ privoxy for the location of configuration files. ------------------------------------------------------------------------------- @@ -343,7 +343,7 @@ latest changes from the Portage tree. With emerge privoxy you install the latest version. Configuration files are in /etc/privoxy, the documentation is in /usr/share/doc -/privoxy-3.0.0 and the Log directory is in /var/log/privoxy. +/privoxy-3.0.1 and the Log directory is in /var/log/privoxy. ------------------------------------------------------------------------------- @@ -362,8 +362,8 @@ compiler like gcc are required. When building from a source tarball (either release version or nightly CVS tarball), first unpack the source: - tar xzvf privoxy-3.0.0-src* [.tgz or .tar.gz] - cd privoxy-3.0.0 + tar xzvf privoxy-3.0.1-src* [.tgz or .tar.gz] + cd privoxy-3.0.1 For retrieving the current CVS sources, you'll need CVS installed. Note that sources from CVS are development quality, and may not be stable, or well @@ -376,7 +376,24 @@ tested. To download CVS source: This will create a directory named current/, which will contain the source tree. -Then, in either case, to build from unpacked tarball or CVS source: +You can also check out any Privoxy "branch", just exchange the current name +with the wanted branch name (Example: v_3_0_branch for the 3.0 cvs tree). + +It is also strongly recommended to not run Privoxy as root, and instead it is +suggested to create a "privoxy" user and group for this purpose. See your local +documentation for the correct command line to do this. + +/etc/passwd might then look like: + + privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell + +And then /etc/group, like: + + privoxy:*:7777: + +Some binary packages may do this for you. + +Then, to build from either unpacked tarball or CVS source: autoheader autoconf @@ -384,23 +401,65 @@ Then, in either case, to build from unpacked tarball or CVS source: 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) - -+-----------------------------------------------------------------------------+ -| Warning | -|-----------------------------------------------------------------------------| -|The "make install" target is temporary quite broken! It is recommended to use| -|a binary package, or do a source build, and manually install the components. | -|Sorry. | -+-----------------------------------------------------------------------------+ + make -s install # (to really install, -s to silence output) -If you have gnu make, you can have the first four steps automatically done for +If you have GNU make, you can have the first four steps automatically done for you by just typing: make in the freshly downloaded or unpacked source directory. +WARNING: If installing as root, the install will fail unless another user is +specified. configure accepts --with-user and --with-group options for setting +user and group ownership of the configuration files (which need to be writable +by the daemon). The specified user must already exist. Or if there is already a +privoxy user on the system, and no user was specified during configure, make +install then will use the privoxy user. When starting Privoxy, it should be run +as this same user that owns the configuration and log files. + +Alternately, you can specify user and group on the make command line, but be +sure both already exist: + + make -s install USER=privoxy GROUP=privoxy + +If no group is specified, the install will assume a group exists with the same +name as the specified user. + +The default installation path for make install is /usr/local. This may of +course be customized with the various ./configure path options. If you are +doing a root install to anywhere else besides /usr/local, be sure to set the +appropriate paths with the correct configure options (./configure --help). + +If you do install to /usr/local, the install will use sysconfdir=$prefix/etc/ +privoxy by default. All other destinations, and the direct usage of +--sysconfdir flag behave like normal, i.e. will not add the extra privoxy +directory. This is for a safer install, as there may already exist another +program that uses a file with the "config" name, and thus makes /usr/local/etc +cleaner. + +If installing to /usr/local, the docs will go by default to $prefix/share/doc. +But if this directory doesn't exist, it will then try $prefix/doc and install +there before creating a new $prefix/share/doc just for Privoxy. + +Again, if the installs goes to /usr/local, the localstatedir (ie: var/) will +default to /var instead of $prefix/var so the logs will go to /var/log/privoxy +/, and the pid file will be created in /var/run/privoxy.pid. + +make install will attempt to set the correct values in config (main +configuration file). You may want to check this to make sure all values are +correct. If appropriate, an init script will be installed, but it is up to the +user to determine how and where to start Privoxy. The init script should be +checked for correct paths and values, if anything other than a default install +is done. + +If install finds previous versions of any configuration files, these will not +be overwritten, and the new ones will be installed with a "new" extension. You +will then need to manually update the installed configuration files as needed. +All template files will be overwritten. If you have customized, local +templates, you should save these first. If a previous version of Privoxy is +already running, you will have to restart it manually. + For more detailed instructions on how to build Redhat and SuSE RPMs, Windows self-extracting installers, building on platforms with special requirements etc, please consult the developer manual. @@ -482,13 +541,14 @@ A quick list of things to be aware of before upgrading: * Start Privoxy, if the installation program has not done this already (may vary according to platform). See the section Starting Privoxy. - * Set your browser to use Privoxy as HTTP and HTTPS proxy by setting the - proxy configuration for address of 127.0.0.1 and port 8118. (Junkbuster and - earlier versions of Privoxy used port 8000.) See the section Starting + * Set your browser to use Privoxy as HTTP and HTTPS (SSL) proxy by setting + the proxy configuration for address of 127.0.0.1 and port 8118. (Junkbuster + and earlier versions of Privoxy used port 8000.) See the section Starting Privoxy below for more details on this. * Flush your browser's disk and memory caches, to remove any cached ad - images. + images. If using Privoxy to manage cookies, you should remove any currently + stored cookies too. * A default installation should provide a reasonable starting point for most. There will undoubtedly be occasions where you will want to adjust the @@ -807,6 +867,14 @@ Privoxy may be invoked with the following command-line options: included the GID of GROUP. Exit if the privileges are not sufficient to do so. Unix only. + * --chroot + + Before changing to the user ID given in the --user option, chroot to that + user's home directory, i.e. make the kernel pretend to the Privoxy process + that the directory tree starts there. If set up carefully, this can limit + the impact of possible vulnerabilities in Privoxy to the files contained in + that hierarchy. Unix only. + * configfile If no configfile is included on the command line, Privoxy will look for a @@ -1089,8 +1157,6 @@ Effect if unset: Notes: - The windows version will additionally log to the console. - The logfile is where all logging and error messages are written. The level of detail and number of messages are set with the debug option (see below). The logfile can be useful for tracking down a problem with Privoxy (e.g., @@ -1150,7 +1216,7 @@ Default value: Effect if unset: - The whole trust mechanism is turned off. + The entire trust mechanism is turned off. Notes: @@ -1158,15 +1224,27 @@ Notes: should be used with care. It is NOT recommended for the casual user. If you specify a trust file, Privoxy will only allow access to sites that - are named in the trustfile. You can also mark sites as trusted referrers - (with +), 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 "trustfile". Possible applications include limiting Internet - access for children. + are specified in the trustfile. Sites can be listed in one of two ways: + + Prepending a ~ character limits access to this site only (and any sub-paths + within this site), e.g. ~www.example.com. - If you use + operator in the trust file, it may grow considerably over + Or, you can designate sites as trusted referrers, by prepending the name + with a + character. The effect is that access to untrusted sites will be + granted -- but only if a link from this trusted referrer was used. The link + target will then be added to the "trustfile" so that future, direct + accesses will be granted. Sites added via this mechanism do not become + trusted referrers themselves (i.e. they are added with a ~ designation). + + If you use the + operator in the trust file, it may grow considerably over time. + It is recommended that Privoxy be compiled with the --disable-force, + --disable-toggle and --disable-editor options, if this feature is to be + used. + + Possible applications include limiting Internet access for children. + ------------------------------------------------------------------------------- 7.2. Local Set-up Documentation @@ -1208,11 +1286,19 @@ Notes: Unix, in local filesystem: - user-manual file:///usr/share/doc/privoxy-3.0.0/user-manual/ + user-manual file:///usr/share/doc/privoxy-3.0.1/user-manual/ + + Windows, in local filesystem, must use forward slash notation: + + user-manual file:/c:/some-dir/privoxy-3.0.1/user-manual/ + + Windows, UNC notation (with forward slashes): + + user-manual file://///some-server/some-path/privoxy-3.0.1/user-manual/ Any platform, on local webserver (called "local-webserver"): - user-manual http://local-webserver/privoxy-user-manual/ + user-manual http://local-webserver/privoxy-user-manual/ +-----------------------------------------------------------------+ | Warning | @@ -1907,8 +1993,8 @@ console. The actions files are used to define what actions Privoxy takes for which URLs, and thus determine how ad images, cookies and various other aspects of HTTP content and transactions are handled, and on which sites (or even parts -thereof). There are three such files included with Privoxy (as of version -2.9.15), with differing purposes: +thereof). There are three such files included with Privoxy with differing +purposes: * default.action - is the primary action file that sets the initial values for all actions. It is intended to provide a base level of functionality @@ -1927,9 +2013,51 @@ thereof). There are three such files included with Privoxy (as of version influence on your browsing unless you select them explicitly in the editor. It is not recommend to edit this file. + The default profiles, and their associated actions, as pre-defined in + standard.action are: + + Table 1. Default Configurations + + +-------------------------------------------------------------------------+ + |Feature |Cautious |Medium |Adventuresome | + |------------------+-----------------+-----------------+------------------| + |Ad-blocking by URL|yes |yes |yes | + |------------------+-----------------+-----------------+------------------| + |Ad-filtering by |yes |yes |yes | + |size | | | | + |------------------+-----------------+-----------------+------------------| + |GIF de-animation |no |yes |yes | + |------------------+-----------------+-----------------+------------------| + |Referer forging |no |yes |yes | + |------------------+-----------------+-----------------+------------------| + |Cookie handling |none |session-only |kill | + |------------------+-----------------+-----------------+------------------| + |Pop-up killing |unsolicited |unsolicited |all | + |------------------+-----------------+-----------------+------------------| + |Fast redirects |no |no |yes | + |------------------+-----------------+-----------------+------------------| + |HTML taming |yes |yes |yes | + |------------------+-----------------+-----------------+------------------| + |JavaScript taming |yes |yes |yes | + |------------------+-----------------+-----------------+------------------| + |Web-bug killing |yes |yes |yes | + |------------------+-----------------+-----------------+------------------| + |Fun text |no |no |yes | + |replacements | | | | + |------------------+-----------------+-----------------+------------------| + |Image tag |no |no |yes | + |reordering | | | | + |------------------+-----------------+-----------------+------------------| + |Ad-filtering by |no |no |yes | + |link | | | | + |------------------+-----------------+-----------------+------------------| + |Demoronizer |no |yes |yes | + +-------------------------------------------------------------------------+ + The list of actions files to be used are defined in the main configuration -file, and are processed in the order they are defined. The content of these can -all be viewed and edited from http://config.privoxy.org/show-status. +file, and are processed in the order they are defined (e.g. default.action is +typically process before user.action). The content of these can all be viewed +and edited from http://config.privoxy.org/show-status. An actions file typically has multiple sections. If you want to use "aliases" in an actions file, you have to place the (optional) alias section at the top @@ -1956,10 +2084,10 @@ some sites unusable that rely on these techniques to work properly. Finding the right mix of actions is not always easy and certainly a matter of personal taste. In general, it can be said that the more "aggressive" your default settings (in the top section of the actions file) are, the more exceptions for -"trusted" sites you will have to make later. If, for example, you want to kill -popup windows per default, you'll have to make exceptions from that rule for -sites that you regularly use and that require popups for actually useful -content, like maybe your bank, favorite shop, or newspaper. +"trusted" sites you will have to make later. If, for example, you want to +crunch all cookies per default, you'll have to make exceptions from that rule +for sites that you regularly use and that require cookies for actually useful +puposes, like maybe your bank, favorite shop, or newspaper. We have tried to provide you with reasonable rules to start from in the distribution actions files. But there is no general rule of thumb on these @@ -1975,7 +2103,9 @@ The easiest way to edit the actions files is with a browser by using our browser-based editor, which can be reached from http://config.privoxy.org/ show-status. The editor allows both fine-grained control over every single feature on a per-URL basis, and easy choosing from wholesale sets of defaults -like "Cautious", "Medium" or "Advanced". +like "Cautious", "Medium" or "Adventuresome". Warning: the "Adventuresome" +setting is not only more aggressive, but includes settings that are fun and +subversive, and which some may find of dubious merit! If you prefer plain text editing to GUIs, you can of course also directly edit the the actions files. Look at default.action which is richly commented. @@ -2009,8 +2139,16 @@ More detail on this is provided in the Appendix, Anatomy of an Action. 8.4. Patterns -Generally, a pattern has the form /, where both the and - are optional. (This is why the pattern / matches all URLs). +As mentioned, Privoxy uses "patterns" to determine what actions might apply to +which sites and pages your browser attempts to access. These "patterns" use +wild card type pattern matching to achieve a high degree of flexibility. This +allows one expression to be expanded and potentially match against many similar +patterns. + +Generally, a Privoxy pattern has the form /, where both the + and are optional. (This is why the special / pattern matches +all URLs). Note that the protocol portion of the URL pattern (e.g. http://) +should not be included in the pattern. This is assumed already! www.example.com/ @@ -2285,7 +2423,7 @@ Notes: It makes no sense at all to use this action in conjunction with the session-cookies-only action, since it would prevent the session cookies - from being set. + from being set. See also filter-content-cookies. Example usage: @@ -2481,7 +2619,11 @@ Notes: The amount of data that can be filtered is limited to the buffer-limit option in the main config file. The default is 4096 KB (4 Megs). Once this limit is exceeded, the buffered data, and all pending data, is passed - through unfiltered. Inappropriate MIME types are not filtered. + through unfiltered. + + Inappropriate MIME types, such as zipped files, are not filtered at all. + Encrypted SSL data (from HTTPS servers) cannot be filtered either since + this would violate the integrity of the secure transaction. At this time, Privoxy cannot (yet!) uncompress compressed documents. If you want filtering to work on all documents, even those that would normally be @@ -2498,35 +2640,45 @@ Notes: Example usage (with filters from the distribution default.filter file): - +filter{html-annoyances} # Get rid of particularly annoying HTML abuse. - +filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse - +filter{banners-by-size} # Kill banners based on their size for this page (very efficient!) + +filter{js-events} # Kill all JS event bindings (Radically destructive! Only for extra nasty sites) + + +filter{html-annoyances} # Get rid of particularly annoying HTML abuse + + +filter{content-cookies} # Kill cookies that come in the HTML or JS content + + +filter{refresh-tags} # Kill automatic refresh tags (for dial-on-demand setups) + + +filter{unsolicited-popups} # Disable only unsolicited pop-up windows - +filter{banners-by-link} # Kill banners based on the link they are contained in (experimental) + +filter{all-popups} # Kill all popups in JavaScript and HTML +filter{img-reorder} # Reorder attributes in tags to make the banners-by-* filters more effective - +filter{content-cookies} # Kill cookies that come sneaking in the HTML or JS content + +filter{banners-by-size} # Kill banners by size - +filter{popups} # Kill all popups in JS and HTML + +filter{banners-by-link} # Kill banners by their links to known clicktrackers +filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking) - +filter{fun} # Text replacements for subversive browsing fun! + +filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap - +filter{frameset-borders} # Give frames a border and make them resizeable + +filter{jumping-windows} # Prevent windows from resizing and moving themselves - +filter{refresh-tags} # Kill automatic refresh tags (for dial-on-demand setups) + +filter{frameset-borders} # Give frames a border and make them resizable - +filter{nimda} # Remove Nimda (virus) code. + +filter{demoronizer} # Fix MS's non-standard use of standard charsets +filter{shockwave-flash} # Kill embedded Shockwave Flash objects - +filter{crude-parental} # Kill all web pages that contain the words "sex" or "warez" + +filter{quicktime-kioskmode} # Make Quicktime movies saveable + + +filter{fun} # Text replacements for subversive browsing fun! - +filter{js-events} # Kill all JS event bindings (Radically destructive! Only for extra nasty sites) + +filter{crude-parental} # Crude parental filtering (demo only) + + +filter{ie-exploits} # Disable some known Internet Explorer bug exploits ------------------------------------------------------------------------------- @@ -2758,7 +2910,7 @@ Example usage: Typical use: - Eliminate those annoying pop-up windows + Eliminate those annoying pop-up windows (deprecated) Effect: @@ -2775,10 +2927,11 @@ Parameter: Notes: - This action is easily confused with the built-in, hardwired filter action, - but there are important differences: For kill-popups, the document need not - be buffered, so it can be incrementally rendered while downloading. But - kill-popups doesn't catch as many pop-ups as filter{popups} does. + This action is basically a built-in, hardwired special-purpose filter + action, but there are important differences: For kill-popups, the document + need not be buffered, so it can be incrementally rendered while + downloading. But kill-popups doesn't catch as many pop-ups as filter + {all-popups} does and is not as smart as filter{unsolicited-popups} is. Think of it as a fast and efficient replacement for a filter that you can use if you don't want any filtering at all. Note that it doesn't make sense @@ -2786,12 +2939,14 @@ Notes: the whole document needs to be buffered anyway, which destroys the advantage of the kill-popups action over its filter equivalent. - Killing all pop-ups is a dangerous business. Many shops and banks rely on - pop-ups to display forms, shopping carts etc, and killing only the unwanted - pop-ups would require artificial intelligence in Privoxy. If the only kind - of pop-ups that you want to kill are exit consoles (those really nasty - windows that appear when you close an other one), you might want to use - filter{js-annoyances} instead. + Killing all pop-ups unconditionally is problematic. Many shops and banks + rely on pop-ups to display forms, shopping carts etc, and the filter + {unsolicited-popups} does a fairly good job of catching only the unwanted + ones. + + If the only kind of pop-ups that you want to kill are exit consoles (those + really nasty windows that appear when you close an other one), you might + want to use filter{js-annoyances} instead. Example usage: @@ -3004,6 +3159,13 @@ Notes: "expires" field. If you use an exotic browser, you might want to try it out to be sure. + This setting also has no effect on cookies that may have been stored + previously by the browser before starting Privoxy. These would have to be + removed manually. + + Privoxy also uses the content-cookies filter to block some types of + cookies. Content cookies are not effected by session-cookies-only. + Example usage: +session-cookies-only @@ -3113,31 +3275,31 @@ Privoxy. Now let's define some aliases... - # Useful custom aliases we can use later. - # - # Note the (required!) section header line and that this section - # must be at the top of the actions file! - # - {{alias}} - - # These aliases just save typing later: - # (Note that some already use other aliases!) - # - +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies - -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies - block-as-image = +block +handle-as-image - mercy-for-cookies = -crunch-all-cookies -session-cookies-only - - # These aliases define combinations of actions - # that are useful for certain types of sites: - # - fragile = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups - shop = -crunch-all-cookies -filter{popups} -kill-popups - - # Short names for other aliases, for really lazy people ;-) - # - c0 = +crunch-all-cookies - c1 = -crunch-all-cookies + # Useful custom aliases we can use later. + # + # Note the (required!) section header line and that this section + # must be at the top of the actions file! + # + {{alias}} + + # These aliases just save typing later: + # (Note that some already use other aliases!) + # + +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies + -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies + block-as-image = +block +handle-as-image + mercy-for-cookies = -crunch-all-cookies -session-cookies-only -filter{content-cookies} + + # These aliases define combinations of actions + # that are useful for certain types of sites: + # + fragile = -block -filter -crunch-all-cookies -fast-redirects -hide-referrer -kill-popups + shop = -crunch-all-cookies -filter{all-popups} -kill-popups + + # Short names for other aliases, for really lazy people ;-) + # + c0 = +crunch-all-cookies + c1 = -crunch-all-cookies ...and put them to use. These sections would appear in the lower part of an actions file and define exceptions to the default actions (as specified further @@ -3161,7 +3323,7 @@ up for the "/" pattern): # These shops require pop-ups: # - {shop -kill-popups -filter{popups}} + {shop -kill-popups -filter{all-popups}} .dabs.com .overclockers.co.uk @@ -3199,24 +3361,24 @@ After that comes the (optional) alias section. We'll use the example section from the above chapter on aliases, that also explains why and how aliases are used: -########################################################################## -# Aliases -########################################################################## -{{alias}} - -# These aliases just save typing later: -# (Note that some already use other aliases!) -# -+crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies --crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies -block-as-image = +block +handle-as-image -mercy-for-cookies = -crunch-all-cookies -session-cookies-only - -# These aliases define combinations of actions -# that are useful for certain types of sites: -# -fragile = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups -shop = mercy-for-cookies -filter{popups} -kill-popups +########################################################################## +# Aliases +########################################################################## +{{alias}} + + # These aliases just save typing later: + # (Note that some already use other aliases!) + # + +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies + -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies + block-as-image = +block +handle-as-image + mercy-for-cookies = -crunch-all-cookies -session-cookies-only -filter{content-cookies} + + # These aliases define combinations of actions + # that are useful for certain types of sites: + # + fragile = -block -filter -crunch-all-cookies -fast-redirects -hide-referrer -kill-popups + shop = -crunch-all-cookies -filter{all-popups} -kill-popups Now come the regular sections, i.e. sets of actions, accompanied by URL patterns to which they apply. Remember all actions are disabled when matching @@ -3246,20 +3408,26 @@ made more readable by splitting it into multiple lines with line continuation. +deanimate-gifs \ -downgrade-http-version \ +fast-redirects \ - +filter{html-annoyances} \ +filter{js-annoyances} \ + -filter{js-events} \ + +filter{html-annoyances} \ -filter{content-cookies} \ - +filter{popups} \ - +filter{webbugs} \ - -filter{refresh-tags} \ - -filter{fun} \ - +filter{nimda} \ + +filter{refresh-tags} \ + +filter{unsolicited-popups} \ + -filter{all-popups} \ + +filter{img-reorder} \ +filter{banners-by-size} \ -filter{banners-by-link} \ - -filter{img-reorder} \ + +filter{webbugs} \ + -filter{tiny-textforms} \ + +filter{jumping-windows} \ + -filter{frameset-borders} \ + +filter{demoronizer} \ -filter{shockwave-flash} \ + -filter{quicktime-kioskmode} \ + -filter{fun} \ -filter{crude-parental} \ - -filter{js-events} \ + +filter{ie-exploits} \ -handle-as-image \ +hide-forwarded-for-headers \ +hide-from-header{block} \ @@ -3279,9 +3447,7 @@ The default behavior is now set. Note that some actions, like not hiding the user agent, are part of a "general policy" that applies universally and won't get any exceptions defined later. Other choices, like not blocking (which is understandably the default!) need exceptions, i.e. we need to specify -explicitly what we want to block in later sections. We will also want to make -exceptions from our general pop-up-killing, and use our defined aliases for -that. +explicitly what we want to block in later sections. The first of our specialized sections is concerned with "fragile" sites, i.e. sites that require minimum interference, because they are either very complex @@ -3311,21 +3477,6 @@ pre-defined alias: .jungle.com .scan.co.uk -Then, there are sites which rely on pop-up windows (yuck!) to work. Since we -made pop-up-killing our default above, we need to make exceptions now. Mozilla -users, who can turn on smart handling of unwanted pop-ups in their browsers, -can safely choose -filter{popups} (and -kill-popups) above and hence don't need -this section. Anyway, disabling an already disabled action doesn't hurt, so -we'll define our exceptions regardless of what was chosen in the defaults -section: - -# These sites require pop-ups too :( -# -{ -kill-popups -filter{popups} } -.dabs.com -.overclockers.co.uk -.deutsche-bank-24.de - The fast-redirects action, which we enabled per default above, breaks some sites. So disable it for popular sites where we know it misbehaves: @@ -3481,51 +3632,95 @@ user.action: As aliases are local to the actions file that they are defined in, you can't use the ones from default.action, unless you repeat them here: +# Aliases are local to the file they are defined in. # (Re-)define aliases for this file: # {{alias}} +# +# These aliases just save typing later, and the alias names should +# be self explanatory. +# ++crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies -mercy-for-cookies = -crunch-all-cookies -session-cookies-only + allow-all-cookies = -crunch-all-cookies -session-cookies-only + allow-popups = -filter{all-popups} -kill-popups ++block-as-image = +block +handle-as-image +-block-as-image = -block + +# These aliases define combinations of actions that are useful for +# certain types of sites: +# fragile = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -kill-popups -shop = mercy-for-cookies -filter{popups} -kill-popups -allow-ads = -block -filter{banners-by-size} # (see below) +shop = -crunch-all-cookies allow-popups + +# Allow ads for selected useful free sites: +# +allow-ads = -block -filter{banners-by-size} -filter{banners-by-link} Say you have accounts on some sites that you visit regularly, and you don't want to have to log in manually each time. So you'd like to allow persistent -cookies for these sites. The mercy-for-cookies alias defined above does exactly -that, i.e. it disables crunching of cookies in any direction, and processing of -cookies to make them temporary. +cookies for these sites. The allow-all-cookies alias defined above does exactly +that, i.e. it disables crunching of cookies in any direction, and the +processing of cookies to make them only temporary. -{ mercy-for-cookies } +{ allow-all-cookies } sunsolve.sun.com slashdot.org .yahoo.com .msdn.microsoft.com .redhat.com -Your bank needs popups and is allergic to some filter, but you don't know -which, so you disable them all: +Your bank is allergic to some filter, but you don't know which, so you disable +them all: -{ -filter -kill-popups } +{ -filter } .your-home-banking-site.com -While browsing the web with Privoxy you noticed some ads that sneaked through, -but you were too lazy to report them through our fine and easy feedback system, -so you have added them here: +Some file types you may not want to filter. Privoxy makes no distinctions +between regular web pages and downloads done via your web browser if it is an +html or text type document. -{ +block } -www.a-popular-site.com/some/unobvious/path -another.popular.site.net/more/junk/here/ +# A list of common file extensions that are likely to indicate raw text, and best +# if unfiltered. +/(.*/)?.*\.(pl|(s|p)?h|c(c|xx|pp)?|tcl|am|init?|cfg?|conf(ig)?|txt|rc|bat)$ + +# Documentation should not need filtering (at least on some sites). +.tldp.org -Note that, assuming the banners in the above example have regular image -extensions (most do), +handle-as-image need not be specified, since all URLs -ending in these extensions will already have been tagged as images in the -relevant section of default.action by now. +Example of a simple block action. Say you've seen an ad on your favourite page +on example.com that you want to get rid of. You have right-clicked the image, +selected "copy image location" and pasted the URL below while removing the +leading http://, into a { +block } section. Note that { +handle-as-image } need +not be specified, since all URLs ending in .gif will be tagged as images by the +general rules as set in default.action anyway: -Then you noticed that the default configuration breaks Forbes Magazine, but you +{ +block } +www.example.com/nasty-ads/sponsor.gif +another.popular.site.net/more/junk/here/ + +# Here we found one that is not in Privoxy's default blocked list: +.adfactory.net + +To force URLs that tend to have ad images, but it is difficult for Privoxy to +know this since the ultimate returned object is obscured for one reason or +another, we can try to force these to be treated as images (and thus avoid +Privoxy's "BLOCKED" banner page). Note that if what is returned by the server +turns out NOT to be an image, then your browser typically will display a broken +icon image. Use cautiously. + +{ +block-as-image } +# A shockwave ad, very annoying. +.trip.com/.*\.swf +.doubleclick.net +/Realmedia/ads/ +adremote. + +Now you noticed that the default configuration breaks Forbes Magazine, but you were too lazy to find out which action is the culprit, and you were again too lazy to give feedback, so you just used the fragile alias on the site, and -- -whoa! -- it worked: +whoa! -- it worked. The fragile aliases disables those actions that are most +likely to break a site. Also, good for testing purposes to see if it is Privoxy +that is causing the problem or not. { fragile } .forbes.com @@ -3543,7 +3738,7 @@ filters in default.action for things that really shouldn't be filtered, like code on CVS->Web interfaces. Since user.action has the last word, these exceptions won't be valid for the "fun" filtering specified here. -Finally, you might think about how your favourite free websites are funded, and +You might also worry about how your favourite free websites are funded, and find that they rely on displaying banner advertisements to survive. So you might want to specifically allow banners for those sites that you feel provide value to you: @@ -3553,7 +3748,17 @@ value to you: .slashdot.org .osdn.net -Note that allow-ads has been aliased to -block -filter{banners-by-size} above. +Note that allow-ads has been aliased to -block, -filter{banners-by-size}, and - +filter{banners-by-link} above. + +user.action is generally the best place to define exceptions and additions to +the default policies of default.action. Some actions are safe to have their +default policies set here though. So let's set a default policy to have a +"blank" image as opposed to the checkerboard pattern for ALL sites. "/" of +course matches all URL paths and patterns: + +{ +set-image-blocker{blank} } +/ # ALL sites ------------------------------------------------------------------------------- @@ -3948,18 +4153,23 @@ Current Project Developers: Current Project Contributors: + Johny Agotnes Rodrigo Barbosa (RPM specfiles) Moritz Barsnick Hal Burgiss (docs) + Mattes Dolak Karsten Hopp (Red Hat) Alexander Lazic + Daniel Leite Gábor Lipták - Guy + Andrew Lock (Win32) + Guy Laroche Haroon Rafique Roland Rosenfeld (Debian) Georg Sauthoff (Gentoo) David Schmidt (OS/2, Mac OSX ports) Joerg Strohmayer (Amiga) + Sviatoslav Sviridov Sarantis Paskalis Based in part on code originally developed by: @@ -3976,16 +4186,19 @@ suggestions. These include (in alphabetical order): Andrew J. Caines Clifford Caoile Michael T. Davis + Brian Dessent Peter E Aaron Hamid Magnus Holmgren - Daniel Leite + Don Libes Paul Lieverse + David Mediavilla + Oliver Stoeneberg Roberto Ragusa Maynard Riley Bart Schelstraete Darren Wiebe - jwz + Jamie Zawinski ------------------------------------------------------------------------------- diff --git a/doc/webserver/developer-manual/coding.html b/doc/webserver/developer-manual/coding.html index 2a2ad68a..d8c96f39 100644 --- a/doc/webserver/developer-manual/coding.html +++ b/doc/webserver/developer-manual/coding.html @@ -73,13 +73,17 @@ CLASS="SECT1" >

4. Coding Guidelines

4. Coding Guidelines

4.1. Introduction

4.1. Introduction

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 @@ -100,13 +104,17 @@ CLASS="SECT2" >

4.2. Using Comments

4.2. Using Comments

4.2.1. Comment, Comment, Comment

4.2.1. Comment, Comment, Comment

4.2.2. Use blocks for comments

4.2.2. Use blocks for comments

4.2.3. Keep Comments on their own line

4.2.3. Keep Comments on their own line

4.2.4. Comment each logical step

4.2.4. Comment each logical step

4.2.5. Comment All Functions Thoroughly

4.2.5. Comment All Functions Thoroughly

4.2.6. Comment at the end of braces if the +NAME="S8" +>4.2.6. Comment at the end of braces if the content is more than one screen length

4.3. Naming Conventions

4.3. Naming Conventions

4.3.1. Variable Names

4.3.1. Variable Names

4.3.2. Function Names

4.3.2. Function Names

4.3.3. Header file prototypes

4.3.3. Header file prototypes

4.3.4. Enumerations, and #defines

4.3.4. Enumerations, and #defines

4.3.5. Constants

4.3.5. Constants

4.4. Using Space

4.4. Using Space

4.4.1. Put braces on a line by themselves.

4.4.1. Put braces on a line by themselves.

4.4.2. ALL control statements should have a +NAME="S17" +>4.4.2. ALL control statements should have a block

4.4.3. Do not belabor/blow-up boolean +NAME="S18" +>4.4.3. Do not belabor/blow-up boolean expressions

4.4.4. Use white space freely because it is +NAME="S19" +>4.4.4. Use white space freely because it is free

4.4.5. Don't use white space around structure +NAME="S20" +>4.4.5. Don't use white space around structure operators

4.4.6. Make the last brace of a function stand +NAME="S21" +>4.4.6. Make the last brace of a function stand out

4.4.7. Use 3 character indentions

4.4.7. Use 3 character indentions

4.5. Initializing

4.5. Initializing

4.5.1. Initialize all variables

4.5.1. Initialize all variables

4.6. Functions

4.6. Functions

4.6.1. Name functions that return a boolean as a +NAME="S26" +>4.6.1. Name functions that return a boolean as a question.

4.6.2. Always specify a return type for a +NAME="S27" +>4.6.2. Always specify a return type for a function.

4.6.3. Minimize function calls when iterating by +NAME="S28" +>4.6.3. Minimize function calls when iterating by using variables

4.6.4. Pass and Return by Const Reference

4.6.4. Pass and Return by Const Reference

4.6.5. Pass and Return by Value

4.6.5. Pass and Return by Value

4.6.6. Names of include files

4.6.6. Names of include files

4.6.7. Provide multiple inclusion +NAME="S32" +>4.6.7. Provide multiple inclusion protection

4.6.8. Use `extern "C"` when appropriate

4.6.8. Use `extern "C"` when appropriate

4.6.9. Where Possible, Use Forward Struct +NAME="S34" +>4.6.9. Where Possible, Use Forward Struct Declaration Instead of Includes

4.7. General Coding Practices

4.7. General Coding Practices

4.7.1. Turn on warnings

4.7.1. Turn on warnings

4.7.2. Provide a default case for all switch +NAME="S37" +>4.7.2. Provide a default case for all switch statements

4.7.3. Try to avoid falling through cases in a +NAME="S38" +>4.7.3. Try to avoid falling through cases in a switch statement.

4.7.4. Use 'long' or 'short' Instead of +NAME="S39" +>4.7.4. Use 'long' or 'short' Instead of 'int'

4.7.5. Don't mix size_t and other types

4.7.5. Don't mix size_t and other types

4.7.6. Declare each variable and struct on its +NAME="S41" +>4.7.6. Declare each variable and struct on its own line.

4.7.7. Use malloc/zalloc sparingly

4.7.7. Use malloc/zalloc sparingly

4.7.8. The Programmer Who Uses 'malloc' is +NAME="S43" +>4.7.8. The Programmer Who Uses 'malloc' is Responsible for Ensuring 'free'

4.7.9. Add loaders to the `file_list' structure +NAME="S44" +>4.7.9. Add loaders to the `file_list' structure and in order

4.7.10. "Uncertain" new code and/or changes to +NAME="S45" +>4.7.10. "Uncertain" new code and/or changes to existing code, use FIXME

4.8. Addendum: Template for files and function +NAME="S46" +>4.8. Addendum: Template for files and function comment blocks:

const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.46.2.8 2002/08/17 00:16:10 hal9 Exp $";
+>const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.46.2.11 2002/12/11 13:12:15 hal9 Exp $";
 /*********************************************************************
  *
  * File        :  $Source$
@@ -2327,7 +2421,7 @@ WIDTH="100%"
 CLASS="PROGRAMLISTING"
 >#ifndef _FILENAME_H
 #define _FILENAME_H
-#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.46.2.8 2002/08/17 00:16:10 hal9 Exp $"
+#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.46.2.11 2002/12/11 13:12:15 hal9 Exp $"
 /*********************************************************************
  *
  * File        :  $Source$
diff --git a/doc/webserver/developer-manual/contact.html b/doc/webserver/developer-manual/contact.html
index 73659918..917de051 100644
--- a/doc/webserver/developer-manual/contact.html
+++ b/doc/webserver/developer-manual/contact.html
@@ -73,7 +73,9 @@ CLASS="SECT1"
 >

8. Contacting the developers, Bug Reporting and Feature Requests

8. Contacting the developers, Bug Reporting and Feature Requests

We value your feedback. In fact, we rely on it to improve

8.1. Get Support

8.1. Get Support

For casual users, our support forum at

8.2. Report Bugs

8.2. Report Bugs

Please report all bugs

8.3. Request New Features

8.3. Request New Features

You are welcome to submit ideas on new features or other proposals for improvement through our feature request tracker at @@ -192,7 +200,9 @@ CLASS="SECT2" >

8.4. Report Ads or Other Actions-Related Problems

8.4. Report Ads or Other Actions-Related Problems

Please send feedback on ads that slipped through, innocent images that were blocked, and any other problems relating to the

8.5. Other

8.5. Other

For any other issues, feel free to use the mailing lists. Technically interested users and people who wish to contribute to the project are also welcome on the developers list! diff --git a/doc/webserver/developer-manual/copyright.html b/doc/webserver/developer-manual/copyright.html index f541d2ea..d1cd3870 100644 --- a/doc/webserver/developer-manual/copyright.html +++ b/doc/webserver/developer-manual/copyright.html @@ -73,7 +73,9 @@ CLASS="SECT1" >

9. Privoxy Copyright, License and History

9. Privoxy Copyright, License and History

Copyright © 2001, 2002 by Privoxy Developers